# ty_quad
(不推荐)以自适应 Simpson 积分法计算数值积分
函数库: TyMath
提示
不建议使用 ty_quad。请改用 ty_integral。
# 语法
q,funcEvals = ty_quad(fun,a,b)
q,funcEvals = ty_quad(fun,a,b,tol)
q,funcEvals = ty_quad(fun,a,b,trace)
# 说明
q,funcEvals = ty_quad(fun,a,b) 使用递归自适应 Simpson 积分法逼近函数 fun 从 a 到 b 的积分,并返回函数计算次数 fcnEvals。示例
q,funcEvals = ty_quad(fun,a,b,tol) 为每个子区间指定绝对误差容限 tol,而不是使用默认值 1e-6。
q,funcEvals = ty_quad(fun,a,b,tol,trace) 打开诊断信息的显示。当 trace 为 true时,ty_quad 显示递归期间值 fcnEvals, a, b-a, Q 的向量。trace 默认为 false。
# 示例
计算定积分
计算积分
首先,创建一个用于计算被积函数的函数 myfun。
using TyMath
myfun = x -> 1/(x^3-2*x-5)
现在使用 ty_quad 计算积分。使用第二个和第三个输入参数指定积分范围。
q, = ty_quad(myfun,0,2)
q = -0.46050173974249153
# 输入参数
fun - 被积函数函数句柄
被积函数,指定为函数句柄,用于定义求 a 至 b 的积分的函数。
对于标量值问题,函数 y = fun(x) 必须接受标量参数 x 并返回标量结果 y,其中 y 是被积函数在 x 处的计算结果。
示例: q = ty_quad(x->exp(1-x^2),a,b) 对函数句柄进行积分。
数据类型: 句柄函数
a,b - 积分范围(以两个参数指定)标量
积分范围,指定为单独的标量参数。范围 a 和 b 必须是有限的。
示例: ty_quad(fun,0,1) 从 0 到 1 对 fun 进行积分。
数据类型: Int | Float
tol - 绝对误差容限1e-6(默认) | 标量
绝对误差容限,指定为标量。ty_quad 对积分中每个子区间使用绝对误差容限。随着 tol 量级的增大,ty_quad 执行的函数计算越来越少,完成计算的速度越来越快,但产生的结果越来越不精确。
示例: ty_quad(fun,a,b,1e-12) 将绝对误差容限设置为 1e-12。
数据类型: Int | Float
trace - 切换诊断信息false(默认) | true
切换诊断信息,指定为逻辑值。当 trace 为 true 时,ty_quad 显示递归中每个子区间的值 fcnEvals, a, b-a, Q 组成的向量:
fcnEvals 给出函数计算的次数;
a 和 b 是积分的范围;
Q 是子区间的计算面积。
示例: ty_quad(fun,a,b,1e-8,true) 计算 fun 从 a 到 b 的积分,容差为 1e-8,并且启用诊断信息。
数据类型: Bool
# 输出参数
q - 积分的值标量
积分的值,以标量形式返回。
数据类型: Int | Float
fcnEvals - 函数计算次数标量
函数计算次数,以标量形式返回。
数据类型: Int
# 算法
ty_quad 使用自适应递归 Simpson 积分法则实现低阶求积方法。
# 参考文献
[1] Gander, W. and W. Gautschi, “Adaptive Quadrature – Revisited,” BIT, Vol. 40, 2000, pp. 84-101. This document is also available at https://www.inf.ethz.ch/personal/gander.
# 另请参阅
quad2d | quadgk | trapz | ty_integral | integral2 | integral3