Question about using ODE45 solver, can anybody find where I am doing wrong
이전 댓글 표시
Looking at following series of ODE equations.
function du=tony(t,u)
du=zeros(10,1);
dx=0.500000;
dz=0.625000;
ta=300.000000;
sx=4.666290;
sz=2.986426;
hs=0.000250;
du(1)=sx*(((ta-u(1))*hs*dx)+(u(2)-u(1)))+sz*(((ta-u(1))*hs*dz)+(u(6)-u(1)));
du(2)=sx*((u(1)-u(2))+(u(3)-u(2)))+sz*(((ta-u(2))*hs*dz)+(u(7)-u(2)));
du(3)=sx*((u(2)-u(3))+(u(4)-u(3)))+sz*(((ta-u(3))*hs*dz)+(u(8)-u(3)));
du(4)=sx*((u(3)-u(4))+(u(5)-u(4)))+sz*(((ta-u(4))*hs*dz)+(u(9)-u(4)));
du(5)=sx*((u(4)-u(5))+((ta-u(5))*hs*dx))+sz*(((ta-u(5))*hs*dz)+(u(10)-u(5)));
du(6)=sx*(((ta-u(6))*hs*dx)+(u(7)-u(6)))+sz*((u(1)-u(6))+((ta-u(6))*hs*dz));
du(7)=sx*((u(6)-u(7))+(u(8)-u(7)))+sz*((u(2)-u(7))+((ta-u(7))*hs*dz));
du(8)=sx*((u(7)-u(8))+(u(9)-u(8)))+sz*((u(3)-u(8))+((ta-u(8))*hs*dz));
du(9)=sx*((u(8)-u(9))+(u(10)-u(9)))+sz*((u(4)-u(9))+((ta-u(9))*hs*dz));
du(10)=sx*((u(9)-u(10))+((ta-u(10))*hs*dx))+sz*((u(5)-u(10))+((ta-u(10))*hs*dz));
These equations can be solved by ode45 solver. However, although I followed the ode45 documentation, the results are not what I expected.
The problem is that: in the command window, I input:
[t,u]=ode45(@tony,[0 0.007],300+zeros(10,1))%initial values are all 300.
The values of u are surprisingly all 300. It is really strange.
Can anyone explain it to me please? And please tell me how I can modify the code?
Thanks,
Tony
댓글 수: 4
Matt Kindig
2013년 7월 31일
Hint: you want to use an ode solver in Matlab. Look at the documentation for ode45 or similar
doc ode45
As it turns out, you basically already have the equations in the required form for the solver, to calculating the transient solution should be fairly straightforward.
Tony
2013년 7월 31일
Matt Kindig
2013년 8월 1일
Have you tried a different set of initial conditions? Since you don't have time explicitly in your equations, maybe the equations are just solving for the steady-state solution (du===0) already.
답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Ordinary Differential Equations에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!