AAA Algorithm
Nakatsukasa, Yuji, Olivier Sète, and Lloyd N. Trefethen. The AAA algorithm for rational approximation. SIAM Journal on Scientific Computing 40.3 (2018). https://doi.org/10.1137/16M1106122
AAA(Adaptive Antoulas-Anderson)算法是一种简单但非常有效的构造有理逼近的方法,它只需要目标函数在任意给定点上的取值即可进行计算。因为选取采样点的位置几乎没有限制,这让这种方法具有很强的灵活性,可以在各种复杂的几何区域上对函数进行近似。另一方面,AAA算法是以一种贪心地方式逐渐构造越来越高阶的有理逼近,这让最终得到的AAA逼近可以接近理论上的最佳有理逼近。由于有理逼近相比于多项式逼近更加强力但相对不稳定,特别是数值上容易出现伪极点-零点对,AAA算法设计了特殊的后处理来剔除可疑的极点-零点对,相比于另一常用的Padé逼近更加稳定。鉴于以上优点,AAA算法在目前是最通用的有理逼近构造算法。
给定一个定义在某一区域
AAA算法的基本想法是先在考虑的区域
当选定了支持点集合
算法简介
AAA算法的每次迭代中有两个核心操作:选取新的支撑点和更新插值权重。
选取支撑点 假设在前
由于
更新权重 在选定了新的支撑点
为了保证上面的优化问题有意义,我们要求
记
那么之前的优化问题就等价于
所以
算法的最后一步是检查当前逼近函数在全体采样点集
下面是AAA算法的伪代码实现:
AAA Algorithm
Problem:
Construct a rational approximation of function
Input:
Z = vector of sample points
F = f(Z), vector of date value on sample points
Output: AAA approximant to f
For m=1:mmax
Let
Construct the
Take the weight
Construct the rational approximation
Check max error at sample points, break if error is small enough.
End
Return barycentric form rational approximant
最后,由于舍入误差的存在,AAA算法得到的逼近函数可能会包含一些伪极点-零点对,这些对在数值上非常接近但并不是真正的极点-零点对。为了剔除这些伪极点-零点对,AAA算法设计了一个后处理步骤,即计算最后得到的有理函数的所有极点对应的留数,找到所有留数接近机器精度的极点并剔除支撑点中最接近这些极点的那个点,重新计算权重并构造新的逼近函数。这个后处理步骤可以显著提高AAA算法的数值稳定性,使得最终得到的逼近函数更加可靠。
数值示例
AAA算法可以逼近多种函数,包括性质良好的解析函数,或者具有邻近分支点的解析函数,甚至是区域中包含极点的亚纯函数以及定义在不连通区域上的函数或无界区域上的函数。这里只给出一个值得特别关注的数值例子。
考虑使用AAA算法对函数
另外一点值得特别指出的是,对于一个给定的区域
如果希望在区域内部也得到误差的控制,最自然的方法是将区域内部的点也加入到采样点集
关于使用AAA算法的更多细节和应用示例,参考Chebfun的AAA示例文档与综述文章Applications of AAA rational approximation。
- Title: AAA Algorithm
- Author: Gypsophila
- Created at : 2026-03-12 00:00:00
- Updated at : 2026-03-12 22:29:54
- Link: https://chenx.space/2026/03/12/AAA/
- License: This work is licensed under CC BY-NC-SA 4.0.