integral
数值积分
说明
示例
广义积分
下限的奇异性
创建函数 。
fun = @(x)log(x);
使用默认误差容限计算 x=0
至 x=1
的积分。
format long
q1 = integral(fun,0,1)
q1 = -1.000000010959678
再次计算积分,这次使用 12 位小数精度。将 RelTol
设置为零,以便 integral
仅尝试满足绝对误差容限。
q2 = integral(fun,0,1,'RelTol',0,'AbsTol',1e-12)
q2 = -1.000000000000010
使用路点执行复围道积分
创建函数 。
fun = @(z) 1./(2*z-1);
通过指定路点,在复平面中从 0
至 1+1i
到 1-1i
至 0
的三角形路径上计算积分。
q = integral(fun,0,0,'Waypoints',[1+1i,1-1i])
q = 0.0000 - 3.1416i
向量值函数
创建向量值函数 并求 x=0
到 x=1
的积分。指定 'ArrayValued',true
以便计算数组值或向量值函数的积分。
fun = @(x)sin((1:5)*x);
q = integral(fun,0,1,'ArrayValued',true)
q = 1×5
0.4597 0.7081 0.6633 0.4134 0.1433
Oscillatory 函数的广义积分
创建函数 。
fun = @(x)x.^5.*exp(-x).*sin(x);
计算从 x=0
至 x=Inf
的积分,并调整绝对误差和相对误差。
format long q = integral(fun,0,Inf,'RelTol',1e-8,'AbsTol',1e-13)
q = -14.999999999998360
输入参数
fun
— 被积函数
函数句柄
被积函数,指定为函数句柄,用于定义求 xmin
至 xmax
的积分的函数。
对于标量值问题,函数 y = fun(x)
必须接受向量参量 x
,并返回向量结果 y
。这通常意味着 fun
必须使用数组运算符而不是矩阵运算符。例如,使用 .*
(times
) 而不是 *
(mtimes
)。如果将 'ArrayValued'
选项设置为 true
,fun
必须接受标量并返回固定大小的数组。
xmin
— x 的下限
实数 | 复数
x 的下限,指定为实数(有限或无限)标量值或复数(有限)标量值。如果 xmin
或 xmax
为复数,integral
在 xmin
至 xmax
之间沿直线路径逼近路径积分。
数据类型: double
| single
复数支持: 是
xmax
— x 的上限
实数 | 复数
x 的上限,指定为实数(有限或无限)或复数(有限)。如果 xmin
或 xmax
为复数,integral
在 xmin
至 xmax
之间沿直线路径逼近路径积分。
数据类型: double
| single
复数支持: 是
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: integral(fun,a,b,'AbsTol',1e-12)
将绝对误差容限设置为约 12 位小数精度。
AbsTol
— 绝对误差容限
1e-10
(默认) | 非负实数
绝对误差容限,指定为由 'AbsTol'
和非负实数组成的逗号分隔对组。integral
使用绝对误差容限来限制绝对误差容限估计值,即 |q – Q|,其中 q 为计算的积分值,Q 为(未知)确切值。如果减小绝对误差容限,integral
可以提供更多位小数的精度。
注意
AbsTol
和 RelTol
配合使用。integral
可满足绝对误差容限或相对误差容限(但不一定同时满足两者)。有关使用这些误差容限的详细信息,请参阅提示一节。
示例: integral(fun,a,b,'AbsTol',1e-12)
将绝对误差容限设置为约 12 位小数精度。
数据类型: single
| double
RelTol
— 相对误差容限
1e-6
(默认) | 非负实数
相对误差容限,指定为由 'RelTol'
和非负实数组成的逗号分隔对组。integral
使用相对误差容限来限制相对误差容限估计值,即 |q – Q|/|Q|,其中 q 为计算的积分值,Q 为(未知)确切值。如果减小相对误差容限,integral
可以为精度提供更多的有效数位。
注意
RelTol
和 AbsTol
配合使用。integral
可满足相对误差容限或绝对误差容限(但不一定同时满足两者)。有关使用这些误差容限的详细信息,请参阅提示一节。
示例: integral(fun,a,b,'RelTol',1e-9)
将相对误差容限设置为约 9 位有效数位。
数据类型: single
| double
ArrayValued
— 数组值函数标志
false
或 0
(默认) | true
或 1
数组值函数标志,指定为以逗号分隔的对组,其中包含 'ArrayValued'
和数值或逻辑值 1
(true
) 或 0
(false
)。将该标志设为 true
或 1
,以指示 fun
是接受标量输入并返回向量、矩阵或 N 维数组输出的函数。
false
的默认值指示 fun
是一个接受向量输入并返回向量输出的函数。
示例: integral(fun,a,b,'ArrayValued',true)
表示被积函数是数组值函数。
Waypoints
— 积分路点
向量
积分路点,指定为由 'Waypoints'
和实数/复数的向量组成的逗号分隔对组。使用路点表示积分器将在初始网格中使用的积分区间中的点。
在关注的函数特征附近添加更多计算点,例如局部极值。
通过指定不连续点的位置,在被积函数的不连续点附近高效求积分。
通过指定复数作为路点来执行复围道积分。如果
xmin
、xmax
或任何路点向量项为复数,则会在复平面中针对直线路径序列求积分。在本例中,所有积分范围和路点必须为有限值。
请勿使用路点指定奇异点。而应拆分区间,并在端点处将单独的积分结果与奇异点相加。
示例: integral(fun,a,b,'Waypoints',[1+1i,1-1i])
指定了积分区间中的两个复数路点。
数据类型: single
| double
复数支持: 是
提示
integral
函数尝试满足:其中abs(q - Q) <= max(AbsTol,RelTol*abs(q))
q
为计算的积分值,Q
为(未知)确切值。绝对和相对误差提供了一种在准确性和计算时间之间权衡的方法。相对误差通常确定积分的准确性。但是,如果abs(q)
足够小,绝对误差会确定积分的准确性。您通常应同时指定绝对误差和相对误差。如果为积分指定了单精度范围,或者如果
fun
返回单精度结果,您可能需要指定较大的绝对误差容限和相对误差容限。
参考
[1] L.F. Shampine “Vectorized Adaptive Quadrature in MATLAB®,” Journal of Computational and Applied Mathematics, 211, 2008, pp.131–140.
扩展功能
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
用法说明和限制:
必须启用对可变大小数组的支持。
integral
函数不支持返回稀疏矩阵输出的函数句柄。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
版本历史记录
在 R2012a 中推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)