0

我一直在尝试使用dsolveMatlab 中的命令来解决一组 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');

有人可以帮我吗?

非常感谢大家

4

1 回答 1

0

引用dsolve文档

微分方程中使用的符号变量的名称不应包含字母D,因为dsolve假定这D是一个微分算子,并且紧随其后的任何字符D都是因变量。

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

y要解决此问题,请在外部定义导数 adsolve并将其分配给不带 的变量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');

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

于 2016-04-04T23:03:14.697 回答