数值积分

N[Integrate[expr,{x,xmin,xmax}]]尝试进行精确积分,然后求数值近似
NIntegrate[expr,{x,xmin,xmax}]求积分的数值近似
NIntegrate[expr,{x,xmin,xmax},{y,ymin,ymax},]
多重数值积分
NIntegrate[expr,{x,xmin,x1,x2,,xmax}]
沿直线段求数值积分,从点 开始,经过点 ,到点 结束

数值积分函数.

这里求积分 的数值近似.
In[1]:=
Click for copyable input
Out[1]=
这里是重积分 的数值近似.
In[2]:=
Click for copyable input
Out[2]=

NIntegrate 的重要特征是它处理在已知点处爆炸的函数的能力. NIntegrate 自动地在积分区域的端点处检查这种问题.

函数 处爆炸,但 NIntegrate 仍然给出了正确的积分值.
In[3]:=
Click for copyable input
Out[3]=
Wolfram 语言能够求出 积分的精确值.
In[4]:=
Click for copyable input
Out[4]=
NIntegrate 检测到 处的奇异性,它不是可积的.
In[5]:=
Click for copyable input
Out[5]=

NIntegrate 自动查找积分域端点和分段函数(如 PiecewiseAbs)定义的子区域的奇点. 当其它奇点存在时,NIntegrate 有可能给不出正确的积分结果. 然而,按照它的自适应程序,NIntegrate 将常常检查奇点的存在,并给出有关的警告.

NIntegrate 给出关于积分域中间的奇点的一个警告. 最终结果很接近正确答案.
In[6]:=
Click for copyable input
Out[6]=

如果已知被积函数在某处有奇点,可以明确告诉 NIntegrate 来处理它们. NIntegrate[expr,{x,xmin,x1,x2,,xmax}]exprx_(min)x_(max) 积分,在中间点 x_(i) 中查找奇点.

这里再一次给出积分,但此时明确处理 处的奇点.
In[7]:=
Click for copyable input
Out[7]=

NIntegrate 中可以使用中间点 x_(i) 的列表来指定复平面上的路径. 路径由以 x_(min) 为起点,经过每一点 x_(i),以 x_(max) 为终点的若干线段组成.

这里在复平面的一条闭曲线上对 进行积分. 闭曲线从 开始,经过 ,再回到 .
In[8]:=
Click for copyable input
Out[8]=
上一积分的结果就是 ,正符合柯西定理.
In[9]:=
Click for copyable input
Out[9]=
选项名
默认值
MinRecursion0积分区域的递归细分的最小数
MaxRecursionAutomatic积分区域的递归细分的最大数
MaxPointsAutomatic被积函数采样的最大次数

NIntegrate 的特殊选项.

NIntegrate 力图计算数值积分时,它在一系列点上对被积函数采样. 当它发现在一个特定区域内被积函数变化很快时,则在该区域递归地取更多的采样点. 参数 MinRecursionMaxRecursion 指定递归细分层的最小和最大数. 增加 MinRecursion 的值保证 NIntegrate 使用较大的采样点数. MaxPointsMaxRecursion 限制了NIntegrate 使用的采样点数. 增加 MinRecursion 或者 MaxRecursion 会使 NIntegrate 计算更慢.

在所有选项的缺省设置下,NIntegrate 丢失了 处的高峰,给出了错误的积分结果.
In[10]:=
Click for copyable input
Out[10]=
在选项设置 MinRecursion->3 下,NIntegrate 取足够多的采样点,使得它注意到 附近的高峰. 然而在 MaxRecursion 的缺省设置下,NIntegrate 不能使用足够多的采样来得到精确结果.
In[11]:=
Click for copyable input
Out[11]=
MaxRecursion 的这个设置下,NIntegrate 能得到积分的精确结果.
In[12]:=
Click for copyable input
Out[12]=
解决此问题的另一方法是使用 NIntegrate 将积分区间分成若干段,其中一个小区间包含高峰.
In[13]:=
Click for copyable input
Out[13]=

多多重积分,NIntegrate 可能要花费很多时间得到结果. 然而,通过设置选项 MaxPoints,可以让 NIntegrate 给出较粗的估计,这时它仅对被积函数取限制次数的采样.

这是获取需较长计算时间的积分的粗略估计的方法.
In[14]:=
Click for copyable input
Out[14]=
Translate this page: