大神求解动力学微分方程,用matlab中ode45编程实现!谢谢

其中的参数可以随便设置,谢谢!... 其中的参数可以随便设置,谢谢! 展开
匿名用户
2014-03-06
展开全部

参考代码:

 

% 参数定义
m1 = 1; m2 = 2; m3 = 3;
k1 = 4; k2 = 5; k3 = 6; k4 = 7;
P0 = 8; w = 9;

% 微分方程
A = [k1+k2 -k1 0; -k2 k2+k3 -k3; 0 -k3 k3+k4];
dx = @(t,x)[x(4:6); (-A*x(1:3)+[P0*sin(w*t);0;0])./[m1;m2;m3]];

% 初始条件(x4~x6 为 x1'~x3')
x0 = zeros(6,1);

% 求解,直接绘图
ode45(dx,[0 5],x0)
lstr = arrayfun(@(i){sprintf('x%i',i)},1:6);
legend(lstr{:})
legend(lstr{:},'Location','S','Orientation','horizontal')

 

更多追问追答
追问

在微分方程中加入一个阻尼矩阵怎么编程,还有程序里的@是什么意思,主要是matlab都不会。。。。

追答

程序中的@ 表示匿名函数(anonymous function)。关于匿名函数的更多信息,请自行搜索相关介绍。

 

要想加入阻尼,除了定义常数C1-C3,另外需要修改一下匿名函数dx:

 

% 参数定义
m1 = 1; m2 = 2; m3 = 3;
k1 = 4; k2 = 5; k3 = 6; k4 = 7;
P0 = 8; w = 9;
C1 = 1; C2 = 2; C3 =3;

% 微分方程
A = [k1+k2 -k1 0; -k2 k2+k3 -k3; 0 -k3 k3+k4];
dx = @(t,x)[x(4:6); (-A*x(1:3)-x(4:6)./[C1;C2;C3]+[P0*sin(w*t);0;0])./[m1;m2;m3]];

% 初始条件(x4~x6 为 x1'~x3')
x0 = zeros(6,1);

% 求解,直接绘图
ode45(dx,[0 5],x0)
lstr = arrayfun(@(i){sprintf('x%i',i)},1:6);
legend(lstr{:})
legend(lstr{:},'Location','S','Orientation','horizontal')

 

富港检测技术(东莞)有限公司_
2024-04-02 广告
正弦振动多用于找出产品设计或包装设计的脆弱点。看在哪一个具体频率点响应最大(共振点);正弦振动在任一瞬间只包含一种频率的振动,而随机振动在任一瞬间包含频谱范围内的各种频率的振动。由于随机振动包含频谱内所有的频率,所以样品上的共振点会同时激发... 点击进入详情页
本回答由富港检测技术(东莞)有限公司_提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式