Going from Euler's method to trapezoidal rule

10 Ansichten (letzte 30 Tage)
Chloe Keller
Chloe Keller am 15 Jul. 2018
Beantwortet: Swaraj am 9 Feb. 2023
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 Kommentare
DINU ANDREEA-EMILIA
DINU ANDREEA-EMILIA am 3 Jun. 2020
Did you find the answer to your question? Cause i have to do the exact same thing

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Swaraj
Swaraj am 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

Kategorien

Mehr zu Programming finden Sie in Help Center und File Exchange

Produkte


Version

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by