MATLAB Program for Heun's Method
% Heun's method
% Example 1: Approximate the solution to the initial-value
problem
% dy/dt=e^t ; 0<=t<=2
; y(0)=1;
% Example 2: Approximate the solution to the initial-value
problem
% dy/dt=y-t^2+1 ;
0<=t<=2 ; y(0)=0.5;
%f = @(t,y)
(0*y+exp(t)); %Example 1
f = @(t,y)
(y-t^2+1); %Example 2
a = input('Enter left end ponit, a: ');
b = input('Enter right end point, b: ');
n = input('Enter no. of subintervals, n:
');
alpha =
input('Enter
the initial condition, alpha: ');
h =
(b-a)/n;
t=[a
zeros(1,n)];
w=[alpha
zeros(1,n)];
for i = 1:n+1
t(i+1)=t(i)+h;
wprime=w(i)+(h/3)*f(t(i),w(i));
w(i+1)=w(i)+(h/4)*(f(t(i),w(i))+3*f(t(i)+(2*h/3),
w(i)+(2*h/3)*f(t(i)+h/3, wprime)));
fprintf('%5.4f %11.8f\n', t(i), w(i));
plot(t(i),w(i),'r*'); grid on;
xlabel('t values'); ylabel('w values');
hold on;
end
>> heun_method
Enter left end ponit, a: 0
Enter right end point, b: 2
Enter no. of subintervals, n: 10
Enter the initial condition, alpha: 1
0.0000 1.00000000
0.2000 1.43991111
0.4000 1.95980255
0.6000 2.55966996
0.8000 3.23950802
1.0000 3.99931024
1.2000 4.83906868
1.4000 5.75877366
1.6000 6.75841334
1.8000 7.83797327
2.0000 8.99743580
>>
No comments