Matlab 中“trapz”函数的积分问题

问题描述 投票:0回答:1

有人可以帮助我解决这个问题。我必须使用 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 值始终相同,永远不会增加。

matlab numerical-integration
1个回答
1
投票

在 epsilon 计算中实现 abs 以避免 while 循环计算中出现负值。即

epsilon = abs(I_new - I);

abs(epsilon) >= tol

还建议将初始 epsilon 值设置为 inf:

epsilon = inf;

© www.soinside.com 2019 - 2024. All rights reserved.