主要内容

quadgk

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

描述

例子

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

例子

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

例子

___) = 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求积分值,并指定两个输出,以检查满足误差公差的程度。

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

警告信息指示如何调整MaxIntervalCount允许在解决方案过程中进行另一次迭代。

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

[Q, errbnd] = quadgk(有趣,0,π,“MaxIntervalCount”1 e5)
Q = 1.6656 e-06
errbnd = 2.6323 e-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,…,的家

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

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

quadgk试图满足

errbnd < = max (AbsTol RelTol * abs (q))
这种关系是绝对误差控制时的q | |何时能控制足够小的相对误差q | |比较大。对于纯粹的绝对误差控制,使用“AbsTol”> 0“RelTol”= 0.用于纯相对误差控制“RelTol”> 0“AbsTol”= 0.除采用纯绝对误差控制外,最小相对误差为“RelTol”> = 100 * eps(类(q))

例子:quadgk(有趣,a、b AbsTol, 1 e-12)将绝对误差公差设置为大约12位小数的精度。

例子:quadgk(有趣,a、b AbsTol,托尔,“RelTol”,0)使用绝对误差控制,这是必须的errbnd < =托尔

数据类型:|

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

quadgk试图满足

errbnd < = max (AbsTol RelTol * abs (q))
这种关系是绝对误差控制时的q | |何时能控制足够小的相对误差q | |比较大。对于纯粹的绝对误差控制,使用“AbsTol”> 0“RelTol”= 0.用于纯相对误差控制“RelTol”> 0“AbsTol”= 0.除采用纯绝对误差控制外,最小相对误差为“RelTol”> = 100 * eps(类(q))

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

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

数据类型:|

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

  • 在函数有趣的特性附近添加更多的计算点,比如局部极值。

  • 通过指定间断点的位置,有效地跨越被积函数的间断点进行积分。

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

不要使用路径点来指定奇点。相反,将区间分割,并将端点处的奇异点单独积分的结果相加。

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

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

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

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

输出参数

全部折叠

整数的值,作为标量返回。

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

errbnd < = max (AbsTol RelTol * abs (q))
指定此输出参数以查看集成如何满足AbsTolRelTol错误的公差。在这种情况下,errbnd接近期望值,可以通过增加?的值来达到期望值MaxIntervalCount

提示

  • quadgk积分用的是相同的积分方法。一般应该使用积分而不是quadgk.但是,你可以使用quadgk:

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

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

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

  • 如果区间是无限的, 一个 ,然后求积分有趣的(x)存在,有趣的(x)必须衰变x趋于无穷时,quadgk要求它迅速腐烂。

参考文献

[1] Shampine L.F.MATLAB中的矢量自适应求积®."计算与应用数学学报.《自然》,2008年第11卷,第131 - 140页。

扩展功能

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

介绍了R2007b