Re: [問題] 聯立微分方程式
※ 引述《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
討論串 (同標題文章)
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章