matlab解矩阵微分方程下式中,m1、m2、m3、c1、c2、c3和Qy都是已知量,怎么利用matlab求解y1、y2和y3关于时间变化?

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 09:19:34
matlab解矩阵微分方程下式中,m1、m2、m3、c1、c2、c3和Qy都是已知量,怎么利用matlab求解y1、y2和y3关于时间变化?

matlab解矩阵微分方程下式中,m1、m2、m3、c1、c2、c3和Qy都是已知量,怎么利用matlab求解y1、y2和y3关于时间变化?
matlab解矩阵微分方程
下式中,m1、m2、m3、c1、c2、c3和Qy都是已知量,怎么利用matlab求解y1、y2和y3关于时间
变化?

matlab解矩阵微分方程下式中,m1、m2、m3、c1、c2、c3和Qy都是已知量,怎么利用matlab求解y1、y2和y3关于时间变化?
参考代码:
% 参数定义
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')
 

忘光了,全还给老师了