我在使用此代码时遇到了麻烦。我的教授要求我们在MATLAB中创建一个函数“ feuler.m”,以解决微分方程u′(t)=(2 + 2t)e ^ t和初始条件u(0)=给出的初值问题。区间[0,5]中为0,该区间使用(向前)欧拉方法绘制精确解以及近似解。
输入应为: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
我不确定这是否正确。