使用dsolve解决ODE的符号系统时出错

时间:2016-04-04 22:02:17

标签: matlab ode state-space

我一直在尝试在Matlab中使用命令dsolve来解决一组ODE,但我收到了这些错误:

  

dsolve中的错误> mupadDsolve(第332行)   T = feval(symengine,'symobj :: dsolve',sys,x,options);

     

dsolve中的错误(第193行)   sol = mupadDsolve(args,options);

以下是有人想看一下的代码:

syms t b1 b2 k1 k2;
A=0.5;
m1=3;m2=4;w=6;
y=A*sin(w*t);
xt=dsolve('m1*D2x1+b1*((Dx1)-Dy)+k1*(x1-y)+b2*((Dx1)-(Dx2))+k2*(x1-x2)=0','m2*D2x2+b2*((Dx2)-(Dx1))+k2*(x2-   x1)=0','x1(0)=0','Dx1(0)=0','x2(0)=0','Dx2(0)=0');

有人可以帮助我吗?

非常感谢你

1 个答案:

答案 0 :(得分:0)

引用dsolve documentation

  

微分方程中使用的符号变量的名称不应包含字母D,因为dsolve假定D是微分运算符,紧跟D之后的任何字符都是因变量。

因此,参数字符串中的Dy告诉dsolve有一些未知的函数y要解决但没有初始条件(除了它是一个不确定的系统)。

要解决此问题,请在y之外定义导数dsolve,并将其分配给不带D的变量:

syms t b1 b2 k1 k2;
A=0.5;
m1=3;m2=4;w=6;
y=A*sin(w*t);
dydt = diff(y,1);
xt=dsolve('m1*D2x1+b1*((Dx1)-dydt)+k1*(x1-y)+b2*((Dx1)-(Dx2))+k2*(x1-x2)=0','m2*D2x2+b2*((Dx2)-(Dx1))+k2*(x2-x1)=0','x1(0)=0','Dx1(0)=0','x2(0)=0','Dx2(0)=0');

此版本的代码为我运行...并运行并运行。虽然它确实运行,但我认为需要定义更多的常量才能生成答案。