首页 文章

如何在MATLAB中解决ODE?

提问于
浏览
0

我的教授 . 在做ODE时做了两个代码

function xdot= code(t,x);
A=[-.5 0; 1 0];
B=[1 ; 0];
K=[1.5 1];
U=-K*x;
xdot=A*x+B*U; `

第二个是

[t,x]=ode23('code',[0 10],[1 1 ]');
figure(1);
plot(t,x);
grid

我不确定他为什么这样做?这就是我想要做的 . 这似乎给了很多错误 .

function xdot= code3(t,x)
A=[-.5 0; 1 0];
B=[1 ; 0];
K=[1.5 1];
tspan=[0 10];
y0=[1 1];
U=-K*x;
[t,x]=ode23(@(t,x),U=-K*x;,tspan,y0);
xdot=A*x+B*U;

figure(1);
plot(t,x);
grid

code3错误:文件:code3.m行:8列:19表达式或语句不正确 - 可能不 balancer (,{,或[ .

这段代码中提到的是形成一个开环 . A B 是变量 K 被计算,模型是 U . 两个代码在单独的脚本文件中,第二个代码运行时,输出是所需的 . 我试图合并两个脚本文件,我真的无法得到它 . 另外,我不知道代码是如何工作的?

1 回答

  • 0

    如果运行脚本文件,则如果脚本文件是函数声明,则调用脚本文件的第一行,并且通常不带参数 .

    在您的情况下,您可以通过以相反的顺序排列两个代码片段来避免这种情况,首先是主例程,然后是函数声明 . 加载后,首先解析脚本中的函数声明 . 因此,将以下内容放在一个文件中应该有效(请报告错误消息,如果有的话)

    [t,x]=ode23(@code,[0 10],[1 1 ]');
    figure(1);
    plot(t,x);
    grid
    
    function xdot= code(t,x);
      A=[-.5 0; 1 0];
      B=[1 ; 0];
      K=[1.5 1];
      U=-K*x;
      xdot=A*x+B*U; `
    end
    

相关问题