Обратите внимание, что ваша система является двухмерной, поэтому результирующий массив также имеет два размера массива. По сути, вам нужно написать временной шаг, чтобы принудительно использовать векторные записи в списке y
.
y(n+1,:) = y(n,:) + h * f(t(n),y(n,:))';
Использование только одного индекса дает соответствующую запись массива плоских данных, который содержит числовые значения элементов матрицы.
Возможно, вам также придется правильно инициализировать список y
,
y(1,:) = [ 0; 0.1]
clear all;
f = @(t,y) [y(2);cos(t) - y(2) - 4*y(1)];
a = 0;
b = 1;
N = 5000 ;
h = (b-a)/(N+1);
y(1,:) = [0; 0.1];
t(1) = a ;
for n = 1:1:N
t(n+1) = t(n) +h;
y(n+1,:) = y(n,:) + h * f(t(n),y(n,:))';
end
plot(t,y);