我一直在尝试在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');
有人可以帮助我吗?
非常感谢你
答案 0 :(得分:0)
微分方程中使用的符号变量的名称不应包含字母
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');
此版本的代码为我运行...并运行并运行。虽然它确实运行,但我认为需要定义更多的常量才能生成答案。