10 views (last 30 days)

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

Walter Roberson
on 16 Aug 2020

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
on 16 Aug 2020

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

Opportunities for recent engineering grads.

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

Start Hunting!
## 2 Comments

## Direct link to this comment

https://in.mathworks.com/matlabcentral/answers/580146-euler-s-method#comment_974217

⋮## Direct link to this comment

https://in.mathworks.com/matlabcentral/answers/580146-euler-s-method#comment_974217

## Direct link to this comment

https://in.mathworks.com/matlabcentral/answers/580146-euler-s-method#comment_974226

⋮## Direct link to this comment

https://in.mathworks.com/matlabcentral/answers/580146-euler-s-method#comment_974226

Sign in to comment.