Main Content

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 积分法求取复数数组值函数 funab 的近似积分,误差小于 1.e-6fun 是函数句柄。函数 Y = fun(x) 应接受标量参数 x 并返回数组结果 Y,其分量是在 x 处计算的被积函数。范围 ab 必须是有限的。

参数化函数解释了如何为函数 fun 提供其他参数(如果需要)。

Q = quadv(fun,a,b,tol) 对所有积分使用绝对误差容限 tol,代替默认值 1.e-6

注意

它对所有分量使用相同容限,因此使用 quadv 得到的结果与对各个分量应用 quad 所获得的结果不同。

具有非零 traceQ = quadv(fun,a,b,tol,trace) 在递归期间显示 [fcnt a b-a Q(1)] 的值。

[Q,fcnt] = quadv(...) 返回函数计算数。

以下列表包含的信息可以帮助您确定要使用的 MATLAB® 中的求积法函数:

  • quad 函数适用于精确度较低,被积函数平滑性较差的数值积分。

  • 相比 quadl 函数,quad 函数的精确度较高,被积函数也更为平滑。

  • quadgk 函数的精确度最高,会产生震荡被积函数。它支持无限区间并且可以处理端点处的适度奇异性。它还支持沿分段线性路径的围道积分。

  • quadv 函数将数组值 funquad 向量化。

  • 如果区间是无限区间(例如 [a,)),则要存在 fun(x) 的积分,fun(x) 必须在 x 接近无限大时衰减,并且 quadgk 要求它快速衰减。特殊方法应该用于无限区间中的振荡函数,但如果 fun(x) 衰变足够快,则可以使用 quadgk

  • 如果奇异性不太稳固,quadgk 函数将对有限端点处的奇异函数求积分。例如,它将对在端点 c 处的行为与 p >= -1/2log|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 之前推出