24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1008  |  回复: 0

工人阶级525

新虫 (初入文坛)

[求助] 用ode45求解矩阵微分方程,出现如下问题,求助各位大神,感激不尽

m文件如下:
clc;clear;
M=diag([1,2,3]);
K=[9,-4,0;-5,11,-6;0,-6,13];
C=diag([1,4,7]);
dx = @(t,x)[x(4:6); inv(M)*(-K*x(1:3)-C*x(4:6)+[sin(t);0;0])];
x0 = zeros(6,1);
[t,x]=ode45(dx,[0 10],x0);
这样写可以运行。
但是如果将变量t写在前面:
clc;clear;
syms t
M=diag([1,2,3]);
K=[9,-4,0;-5,11,-6;0,-6,13];
C=diag([1,4,7]);
F=[sin(t);0;0];
dx = @(t,x)[x(4:6); inv(M)*(-K*x(1:3)-C*x(4:6)+F)];
x0 = zeros(6,1);
[t,x]=ode45(dx,[0 10],x0);
就会报错:
Error using odearguments (line 111)
Inputs must be floats, namely single or double.

Error in ode45 (line 114)
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...

Error in Untitled4 (line 9)
[t,x]=ode45(dx,[0 10],x0);
>>
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

找到一些相关的精华帖子,希望有用哦~

科研从小木虫开始,人人为我,我为人人
相关版块跳转 我要订阅楼主 工人阶级525 的主题更新
信息提示
请填处理意见