Ralston's method function
이전 댓글 표시
I am trying to write a function for Ralston's method, a second order Runge Kutta method. My function does not appear to be graphing correctly in another script. Is there something wrong with my function?
function [t, y] = ralston( f, tspan, y0, n)
% ralston implement ralston method
a = tspan(1);
b = tspan(2);
h = (b - a)/n;
t = a + h*(0:n)';
y = 0*t; %vector w all elements zero
y(1) = y0;
for i = 1:n
k1 = h*f(t(i), y(i));
k2 = h*f(t(i) + 3*h/4, y(i) + 3*k1/4);
y(i+1) = y(i) + k1/3 + 2*k2/3;
end
end
답변 (1개)
Jim Riggs
2019년 12월 7일
0 개 추천
There is an error in your function in the k2 term. For Ralstons method, it should be:
k1 = h*f(t(i), y(i));
k2 = h*( f( t(i) + 2*h/3, y(i) + 2*k1/3 ) );
댓글 수: 1
After some further review, there is also an error in y(i+1). Ralston's method should be:
k1 = h*f( t(i), y(i) );
k2 = h*f( t(i) + 2*h/3, y(i) + 2*k1/3 );
y(i+1) = y(i) + k1/4 + 3*k2/4;
or
k1 = f( t(i), y(i) );
k2 = f( t(i) + 2*h/3, y(i) + 2*h*k1/3 );
y(i+1) = y(i) + h*(k1/4 + 3*k2/4);
Also note that in order for the function to graph as expected, you must supply the correct starting value, y0.
카테고리
도움말 센터 및 File Exchange에서 Runge Kutta Methods에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!