MATLAB Answers

How to solve ODE's and find m(t) using matlab? Urgent!!

1 view (last 30 days)
Here is the given ODE for which I need a solution:
Please help me on how to do this!!!

Accepted Answer

Star Strider
Star Strider on 25 Jul 2014
Edited: Star Strider on 25 Jul 2014
Use ode45. It’s five lines of code, including the plot:
mdot = @(t,m) sqrt(2E+5.*((1+(0.4-m)./0.5).^-1.4 - 1));
[t,m] = ode45(mdot, [0 1], 0.001);
semilogy(t, real(m), '-b', t, imag(m), '-g')
Star Strider
Star Strider on 26 Jul 2014
Since I did’t have other information, I chose m(0)=0.001 and ran it from [0 1] in time. With your m(0)=0.4 and time span [0 0.5] the call to ode45 is:
[t,m] = ode45(mdot, [0 0.5], 0.4);
and the entire code is now:
mdot = @(t,m) sqrt(2E+5.*((1+(0.4-m)./0.5).^-1.4 - 1));
[t,m] = ode45(mdot, [0 0.5], 0.4);
plot(t, m, '-*b')
axis([xlim 0 0.5])
With the square root, I’m somewhat surprised that there aren’t two solutions, for instance ±0.4 but the routine produces only one. Yours is a nonlinear equation, and the Symbolic Math Toolbox cannot solve it. (I have it, and I tried that to see what it would do. There is no analytic solution.)
The output doesn’t change from the initial conditions, and is uniformly 0.4 from 0 to 0.5.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!

Translated by