Re: [問題] 聯立微分方程式

看板MATLAB作者 (外派越南工作者)時間11年前 (2013/11/04 21:02), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《h062471033 (Branco)》之銘言: : 各位版上的高手,我在解聯立微分方程式, : 但是解完的結果是NaN,不知道哪邊出問題, : 是程式碼有問題?還是推導降階有誤?還是方程式本身無解? 謝謝! : % {x''+x'+x=-y+c c是常數項,x(t) y(t) 前面的係數忽略 : % {y''+y'+y=-x : % y(1)=x => dydt(1)= x' = y(2) : % y(2)=x' => dydt(2)= x'' = -x'-x-y+c = -y(2)-y(1)-y(3)+c : % y(3)=y => dydt(3)= y' = y(4) : % y(4)=y' => dydt(4)= y'' = -y'-y-x = -y(4)-y(3)-y(1) : function dydt=beamdisp(t,y) : a=11988; : b=2.198; : c=115972 : d=12078; : e=10.99; : f=6441; : cc=32.62; : dydt(1) = y(2); : dydt(2) = -a.*y(1)-b.*y(2)-c.*y(3)+cc; : dydt(3) = y(4); : dydt(4) = -d.*y(3)-e.*y(4)-f.*y(1); : dydt = dydt'; : (command window) : [t,y]=ode45(@beamdisp,[0 1],[0 0 0 0]) : y1=y(:,1); : plot(t,y1,'r') 應該是對的了 ------------------------------------------------ function pttex133 % {x''+x'+x=-y+c c是常數項,x(t) y(t) 前面的係數忽略 % {y''+y'+y=-x % x(1)=x => dydt(1)= x' = x(2) % x(2)=x' => dydt(2)= x'' = -x'-x-y+c = -x(2)-x(1)-x(3)+c % x(3)=y => dydt(3)= y' = x(4) % y(4)=y' => dydt(4)= y'' = -y'-y-x = -x(4)-x(3)-x(1) clc [t x] = ode45(@beamdisp,[0 1],[0;0;0;0]); plot(t,x) legend('x','x''','y','y''') title('beamdisp') xlabel('t (0~1)') ylabel('value') grid function dydt=beamdisp(t,x) a=11988; b=2.198; c=115972; d=12078; e=10.99; f=6441; cc=32.62; dydt(1) = x(2); dydt(2) = -a.*x(2)-b.*x(1)-c.*x(3)+cc; dydt(3) = x(4); dydt(4) = -d.*x(4)-e.*x(3)-f.*x(1); dydt = dydt'; --------------------------------------------- 你先看看有沒有問題,應該是你微分方程式程式碼 裡面的元素碼打錯導致解不出來 -- 1.MATLAB programming 2.ASPEN process simulation package 3.FORTRN programming 4.Advance Engineering Mathematics 5.Process Control Theory 6.Chemical Engineering Basic Theory(Kinetic.thermodynamics.transport) 7.Numerical Method and Analysis 8.MATLAB Toolbox.Simulink system basic design -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 113.186.203.69
文章代碼(AID): #1ITvhDDi (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1ITvhDDi (MATLAB)