我一直有这个问题(即使听起来很模糊),但在我的数值分析课程中,我们总是学习如何分析和优化代码。然而,由于大多数线性代数库(即 LAPACK、BLAS 等)自 1980 年代以来一直由专业开发人员不断优化,我质疑让我们写下算法并运行它们的目的是什么。例如,当已经有内置函数 ( eig
) 时,我们不得不在 MATLAB 中编写 QR 迭代算法。是否存在特殊情况,这些内置函数会因数值不稳定性而导致自定义算法的性能优于它们?
更新:我要感谢大家有趣的答案和评论,我已经阅读了所有内容。
我还意识到这个非常狭窄的数学领域的美妙之处,它在我们的工作中有着深远的应用。这些数学家和计算机科学家为使这些代码更强大而付出的努力使我们(那些正在学习他们的理论的人)变得美丽,这样我们就可以在学习的同时欣赏它们,并知道何时使用这些优化的构建-in 函数。当我们写下 15 行代码来计算某个矩阵的 Householder QR 分解时,我只能想知道内置函数有多少行代码(可能是 100 行),这样它才能在我们的计算中为我们提供最好的服务在现实生活中的应用。qr()