有人可以帮助我解决这个问题。我必须使用 Matlab 的函数 trapz 来计算积分,增加网格间隔 N。我需要这样做,直到达到容差。
N = 1; %Initial number of mesh intervals
t = [t0,tf]; %Create an initial mesh
y = L(t); %Evaluate the function at mesh points
I = trapz(t,y); %Compute the integral numerically using trapz
epsilon = I;
while epsilon >= tol % Until I reach tolerance
N = N+1;
tstep = (tf-t0)/N;
t1 = t0:tstep:tf;
y1 = L(t1);
I_new = trapz(t1,y1);
epsilon = I_new - I;
I = I_new;
end
问题是我的 I_new 值始终相同,永远不会增加。
在 epsilon 计算中实现 abs 以避免 while 循环计算中出现负值。即
epsilon = abs(I_new - I);
或
abs(epsilon) >= tol
还建议将初始 epsilon 值设置为 inf:
epsilon = inf;