MATLAB中数值积分方法的解释

时间:2014-12-13 17:45:00

标签: matlab

我有以下MATLAB代码,用于以数字方式计算函数的集成。我不知道xi0xi1是什么意思:

function [xin,cota] = trapecios2(f,a,b,n,M)
%Cálculo aproximado de la integral de f en [a,b]
%utilizando el método de los trapecios
% f es la función a y b los extremos del intervalo n es el número de
% subintervalos en los que se divide [a,b]
if n<=0 
    disp('valor de n no válido')
    return
end
h=(b-a)/n;
xi0=f(a)+f(b);
xi1=0;
for i=1:n-1
    x=a+i*h;
    xi1=xi1+f(x);
end
xin=h*(xi0+2*xi1)/2;
cota=(M/12)*(b-a)^3/n^2
end

1 个答案:

答案 0 :(得分:1)

如您所述,此功能以数字方式计算积分。但是,需要注意的是,此函数使用梯形近似曲线下方的区域。您可能不知道trapezoidal rule,因为如果您这样做,那么您可以看到此代码使用梯形规则近似积分。此外,在您的代码顶部的注释块中,它确实表示该区域由梯形计算,尽管是西班牙语。梯形法则背后的前提是我们在曲线下方拟合N个梯形,计算每个梯形的面积并总结所有区域。这是曲线下方区域的近似值。

具体来说,如果我们想要计算从x = a开始到x = b之间的曲线下面积,并且我们有N个梯形,那么梯形规则是这样的: / p>

此外:

因此,在您的代码中,xi0计算f(a) + f(b),这是第一个等式的大括号内的第一个和最后一个术语。接下来,xi1计算求和,这是第一个等式的大括号内的中间项。这是在代码中的for循环中完成的。最后,我们在您的代码中通过此语句计算总面积:

xin=h*(xi0+2*xi1)/2;

如果您将xi0xi1替换为上述语句,则本质上会计算梯形规则以计算曲线下方的区域。


FWIW,代码末尾的cota计算与真实区域相比较的梯形规则近似区域的最大误差。具体做法是:

M指定错误的上限。这是您函数的最后一个输入。


希望这有帮助!