Matlab欧拉方法EOM

问题描述 投票:0回答:1
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)

我正在尝试进行euler方法集成。运行此程序时出现错误。

matlab numerical-methods numerical-integration
1个回答
0
投票

请注意,您的系统是二维的,因此结果数组还具有两个数组维度。本质上,您需要编写时间步以强制使用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);
© www.soinside.com 2019 - 2024. All rights reserved.