Going from Euler's method to trapezoidal rule
Show older comments
I used Euler's Method to solve y'= 1−t+4y with y(0) = 1 on the interval [0, 2], h = 0.01. I posted my code below. How would I edit this code to solve the same problem using the Trapezoidal Rule?
if true
syms t y
f=@(t,y) 1-t+4.*y;
t=0;
y=1;
h=.01;
n=(2-0)/h;
for i=1:n
m=f(t(i),(y(i)));
y=[y, y(i)+m*h]; %y(i+1)=y(i)+m*h
t=[t, t(i)+h]; %t(i+1)=t(i)+h
end
for i=1:length(t)
fprintf('%5.4f | %5.4f\n',t(i),y(i))
end
end
2 Comments
DINU ANDREEA-EMILIA
on 3 Jun 2020
Did you find the answer to your question? Cause i have to do the exact same thing
James Tursa
on 3 Jun 2020
You could look here:
Answers (1)
Swaraj
on 9 Feb 2023
You would have to modify the calculation of the intermediate value m as follows:
if true
syms t y
f=@(t,y) 1-t+4.*y;
t=0;
y=1;
h=.01;
n=(2-0)/h;
%Changed Part Start
for i=1:n
m1 = f(t(i),y(i));
m2 = f(t(i) + h/2, y(i) + m1*h/2);
y = [y, y(i) + m2*h];
t = [t, t(i) + h];
end
%Changed Part End
for i=1:length(t)
fprintf('%5.4f | %5.4f\n',t(i),y(i))
end
end
Categories
Find more on Programming in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!