явный метод Эйлера не является безусловно стабильным, поэтому убедитесь, что вы выбрали достаточно малые временные шаги для своих тестов.Я почти ничего не изменил в вашем коде, но мне нужно было сделать его немного читабельным.Если проблема не исчезнет, загрузите снимок экрана с графиком.
function [x,y] = euler(y0,a,b,h)
% Left out f for algorithm test!
% a and b the interval ends
% h=distance between partitions ~
% y0= initial value
s=@(x) 2*exp(x) - (x+1);
f=@(x,y) x + y;
%s=input('Give an equation in x: ','s'); %the solution of the ODE
x = a:h:b;
n=length(x);
y=zeros(n,1);
y(1)=y0;
for i=1:n-1
y(i+1)=y(i)+h*f(x(i),y(i));
end
plot(x,s(x),'k')
hold on
plot(x,y,'r')
hold off
endfunction
Я бы порекомендовал вам придерживаться как можно меньшего количества переменных.Старайтесь не смешивать временную и пространственную области, часто функции зависят от обоих, и тогда путать ay (x) с временными шагами непонятно.
Img_Plot
Должно работатьсейчасОбратите внимание, что y0 должен соответствовать точке вашей функции решения по заданному значению для a.
s (a) = y0
Cheers,
Pablo