ODE45 - How do I set up the conditions so that I'm not getting an error on 0?
조회 수: 1 (최근 30일)
이전 댓글 표시
I have to choose an appropriate ode solver for y'(t) = te^(-1000*t) - 10*y(t) with y(0) = 0 for 0<=t<=0.5. I also have to choose appropriate values for the absolute and relative tolerance to get a solution. I am getting an error with the code I have tried to start running to plot a vector solution of it. Also, can anyone confirm that the ODE45 solver and tolerance values are the correct choice? Thanks!
a = 0;
b = .5;
y(1) = 0;
f1 = @(t,y) (t*exp(-1000*t)) - (10*y(t));
options = odeset('RelTol',10^-7,'AbsTol',10^-9);
z1 = cputime;
[T Y] = ode45(f1,[a b],0,options);
z2 = cputime;
fprintf('ODE 45 CPU time: %f seconds. Number of steps: %d\n',z2-z1,length(T))
plot(T,Y,'r')
댓글 수: 2
채택된 답변
Star Strider
2016년 3월 11일
편집: Star Strider
2016년 3월 11일
This runs for me without error:
a = 0;
b = .5;
y(1) = 0;
f1 = @(t,y) (t.*exp(-1000*t)) - (10*y);
options = odeset('RelTol',10^-7,'AbsTol',10^-9);
z1 = cputime;
[T Y] = ode45(f1,[a b],0,options);
z2 = cputime;
fprintf('ODE 45 CPU time: %f seconds. Number of steps: %d\n',z2-z1,length(T))
plot(T,Y,'r')
The only changes I made were to replace ‘y(t)’ with ‘y’ in ‘f1’, and vectorise it.
댓글 수: 2
Star Strider
2016년 3월 11일
Thank you!
Yes. I switched it to ode15s and it gave a much better solution. (Sorry for the delay — life intrudes.)
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Ordinary Differential Equations에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!