我在处理这段代码时遇到了一些问题。我的教授要求我们在 MATLAB 中创建一个函数“feuler.m”来解决由微分方程 u′(t) = (2+2t)e^t 和初始条件 u(0) = 0 在区间 [0, 5] 上使用(前向)欧拉方法绘制精确解和近似解。
输入应为:n
,区间 [0,5] 应划分为的子区间数。
输出应该是精确解和数值解的图形,并打印真实解和数值解之间的最大误差值。
请注意,精确解由 u(t) = 2tet 给出。
到目前为止,我已经编写了代码:
function myeuler(N)
t = linspace(0, 5, N+1)';
ua = zeros(N+1,1);
ue = 2*t.*exp(t);
h = 5/N;
A = zeros(N,N);
A(2:N,1:N-1) = -eye(N-1);
A = A + eye(N);
b = h*(2+2*t(1:N)).*exp(t(1:N));
b(1) = b(1) + ua(1);
ua(2:N+1) = A\b;
plot(t, ua, 'r', t, ue, 'g')
end
我不确定这是否正确。