24 views (last 30 days)

Show older comments

I would like to implement a Matlab code based on Euler's method. This is a project work in the university, and I have a sample solution from my professor to make this project easier. I have succesfully modified this sample solution to fit my task.

Differential equation:

My code:

fv = @(t,y) t * sin(-y) + cos(t)./(t+1);

t0 = 0; tv = 7; y0 = 2; steps = 10;

[tE,yE] = Euler(fv,[t0,tv],y0,steps);

plot(tE,yE,'*;Euler;');

function [t,y] = Euler(fv,tr,y0,steps)

t = linspace(tr(1),tr(2),steps + 1);

y = zeros(size(t));

h = t(2)-t(1);

y(1) = y0;

for i = 1:steps

y(i+1) = y(i) + h * fv(t(i), y(i));

end

end

When I attemp to run my code I always get an error message:

Unrecognized function or variable 'Euler'.

My Matlab skills are horrible, so I can't figure out what is the problem. :(

If anyone provide me an explanation or a proper code, it'll be very helpful for me. Thank you in advance.

John D'Errico
on 14 Apr 2021

What you need to understand is that Euler is a poor method to use. Easy to write, easy to understand. But is it good? NO. And this is why you should not be writing code to solve numerical methods problems. You want to UNDERSTAND those codes, yes. But then for any real work, you need to use tools like ODE45, ODE15S, etc.

Regardless, look closely at the code you wrote.

fv = @(t,y) t * sin(-y) + cos(t)./(t+1); % diff. eq.

...

y(i+1)= y(i)+ h * fv(y(i),t(i));

Do you see a difference in how you call fv, compared to how you defined the function? You swapped y and t around.

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

Start Hunting!