【发布时间】:2010-12-19 02:01:34
【问题描述】:
我正在尝试为 Python 编写 Wilson 的谱密度分解算法 [1] 的实现。该算法迭代地将 [QxQ] 矩阵函数分解为其平方根(它是对谱密度矩阵的 Newton-Raphson 平方根查找器的一种扩展)。
问题是我的实现只收敛于大小为 45x45 或更小的矩阵。所以经过 20 次迭代后,矩阵之间的平方和差约为 2.45e-13。但是,如果我输入大小为 46x46 的输入,它直到第 100 次左右迭代才会收敛。对于 47x47 或更大,矩阵永远不会收敛;误差在 100 到 1000 之间波动大约 100 次迭代,然后开始快速增长。
您将如何尝试调试这样的事情?似乎没有任何具体的疯狂点,而且矩阵太大,我无法真正尝试手动进行计算。有没有人有提示/教程/启发式来找到像这样奇怪的数字错误?
我以前从未处理过这样的事情,但我希望你们中的一些人...
谢谢, - 丹
[1] G.T.威尔逊。 “矩阵谱密度的分解”。 SIAM J. 应用程序。数学(第 23 卷,第 4 期,1972 年 12 月)
【问题讨论】:
-
“只收敛于 45x45 大小的矩阵”是什么意思?小于 45x45 的矩阵也会失败吗?
-
不,抱歉,将编辑帖子。它成功收敛于 45x45 或更小的尺寸
标签: python matrix scipy numerical-stability spectral-density