假设我有一个实值函数一些变量我想用数字来评估。一般来说,公式为可以包含乘积、有理数、超越函数等,并将长期分析其数值稳定性。或者至少在实践中这样做会很耗时。假设我没有保证稳定性的较短等价物。是否有系统的程序来分析数值稳定性. 我想将其与使用计算机代数系统获得的任意精度结果进行比较。假设该函数将使用标准库函数和单精度或双精度在 C 中实现。我应该比较哪些量来量化有限精度下的近似质量?如何确定变量的临界值?如何选择编译器和编译器优化,以便其他人可以轻松重现结果?...我知道问题设置可能是通用的,以便给出好的答案。但我仍然认为这是计算机科学中的一个常见问题,并且想知道是否有参考文献提出了执行此类分析的标准。
数值稳定性的启发式检查
计算科学
稳定
2021-12-07 02:44:51
3个回答
您正在寻找的是所谓的“自动错误分析”,它是 Higham 的书“数值算法的准确性和稳定性”,第 2 版,SIAM Publishers 的第 26 章的主题。
他描述的一种技术是使用直接搜索优化:尝试将您的问题表述为优化问题并使用优化算法来找到最大化或最小化与您的算法/公式的准确性相关的数量的系数或参数值。他使用了高斯消除中的增长因子示例(什么矩阵使该增长因子最大化)或三次方的根(正如我在您之前的一个问题中回答的那样)。
我建议您获取这本书的副本,阅读介绍性章节和第 26 章以及其中的参考资料。
评估您的函数几次(通常 3 次就足够了),所有输入都略微随机地受到ulp。三个结果的标准偏差将为您提供一个粗略的(但通常足够)数值灵敏度的度量。您可以将其与线性化的预期灵敏度进行比较,并形成商以获得稳定性估计。
请注意,数值稳定性要求评估特定值时的实际误差有多差与更改输入时灵敏度分析的预期误差进行比较超低浓度;以 ulps 表示的后一个错误定义了问题状况。稳定算法的条件可能很差(例如:靠近) 并且对于条件良好的函数(例如:靠近)。
GertVdE 描述的是数值误差。这可能是您正在寻找的,但它与问题标题中所示的数值稳定性不同。数值稳定性本质上是询问输入变量的附近值是否会产生输出的附近值。换句话说,一个公式是否像
保持一些适度的常数. 为此,您可以分析或者,如果您的函数在其域中的属性没有太大变化,只需尝试一下对。
其它你可能感兴趣的问题