[問題] 二階微分方程程式碼已回收
這是我在網路上看到的程式碼
將二階微分方程用矩陣寫入,這例子應該是解三條聯立ODE
clear all
n=3;
F=[25;24;20];
m1=31.2;
m2=31.2;
m3=31.2;
k1=67.51;
k2=67.51;
k3=67.51;
c1=0.01;
c2=0.01;
c3=0.01;
M=[m1,0,0;0,m2,0;0,0,m3];
B=[c1+c2,-c2,0;-c2,c2+c3,-c3;0,-c3,c3];
K=[k1+k2,-k2,0;-k2,k2+k3,-k3;0,-k3,k3];
DL=inline('[x(n+1:end,1); inv(M)*(F-B*x(1:n,1)-K*x(1:n,1))]',...
't','x','flag','n','M','K','F','B');
options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);
[t,x]=ode45(DL,[0,3],rand(n,1),options,n,M,K,F,B);
plot(t,x(:,1:n))
%%%==========================================%%%
想請問高手們!
我自己試著把n改成n=2,也就是解兩條二階聯立ODE
所以參數也跟著調整
M=[m1,0;0,m2];
B=[c1+c2,-c2;-c2,c2+c3];
K=[k1+k2,-k2;-k2,k2+k3];
F=[25;24]
不過不能run ,原程式是可以run的
請問我有那邊還需要更改的嗎? 謝謝!!
還有請問這一行 [t,x]=ode45(DL,[0,3],rand(n,1),options,n,M,K,F,B);
rand(n,1) 這指令不是均勻亂數嗎,不過在ode45指令來說這邊不是要填初始條件?
謝謝!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.13.191
※ 編輯: inoran54787 來自: 122.116.13.191 (03/22 03:28)
※ 編輯: inoran54787 來自: 122.116.13.191 (03/22 04:07)