How to solve ODE's and find m(t) using matlab? Urgent!!
조회 수: 1 (최근 30일)
이전 댓글 표시
Here is the given ODE for which I need a solution:
Please help me on how to do this!!!
댓글 수: 2
채택된 답변
Star Strider
2014년 7월 25일
편집: Star Strider
2014년 7월 25일
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);
figure(1)
semilogy(t, real(m), '-b', t, imag(m), '-g')
grid
댓글 수: 3
Star Strider
2014년 7월 26일
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);
figure(1)
plot(t, m, '-*b')
grid
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.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Symbolic Math Toolbox에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!