quadv
(不推荐)向量化积分
不推荐使用 quadv
。请改用 integral
和 'ArrayValued'
选项。
语法
Q = quadv(fun,a,b)
Q = quadv(fun,a,b,tol)
Q = quadv(fun,a,b,tol,trace)
[Q,fcnt] = quadv(...)
说明
Q = quadv(fun,a,b)
使用递归自适应 Simpson 积分法求取复数数组值函数 fun
从 a
到 b
的近似积分,误差小于 1.e-6
。fun
是函数句柄。函数 Y = fun(x)
应接受标量参数 x
并返回数组结果 Y
,其分量是在 x
处计算的被积函数。范围 a
和 b
必须是有限的。
参数化函数解释了如何为函数 fun
提供其他参数(如果需要)。
Q = quadv(fun,a,b,tol)
对所有积分使用绝对误差容限 tol
,代替默认值 1.e-6
。
注意
它对所有分量使用相同容限,因此使用 quadv
得到的结果与对各个分量应用 quad
所获得的结果不同。
具有非零 trace
的 Q = quadv(fun,a,b,tol,trace)
在递归期间显示 [fcnt a b-a Q(1)]
的值。
[Q,fcnt] = quadv(...)
返回函数计算数。
以下列表包含的信息可以帮助您确定要使用的 MATLAB® 中的求积法函数:
quad
函数适用于精确度较低,被积函数平滑性较差的数值积分。相比
quadl
函数,quad
函数的精确度较高,被积函数也更为平滑。quadgk
函数的精确度最高,会产生震荡被积函数。它支持无限区间并且可以处理端点处的适度奇异性。它还支持沿分段线性路径的围道积分。quadv
函数将数组值fun
的quad
向量化。如果区间是无限区间(例如 ),则要存在
fun(x)
的积分,fun(x)
必须在x
接近无限大时衰减,并且quadgk
要求它快速衰减。特殊方法应该用于无限区间中的振荡函数,但如果fun(x)
衰变足够快,则可以使用quadgk
。如果奇异性不太稳固,
quadgk
函数将对有限端点处的奇异函数求积分。例如,它将对在端点c
处的行为与p >= -1/2
的log|x-c|
或|x-c|p
类似的函数求积分。如果函数在(a,b)
内的各点是奇异函数,则在奇异点为端点的子区间上将积分写入为积分和,通过quadgk
计算它们,并将结果相加。
示例
对于参数化的数组值函数 myarrayfun
,做如下定义
function Y = myarrayfun(x,n) Y = 1./((1:n)+x);
以下命令为介于 a = 0 和 b = 1 之间的参数值 n = 10 对 myarrayfun
求积分:
Qv = quadv(@(x)myarrayfun(x,10),0,1);
生成的数组 Qv
包含 10 个元素,当 k = 1:10
时,估算 Q(k) = log((k+1)./(k))
。
Qv
中的条目与在循环中使用 quad
计算积分的条目稍有不同:
for k = 1:10 Qs(k) = quadv(@(x)myscalarfun(x,k),0,1); end
其中,myscalarfun
为:
function y = myscalarfun(x,k) y = 1./(k+x);
版本历史记录
在 R2006a 之前推出