我正在尝试编写Python版本的Wilson谱密度因式分解算法[1]。该算法将一个[QxQ]矩阵函数迭代地分解为其平方根(类似于牛顿-拉夫逊求解谱密度矩阵的扩展)。
问题是我的实现只能收敛于45x45或更小的矩阵大小。因此,在20次迭代后,矩阵之间的平方差之和约为2.45e-13。但是,如果输入大小为46x46,则需要大约100次迭代才能收敛。对于47x47或更大的矩阵,矩阵永远不会收敛;误差在约100次迭代中波动在100到1000之间,然后开始迅速增长。
您会如何尝试调试这样的问题?似乎没有任何特定的点使它变得疯狂,而且矩阵太大了,我无法手动进行计算。是否有人有关于发现此类奇怪数字错误的提示/教程/启发?
我以前从未处理过这样的事情,但我希望你们中的一些人可以...
谢谢, - 丹
[1] G.T.威尔逊。 "Matricial Spectral Densities的分解"。 SIAM J. Appl. Math(Vol 23,No.4,Dec.1972)
问题是我的实现只能收敛于45x45或更小的矩阵大小。因此,在20次迭代后,矩阵之间的平方差之和约为2.45e-13。但是,如果输入大小为46x46,则需要大约100次迭代才能收敛。对于47x47或更大的矩阵,矩阵永远不会收敛;误差在约100次迭代中波动在100到1000之间,然后开始迅速增长。
您会如何尝试调试这样的问题?似乎没有任何特定的点使它变得疯狂,而且矩阵太大了,我无法手动进行计算。是否有人有关于发现此类奇怪数字错误的提示/教程/启发?
我以前从未处理过这样的事情,但我希望你们中的一些人可以...
谢谢, - 丹
[1] G.T.威尔逊。 "Matricial Spectral Densities的分解"。 SIAM J. Appl. Math(Vol 23,No.4,Dec.1972)