Problem with ODE solver

2 visualizzazioni (ultimi 30 giorni)
Mohammad Quddus
Mohammad Quddus il 22 Feb 2012
I would like to solve a simple parabolic equation, y=2*x^2 from -4 to 4. So I use ode45 to solve this problem according to the code below:
[T,Y] = ode113(@para,[-4 4],32,[],4);
plot (T,Y);
function dy = para(t,y,a)
dy=a*y; % as dy/dx= 4*x
Its giving me wiered results. Can you guys tell me what' going on here. I also tried other ODE functions. All of them are giving me the wrong results.

Risposta accettata

Grzegorz Knor
Grzegorz Knor il 22 Feb 2012
[T,Y] = ode113(@(x,y)4*x,[-4 4],32);
fplot('2*x.^2',[-4 4])
hold on
plot (T,Y,'ro')
  1 Commento
Mohammad Quddus
Mohammad Quddus il 23 Feb 2012
Thanks a lot for helping me out. This no give me the celar picture of how to use ODE if the right hand side of the equation is only a f(x), instead of f(x,y).

Accedi per commentare.

Più risposte (1)

Matt Tearle
Matt Tearle il 22 Feb 2012
Your equation is defining dy/dx = ay, not dy/dx = ax. Big difference! The solution to the former is y(x) = C*exp(ax); the solution to the latter is y(x) = ax^2/2, as you were hoping for.
So
function dy = para(x,y,a)
dy=a*x; % as dy/dx= 4*x
(I'm vaguely curious why you'd want to bother with an ODE solver for an integral of this kind, but that's a side-issue.)
  1 Commento
Mohammad Quddus
Mohammad Quddus il 23 Feb 2012
Yes you are right. I was looking for the second one. I know it is really simple and noone should be bothered about solving this kind of silly equation with ODE functions.
However I post this as I was not sure about how to right the ODE if it is only a f(x) instead of f(x,y). So based on these two answers I now have the clear picture about how to write the ODE function for both f(x) and f(x,y). Sometimes you know very silly things you can't figure out when you are running behind time.
Anyway thank you for your answer. really appreciate.

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by