Euler's Method/Improved Euler's Method

160 次查看(过去 30 天)
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 个评论
Lucas Howarth
Lucas Howarth 2020-10-9
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
Mike Asmanis
Mike Asmanis 2021-6-18
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?

请先登录,再进行评论。

采纳的回答

Sudhakar Shinde
Sudhakar Shinde 2020-10-9
May be position of t(n+1)=t(n)+h; coulb be at the starting of loop.
  6 个评论
Lucas Howarth
Lucas Howarth 2020-10-9
For the Runge-Kutta Method for approximation, k2 and k3 are done with the "t" value halfway between the current step and the next step. I'm not sure how to do this in MATLAB and still keeping integer values.

请先登录,再进行评论。

更多回答(1 个)

J. Alex Lee
J. Alex Lee 2020-10-9
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 个评论
J. Alex Lee
J. Alex Lee 2020-10-9
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.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Programming 的更多信息

产品


版本

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by