Метод Матлаба Эйлера EOM - PullRequest
0 голосов
/ 28 февраля 2020
f = @(t,y) [y(2);cos(t) - y(2) - 4*y(1)]

a = 0
b = 1
N = 5000 
h = 1
y(1) = 0
y(2) = 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)

Я пытаюсь сделать интеграцию метода Эйлера. Я получаю ошибку при запуске этого.

1 Ответ

0 голосов
/ 28 февраля 2020

Обратите внимание, что ваша система является двухмерной, поэтому результирующий массив также имеет два размера массива. По сути, вам нужно написать временной шаг, чтобы принудительно использовать векторные записи в списке y.

y(n+1,:) = y(n,:) + h * f(t(n),y(n,:))';

Использование только одного индекса дает соответствующую запись массива плоских данных, который содержит числовые значения элементов матрицы.

Возможно, вам также придется правильно инициализировать список y ,

y(1,:) = [ 0; 0.1] 

plot of the solution

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);
...