文档

quadgk

数值计算积分,自适应高斯-克朗罗德积分

语法

Q = quadgk(fun,a,b)
[q,errbnd] = quadgk(fun,a,b)
[q,errbnd] = quadgk(fun,a,b,param1,val1,param2,val2,…)

描述

Q = quadgk(fun,a,b)尝试近似一个标量值函数的积分有趣的一个b采用高阶全局自适应正交和默认容错。这个函数Y =乐趣(x)应该接受向量参数吗x并返回一个向量结果y,在那里y被积函数是否在的每个元素处求值x有趣的必须是函数句柄。限制一个b可以。如果两者都是有限的,它们可能是复杂的。如果至少有一个是复数的,积分在直线路径上近似一个b在复平面上。

参数化功能解释如何向函数提供附加参数有趣的,如有需要。

[q,errbnd] = quadgk(fun,a,b)返回绝对误差的近似上界,| q - i |,在那里表示积分的确切值。

[q,errbnd] = quadgk(fun,a,b,param1,val1,param2,val2,…)执行与可选参数的指定值的集成。可选参数为

参数 描述

“AbsTol”

绝对容错。

的默认值“AbsTol”1.平台以及(双),1. e-5(单)。

quadgk试图满足errbnd <= max(AbsTol,RelTol*|Q|)。这是绝对错误控制时Q | |当误差控制足够小和相对时Q | |比较大。用于纯绝对误差控制AbsTol > 0“RelTol”= 0。用于纯相对误差控制'AbsTol' = 0。除使用纯绝对误差控制外,最小相对公差为'RelTol' >= 100*eps(class(Q))

“RelTol”

相对容错。

的默认值“RelTol”1. e-6(双),1.的军医(单)。

“锚点”

积分路径点的向量。

如果有趣的(x)在积分区间有不连续时,位置应作为a提供路点向量。当一个b,并且路径点都是真实的,只有两者之间的路径点一个b都被使用了,而且它们是按顺序使用的。注意,路径点不是为中的奇点而设计的有趣的(x)。奇点的处理方法是使它们成为单独积分的端点,并将结果相加。

如果一个b,或任意入口的路径点向量为复,则积分在复平面上的直线路径序列上执行,从一个到第一个路径点,从第一个路径点到第二个路径点,以此类推,最后从最后一个路径点到b

“MaxIntervalCount”

允许的最大间隔数。

默认值为650

“MaxIntervalCount”参数限制的间隔数quadgk在第一次迭代之后的任何时间使用。发出警告,如果quadgk因为这个限制,所以会提前返回。不建议定期增加此值,但在以下情况下可能是合适的errbnd足够小,几乎达到了预期的精度。

例子

例1。被积函数在积分端点处有一个奇点

写一个函数myfun计算被积函数:

函数y = myfun(x) y = exp(x).*log(x);

然后通过@myfun的函数句柄myfun,quadgk,以及整合的局限性,01

Q = quadgk(@myfun,0,1) Q = -1.3179

或者,你可以把被积函数传递给quadgk作为匿名函数句柄F

F = (@(x)exp(x).*log(x));Q = quadgk(f,0,1);
例2。半无限区间上的振荡被积函数

在指定公差的半无限区间内积分,并返回近似误差界:

F = @(x)x.^5.*exp(-x).*sin(x);[q,errbnd] = quadgk(f,0,inf,'RelTol',1e-8,'AbsTol',1e-12) q = -15.0000 errbnd = 9.4386e-009

例3。围绕极点的等高线积分

使用路点用分段线性轮廓线绕一极点积分:

F = @(z)/(2*z - 1);q = quadgk (f,我,我,“锚点”,[我1 + 1 + i))我问= 0.0000 + 3.1416

诊断

quadgk可能发出下列警告之一:

“达到最小步长”指示间隔细分产生了一个子间隔,其长度与原始间隔长度的舍入误差相同。不可积奇点是可能的。

“已达到使用的最大间隔次数的限制”指示在满足公差要求之前已终止集成,并且继续集成将需要超过MaxIntervalCount小区间。这个积分可能不存在,或者很难用数值来近似。增加MaxIntervalCount通常没有帮助,除非在集成之前终止时公差要求已经接近满足。

“遇到无限或非数函数值”指示在计算区间内部的被积函数时发生浮点溢出或被零除。

提示

  • 如果区间是无限的, 一个 的积分有趣的(x)存在,有趣的(x)一定会腐烂x趋于无穷,并且quadgk要求它迅速腐烂。对于无限区间上的振荡函数,应该使用特殊的方法,但是quadgk可用于以下情况有趣的(x)衰变足够快。

  • quadgk函数可以积分在有限端点处奇异的函数如果奇异点不是很强的话。例如,它可以集成在端点上运行的函数c就像日志|得到||得到|pP >= -1/2。如果函数在内部点是奇异的(a, b),将积分写成以奇异点为端点的子区间上的积分和,用quadgk,并添加结果。

算法

quadgk实现自适应正交基于高斯-克朗罗德对(15th和7th订单公式)。

参考文献

[1] L.F.香波”矢量自适应正交的MATLAB®”,计算与应用数学杂志《中国科学》,2008,pp.131-140。

扩展功能

C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。

这个话题有用吗?