Solving a non-linear second order ODE with Matlab

9 次查看(过去 30 天)
I am brand new to Matlab, but I have to find an approximate numerical solution to the following differential equation:
d^2p/dr^2+dp/dr*1/r-2*exp(m(r))*sinh(p)=0 OR p''+p'*(1/r)-2*exp(m(r))*sinh(p)=0
I have separated it (I think correctly??) into two first order ODEs:
y0'=y1 y1'=2*exp(m(r))*sinh(y1)
Now I am confused on how to input this into Matlab. Any help is greatly appreciated!

采纳的回答

Torsten
Torsten 2015-4-29
Use UDE45 if your problem is an initial value Problem, use bvp4c if it is a boundary value problem.
Best wishes
Torsten.
  3 个评论
Torsten
Torsten 2015-4-30
And your system of equations must read
y0'=y1
y1'=-y1/r+2*exp(m(r))*sinh(y0)
Best wishes
Torsten.
Jan
Jan 2015-4-30
@Torsten: You know that you can edit your messages?

请先登录,再进行评论。

更多回答(2 个)

Pratik Bajaria
Pratik Bajaria 2015-4-29
Hello,
ode45 must work for you. All you have to do is make a function handle, which carries your ode function that you have split into set of first order differential equations and then use ode45 solver in MATLAB to attain a solution.
Similar to example shown on this URL: ODE45
Hope it helps!
Regards, Pratik

Bjorn Gustavsson
Bjorn Gustavsson 2015-4-29
Another pointer...
You have in fact not separated your DE correctly. You get y1' directly from your DE if you change dp/dr with y1.
HTH

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by