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

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)

 採用された回答

Torsten
Torsten 2022 年 6 月 7 日
編集済み: Torsten 2022 年 6 月 7 日
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))

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeNumerical Integration and Differential Equations についてさらに検索

質問済み:

2022 年 6 月 7 日

編集済み:

2022 年 6 月 7 日

Community Treasure Hunt

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

Start Hunting!

Translated by