Here is the initial value problem: y'=1-t+4*y with y(0)=1 on the interval [0, 2] using a step size of h = 0.01
Euler's Method/Improved Euler's Method
324 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Lucas Howarth
il 9 Ott 2020
Commentato: Mike Asmanis
il 18 Giu 2021
Having trouble working out the bugs in my Improved Euler's Method code. I previously had trouble with the normal Euler's method code, but I figured it out.
Euler's Method (working code):
syms t y
h=0.01;
N=200;
y(1)=1;
t(1)=0;
for n=1:N
k1=1-t(n)+4*y(n);
y(n+1)=y(n)+h*k1;
t(n+1)=t(n)+h;
end
plot(t,y)
And here is my attempt at Improved Euler's Method:
h=0.01;
N=200;
y(1)=1;
t(1)=0;
for n=1:N
k1=1-t(n)+4*y(n);
k2=1-t(n+1)+4*(y(n)+h*k1);
y(n+1)=y(n)+(h/2)*(k1+k2);
t(n+1)=t(n)+h;
end
plot(t,y)
The error message that pops up is "Index exceeds the number of array elements (1)." I'm rather new at MATLAB, and don't know what this means, can someone help me rework this? Thank you!
2 Commenti
Mike Asmanis
il 18 Giu 2021
Hey , how would i be able to solve this : y'(t)=cos(t + y) y(0)=0 t[0,3] exact solution y(t)=-t + 2arctan(t)
using your code?
Risposta accettata
Sudhakar Shinde
il 9 Ott 2020
May be position of t(n+1)=t(n)+h; coulb be at the starting of loop.
Più risposte (1)
J. Alex Lee
il 9 Ott 2020
The error is telling you that at the first step of your loop (n=1), you are trying to access the n=2nd element of t and y, but at the stage, t and y are only scalars (arrays with only 1 element) variables. You are trying to access an element of the "arrays" that doesn't exist.
if you are trying to implement implicit Euler, your problem is math, not coding.
2 Commenti
J. Alex Lee
il 9 Ott 2020
my bad, i didn't look very closely. i guess you are doing a 2 step RK, and it is probably right according to Sudhakar's answer.
Vedere anche
Categorie
Scopri di più su Logical in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!