数值积分

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]=
Mathematica 能够求出 积分的精确值.
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}]expr 积分,在中间点 中查找奇点.

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

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

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

NIntegrate 的特殊选项.

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

在所有选项的缺省设置下,NIntegrate 丢失了 处的高峰,给出了错误的积分结果.
In[10]:=
Click for copyable input
Out[10]=
在选项设置 下,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 可能要花费很多时间得到结果. 然而,通过设置选项 ,可以让 NIntegrate 给出较粗的估计,这时它仅对被积函数取限制次数的采样.

这是获取需较长计算时间的积分的粗略估计的方法.
In[14]:=
Click for copyable input
Out[14]=
New to Mathematica? Find your learning path »
Have a question? Ask support »