主要内容

quadgk

数值计算积分-高斯-克朗罗德积分

描述

例子

= quadgk (有趣的一个b集成函数句柄有趣的一个b采用高阶全局自适应正交和默认容错。

例子

errbnd= quadgk(有趣的一个b另外返回绝对误差的近似上界|q - I|,在那里就是积分的确切值。

例子

___= quadgk(有趣的一个b名称,值使用前面的输出参数组合指定具有一个或多个名称-值对参数的其他选项。例如,指定“锚点”后面跟着实数或复数向量,以指示积分器使用的特定点。

例子

全部折叠

求积分

0 1 e x ln x dx

这个积分在这一点上有一个奇点 x 0 因为 ln 0 发散, -

为被积函数创建一个匿名函数。的日志函数计算 ln x

F = @(x) exp(x).*log(x);

集成f从0到1。

Q = quadgk(f,0,1)
Q = -1.3179

通过指定等高线,围绕一个极点积分一个复函数。

求复杂轮廓积分

dz 2 z - 1

被积函数有一个单极 z 1 / 2 ,所以使用一个矩形轮廓来包围这个点。等高线开始和结束于 x 1 在实数轴上。使用“锚点”名称-值对,用于指定轮廓线中的分段分段。

F = @(z) 1 /(2.*z-1);Contour_segments = [1+1i 0+1i 0-1i 1-1i];Q = quadgk(f,1,1,“锚点”contour_segments)
Q = -0.0000 + 3.1416i

使用quadgk求一个难以求的振荡被积函数。

求积分

0 π 20000 π x dx

被积函数振荡很快,所以很难求值。使用quadgk计算积分,并指定两个输出,以检查误差容错的接近程度。

Fun = @(x) sin(2e4*pi*x);[Q,errbnd] = quadgk(fun,0,pi)
警告:已达到使用的最大间隔数的限制。误差的近似边界是5.7e-01。这个积分可能不存在,或者很难用数值来近似。将MaxIntervalCount增加到1272,以允许QUADGK继续进行另一个迭代。
Q = -0.0082
Errbnd = 0.5723

警告提示如何调整MaxIntervalCount允许在求解过程中进行另一次迭代。

再解一次积分,但要指定MaxIntervalCount作为1 e5.有了更多的间隔,quadgk能够满足问题的绝对容错(1平台以及对于双重精度)。

[Q,errbnd] = quadgk(fun,0,pi,“MaxIntervalCount”1 e5)
Q = 1.6656e-06
Errbnd = 2.6323e-12

输入参数

全部折叠

被积函数,指定为一个函数句柄,它定义了要从其进行积分的函数一个b

对于标量值问题,函数Y =乐趣(x)必须接受向量参数x并返回一个向量结果y,在那里y被积函数是否在的每个元素处求值x.这个要求通常意味着有趣的必须使用数组操作符(.^.*,…)而不是矩阵运算符(,……)。

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

例子:Q = quadgk(@(x) exp(1-x.^2),a,b)集成匿名函数句柄。

例子:q = quadgk(@myFun,a,b)集成功能myFun,保存为文件。

数据类型:function_handle

集成限制,指定为实或复标量的单独参数。的限制一个而且b可以.如果两者都是有限的,它们可能是复杂的。如果至少有一个是复数的,积分在直线路径上近似一个b在复平面上。

例子:quadgk(有趣,0,1)集成了有趣的01

数据类型:|
复数支持:金宝app是的

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:q = quadgk(fun,a,b,'Waypoints',[0.1 1.1 2.1])使用“锚点”选项,用于指定被积函数应计算的几个感兴趣的点。

绝对容错,指定为由逗号分隔的对组成“AbsTol”一个非负实数。quadgk使用绝对容错来限制绝对误差的估计,|q - I|,在那里积分的计算值是和吗是(未知的)确切值。quadgk如果降低绝对容错,可能会提供更多的小数点后精度。

quadgk试图满足

errbnd <= max(AbsTol,RelTol*abs(q))
这种关系是绝对误差控制时q | |当误差控制足够小和相对时q | |比较大。对于纯绝对误差控制,使用AbsTol > 0而且“RelTol”= 0.用于纯相对误差控制'RelTol' > 0而且'AbsTol' = 0.除使用纯绝对误差控制外,最小相对公差为'RelTol' >= 100*eps(class(q))

例子:quadgk(有趣,a、b AbsTol, 1 e-12)将绝对容错设置为精确的大约12位小数点后数位。

例子:quadgk(有趣,a、b AbsTol,托尔,“RelTol”,0)使用一个纯粹的绝对错误控制,要求Errbnd <= tol

数据类型:|

相对容错,指定为逗号分隔的对,由“RelTol”一个非负实数。quadgk使用相对容错来限制相对误差的估计,|q - I|/|I|,在那里积分的计算值是和吗是(未知的)确切值。quadgk如果降低相对容错,可能会提供更高的有效位数的精度。

quadgk试图满足

errbnd <= max(AbsTol,RelTol*abs(q))
这种关系是绝对误差控制时q | |当误差控制足够小和相对时q | |比较大。对于纯绝对误差控制,使用AbsTol > 0而且“RelTol”= 0.用于纯相对误差控制'RelTol' > 0而且'AbsTol' = 0.除使用纯绝对误差控制外,最小相对公差为'RelTol' >= 100*eps(class(q))

例子:quadgk(有趣,a、b RelTol, 1 e-9)将相对容错设置为大约9位有效数字。

例子:quadgk(有趣,a、b“AbsTol”,0,RelTol, tol)使用纯相对容错,这是必需的errbnd <= |I|*tol

数据类型:|

集成路径点,指定为逗号分隔的对,由“锚点”一个实数或复数向量。使用路径点来指示积分区间中你希望积分器在初始网格中使用的点:

  • 在函数感兴趣的特性(如局部极值)附近添加更多的计算点。

  • 通过指定不连续点的位置,有效地对被积函数的不连续点进行积分。

  • 通过指定复数作为路径点来执行复杂轮廓积分。如果xminxmax,或路径点向量的任意入口为复平面,则在复平面上的直线路径序列上进行积分。在这种情况下,所有的积分极限和路径点都必须是有限的。

不要使用路径点来指定奇点。相反,分割区间,并将不同积分的结果与端点上的奇点相加。

例子:“锚点”,[1 + 1我1-1i]指定沿积分区间的两个复路径点。

数据类型:|
复数支持:金宝app是的

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

例子:quadgk(有趣,a、b MaxIntervalCount, 700)

输出参数

全部折叠

积分的值,作为标量返回。

绝对误差的近似上界,作为标量返回。积分中绝对误差的近似上界为errbnd = |q - I|,在那里积分的计算值是和吗是(未知的)确切值。quadgk试图满足

errbnd <= max(AbsTol,RelTol*abs(q))
指定此输出参数以查看集成在多大程度上满足AbsTol而且RelTol错误的公差。在以下情况下errbnd是否接近于期望值,则可以通过增加值来达到期望值MaxIntervalCount

提示

  • quadgk而且积分使用本质上相同的积分方法。你通常应该使用积分而不是quadgk.但是,您可以使用quadgk:

    • 监测溶液的准确性errbnd输出参数。

    • 为指定一个大值MaxIntervalCount积分警告达到最大间隔数。

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

  • 如果区间是无限的, 一个 的积分有趣的(x)存在,有趣的(x)一定会腐烂x趋于无穷,并且quadgk要求它迅速腐烂。

参考文献

[1]香波,L.F.“矢量化自适应正交的MATLAB®."计算与应用数学杂志.Vol. 211, 2008, pp.131-140。

扩展功能

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

版本历史

在R2007b中引入