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 之前推出