Solving a non-linear second order ODE with Matlab

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!

 Réponse acceptée

Torsten
Torsten le 29 Avr 2015

0 votes

Use UDE45 if your problem is an initial value Problem, use bvp4c if it is a boundary value problem.
Best wishes
Torsten.

3 commentaires

Torsten
Torsten le 29 Avr 2015
Sorry, should read ODE45 instead of UDE45.
Best wishes
Torsten.
And your system of equations must read
y0'=y1
y1'=-y1/r+2*exp(m(r))*sinh(y0)
Best wishes
Torsten.
Jan
Jan le 30 Avr 2015
@Torsten: You know that you can edit your messages?

Connectez-vous pour commenter.

Plus de réponses (2)

Pratik Bajaria
Pratik Bajaria le 29 Avr 2015

0 votes

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 le 29 Avr 2015

0 votes

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