How can I change this code to euler backward method? (implicit method)

5 views (last 30 days)
f = @(t,y) -100000*y + 99999*exp(-t);
t0 = 0; y0 =0;
h = 0.01; tn = 2;
n = (tn-t0)/h;
t(1)=t0; y(1)=y0;
for i=1:n
t(i+1) = t(i) + h;
y(i+1) = y(i) + (f(t(i),y(i))*h);
end
plot(t,y)

Accepted Answer

Torsten
Torsten on 7 Jun 2022
Edited: Torsten on 7 Jun 2022
f = @(t,y) -100000*y + 99999*exp(-t);
t0 = 0; y0 =0;
h = 0.01; tn = 2;
n = (tn-t0)/h;
t(1)=t0; y(1)=y0;
for i=1:n
t(i+1) = t(i) + h;
fun = @(x) x - y(i) - h*f(t(i+1),x);
y(i+1) = fzero(fun,y(i));
end
plot(t,y)
hold on
exact = @(t) exp(-t)-exp(-100000*t);
plot(t,exact(t))

More Answers (0)

Categories

Find more on Numerical Integration and Differential Equations 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!