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,…)
执行与可选参数的指定值的集成。可选参数为
参数 | 描述 | |
---|---|---|
|
绝对容错。 的默认值 |
|
|
相对容错。 的默认值 |
|
|
积分路径点的向量。 |
如果 如果 |
|
允许的最大间隔数。 默认值为 |
的 |
例子
写一个函数myfun
计算被积函数:
函数y = myfun(x) y = exp(x).*log(x);
然后通过@myfun
的函数句柄myfun
,quadgk
,以及整合的局限性,0
来1
:
Q = quadgk(@myfun,0,1) Q = -1.3179
或者,你可以把被积函数传递给quadgk
作为匿名函数句柄F
:
F = (@(x)exp(x).*log(x));Q = quadgk(f,0,1);
在指定公差的半无限区间内积分,并返回近似误差界:
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
使用路点
用分段线性轮廓线绕一极点积分:
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
就像日志|得到|
或|得到|p
为P >= -1/2
。如果函数在内部点是奇异的(a, b)
,将积分写成以奇异点为端点的子区间上的积分和,用quadgk
,并添加结果。
参考文献
[1] L.F.香波”矢量自适应正交的MATLAB®”,计算与应用数学杂志《中国科学》,2008,pp.131-140。