MATLAB Answers

Translated by

このページのコンテンツは英語から自動翻訳されています。自動翻訳をオフにする場合は「<a class="turn_off_mt" href="#">ここ</a>」をクリックしてください。

1

difference in ode45 and rk4 code

Debashis Panda さんによって質問されました 2018 年 8 月 31 日
最新アクティビティ Titus Edelhofer
さんによって コメントされました 2018 年 8 月 31 日
Hi... I have tried to solve a set of non-linear coupled differential equations in matlab by rk4 method. For this i have written a code (but not used any solver like ode45)but during validation results are not matching. Then i have solved a simple equation y'=2*t,y(0)=0 t=[0:0.5:2] the results obtained by the code rk4 exactly matches with ode45 solver. Thats correct means code is working fine. Then i have solved several simple problems from text books of matlab, most cases results are matching. Then i have tried to solve a problem y'=2*t^5; with y(0)=0 t=[0:0.5:2]. But the results obtained by ode45 exactly matches with analytical solution, but results obtained by my own code deviates more, then i have copied a code from text book "APPLIED NUMERICAL METHODS USING MATLAB" by Yang et al. page number 268. The results obtained by my own code matches with results of book code but results of both code deviates from ode45 and analytical results. anybody please tell me the reason behind it...

  0 件のコメント

サインイン to comment.

タグ

製品


リリース

R2017b

1 件の回答

回答者: Titus Edelhofer
2018 年 8 月 31 日
 採用された回答

Hi Debashis,
I think there is a misunderstanding: ode45 uses the result from the 5th order RK method for the solution, whereas rk4 is a 4th order method. The "4" in the ode45 means, that the 4th order is used for the variable step selection. Now: for "nice" functions like 2*t, both rk4 and rk5 reproduce the result. Therefore you see no difference. For t^5 you see, that the 5th order is still exact (error of ode45 small), whereas 4th order rk4 cannot give exact result (as you see).
Titus

  2 件のコメント

Debashis Panda 2018 年 8 月 31 日
Dear Titus, thank you so much for your replay, your answer is absolutely correct, when i have implemented 5th order Rungi-kutta method in my code i am getting correct result compared with ode45. But another problem that i want to ask you some times in solving a system of coupled equation in my code i was getting NaN error after some iteration, by using 4th order rk method, where as ode45 produce results , i guess it may be due to the order of accuracy, is it correct or not...
Titus Edelhofer
2018 年 8 月 31 日
Hi Debashis,
NaN typically comes if the step size is too large compared to the dynamics (or the stiffness) of the system. ode45 should seldom suffer from this problem, because it adapts the stepsize automatically (again, as long as the problem is not too stiff). But fixed step solvers like rk4 can run into this problem. Try to reduce the step size.
Titus

サインイン to comment.



Translated by