% 定義變量
a = -5; % alpha0
h = 0.1; % 步長
x = 0; % 左端點
y = 2; % 右端點
num = (y-x)/h+1; % 端點數(shù)
t = linspace(x,y,num); % 時間變量
u = zeros(num,1); % 解變量
u(1) = 1; % u0
u(2) = (1+h*h)^2; % 附加u1
% 線性二步法
for i = 2 : (num-1)
u(i+1) = (1+a)*u(i)-a*u(i-1)+0.5*h*((3-a)*f_function(t(i),u(i))-(1+a)*f_function(t(i-1),u(i-1)));
end
% 輸出
for i = 1 : num
fprintf("u(%f)=%.7f\n",t(i),u(i));
end
matlab 運行上述代碼結(jié)果:

北太天元軟件運行上訴代碼結(jié)果:

試了一下現(xiàn)在的北太4.2.1可以搞
% 定義變量
a = -5; % alpha0
h = 0.1; % 步長
x = 0; % 左端點
y = 2; % 右端點
% 定義 f_function 作為匿名函數(shù)
% 請根據(jù)你的具體微分方程修改下面的定義
f_function = @(t, u) u; % 示例: u' = u
% f_function = @(t, u) t + u; % 或者 u' = t + u
% f_function = @(t, u) t^2 + u^2; % 或者 u' = t^2 + u^2
num = (y-x)/h+1; % 端點數(shù)
t = linspace(x,y,num); % 時間變量
u = zeros(num,1); % 解變量
u(1) = 1; % u0
u(2) = (1+h*h)^2; % 附加u1
% 線性二步法
for i = 2 : (num-1)
u(i+1) = (1+a)*u(i)-a*u(i-1)+0.5*h*((3-a)*f_function(t(i),u(i))-(1+a)*f_function(t(i-1),u(i-1)));
end
% 輸出
for i = 1 : num
fprintf("u(%f)=%.7f\n",t(i),u(i));
end
