Я довольно новичок в Matlab и пытаюсь создать функцию Matlab, которая применяет модифицированный метод Эйлера для аппроксимации решений определенного дифференциального уравнения. Когда я вызываю функцию в командном окне, я получаю следующую ошибку:
Index exceeds the number of array elements (1).
Error in modified_euler2 (line 10)
y(i+1)=y(i)+0.5*(k1(i)+k2(i));
Я вызываю функцию так же, как показано ниже: modified_euler2(60,1000,9.8,0.1125,1.125,25)
Полный код функции приведен ниже:
function output = modified_euler2(T,n,g,C,K,L)
f = @(v,y) (g - C*abs(v)*v -max(0, K*(y - L)));
h = T / n;
t = 0:h:T;
y = zeros(1,n+1);
v = zeros(1,n+1);
k1 = zeros(1,n+1);
k2 = zeros(1,n+1);
for i = 1:n+1
y(i+1)=y(i)+0.5*(k1(i)+k2(i));
k1 = h*f(v(i),y(i));
k2=h*f(v(i)+h,y(i)+k1(i));
end
output = t,y,v,h
figure
plot(y)
end
Любой совет о том, как исправить эту ошибку, был бы очень признателен.