Написание функции Matlab, реализующей метод Эйлера?

Я должен написать функцию MATLAB, которая принимает обыкновенное дифференциальное уравнение первого порядка в форме y'(t) = a*y(t) +b с начальной точкой y(t0)=y0 в качестве входных данных и вычисляет первые 15 точек решения . Также рисует кривую решения для первых 15 точек. И уравнение, которое мы хотим решить, это ;y’(t) = 4*y(t)+1 с начальной точкой y(0)=0.

Для этой функции я написал ревущий код, но это дает мне ошибку о y. Как мне правильно реализовать функцию Эйлера? А также я не мог определить, как я могу рисовать кривые решения.

function E=euler(f,y)
%Input - f is the function entered as a string 'f'
% - a and b are the left and right endpoints
% - ya is the initial condition y(a)
% - M is the number of steps
%Output - E=[T' Y'] where T is the vector of abscissas and
% Y is the vector of ordinates
h=0.1;
y(0)=0;
for j=0:15
Y(j+1)=Y(j)+h*feval(4*(y(t)+1));
end

person Yigit Can    schedule 16.12.2012    source источник
comment
См. ответ на этот вопрос... stackoverflow.com/questions/13063060/   -  person ccook    schedule 17.12.2012


Ответы (1)


Пластырь:

h = 0.1;
y(1) = 0;
for j = 1:16
    Y(j + 1) = Y(j) + h * feval(4 * (y(t - 1) + 1));
end

Ну, я не уверен насчет математической части, но индексы должны начинаться с "1". Другое, например, в C вы не должны использовать "0" в качестве индекса.

person s-m-e    schedule 16.12.2012
comment
о, я вижу, вы начинаете цикл for с 2. но вы не инициализируете y (0) как 0 в коде, это приведет к какой-либо ошибке? - person Yigit Can; 17.12.2012
comment
Прочтите внимательно, я инициализирую y(1) = 0; ... Я в основном добавил 1 ко всем индексам. - person s-m-e; 17.12.2012
comment
Хорошо, небольшое исправление, чтобы было немного легче увидеть. Кроме того, t не определено. Откуда это взялось? - person s-m-e; 17.12.2012
comment
на самом деле t происходит от этого y’(t) = 4*y(t)+1 - person Yigit Can; 17.12.2012