[問題] 二階微分方程程式碼已回收

看板MATLAB作者 (貓與鋼琴)時間14年前 (2010/03/22 03:25), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
這是我在網路上看到的程式碼 將二階微分方程用矩陣寫入,這例子應該是解三條聯立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)
文章代碼(AID): #1BfdB3xh (MATLAB)