作业帮 > 数学 > 作业

matlab解矩阵微分方程

来源:学生作业帮 编辑:百度作业网作业帮 分类:数学作业 时间:2024/06/11 00:43:30
matlab解矩阵微分方程
下式中,m1、m2、m3、c1、c2、c3和Qy都是已知量,怎么利用matlab求解y1、y2和y3关于时间
变化?
matlab解矩阵微分方程
参考代码:
% 参数定义
m1 = 1; m2 = 2; m3 = 3;
k1 = 4; k2 = 5; k3 = 6;
c1 = 7; c2 = 8; c3 = 9;
Qy = 10;
% 微分方程
K = [k1 -k1 0; -k1 k1+k2 -k2; 0 -k2 k2+k3];
C = [c1 -c1 0; -c1 c1+c2 -c2; 0 -c2 c2+c3]
dy = @(t,y)[y(4:6); (-K*y(1:3)-C*y(4:6)+[Qy;0;0])./[m1;m2;m3]];
% 初始条件(y4~y6 为 y1'~y3')
y0 = zeros(6,1);
% 直接绘图
[t,y] = ode45(dy,[0 15],y0);
plot(t,y(:,1:3));
lstr = arrayfun(@(i){sprintf('y%i',i)},1:3);
legend(lstr{:})
legend(lstr{:},'Location','S','Orientation','horizontal')
 

再问: dy = @(t,y)[y(4:6); (-K*y(1:3)-C*y(4:6)+[Qy;0;0])./[m1;m2;m3]]; 这句怎么意思呢?
再答: 1、从作用说,这句定义了微分方程组(由6个一阶微分方程组成),以便后续用ode求解器求解; 2、从编程的角度说,这里使用了匿名函数(Anonymous Function),如果对匿名函数不熟悉,请自行查阅相关资料,网上有很多。
再问: 您有邮箱或者qq么?还有点问题想咨询您一下,多谢了
再答: 我不挂Q,私人邮箱也不方便在这里公开。 有问题还是请追问吧。
再问: 那怎么在这个代码中定义步长呢?比如步长为0.001
再答: 改成: [t,y] = ode45(dy,0:0.001:15,y0);