Euler's Method

1 次查看(过去 30 天)
Mikela Petersen
Mikela Petersen 2020-8-16
I'm getting an error that reads "Error in myeuler (line 22)
y(i+1) = y(i) + (dx * f(x(i),y(i)));"
I don't exactly know what I'm doing wrong or even where to look in this line to see what's wrong.
% must call from edrive.m or other
% required input arguments: RHS function of two variables f,
% vector x of length n+1,
% init val c
% computed output argument: y\in\R^{n+1} approximate solution
function y = myeuler(f,x,c)
% approximates sol to y' = f(x,y) over [a,b] with y(a)=c
% via n steps of Euler's method
for n = [10, 20, 40, 80, 160]
a = 0; b = .5; c = .25;
x = [a:n+1:b];
f = @(x,y) (x.^3);
dx = (x(end)-x(1))/n;
y = [c ; zeros(n,1)];
for i = 1: n
y(i+1) = y(i) + (dx * f(x(i),y(i)));
end
end
  2 个评论
Image Analyst
Image Analyst 2020-8-16
You forgot to give us the actual error. That means ALL the red text, not just a small snippet of it. By the way, your f does not seem to use y at all:
f = @(x,y) (x.^3);
You can see that it just returns x cubed. The y value is ignored.
Mikela Petersen
Mikela Petersen 2020-8-16
the error is the first thing that was listed:
>> myeuler
Index exceeds the number of array elements (1).
Error in myeuler (line 22)
y(i+1) = y(i) + (dx * f(x(i),y(i)));

请先登录,再进行评论。

回答(2 个)

Walter Roberson
Walter Roberson 2020-8-16
for n = [10, 20, 40, 80, 160]
a = 0; b = .5; c = .25;
x = [a:n+1:b];
Consider the first case, n = 10 . Then
a = 0; b = .5; c = .25;
x = [0:10+1:.5]
but 0:11:.5 is going to give you just 0 .
The number in the middle in a a:b:c operation is the increment, not the number of elements to generate. To generate a particular number of elements,
x = linspace(a, b, n+1);

Rafael Hernandez-Walls
for n = [10, 20, 40, 80, 160]
a = 0; b = .5; c = .25;
x = linspace(a,b,n);%[a:n+1:b];
f = x.^3;
dx = x(2)-x(1);%(x(end)-x(1))/n;
y = [c ; zeros(n-1,1)];
for i = 1: n-1
y(i+1) = y(i) + dx * f(i);
end
plot(x,y),hold on
end

类别

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

标签

Community Treasure Hunt

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

Start Hunting!

Translated by