从一个模拟问题,我想在 MATLAB 中计算 1000x1000 的复杂方阵。由于这些值是指贝塞尔函数的值,因此矩阵一点也不稀疏。
由于我对行列式相对于某些参数(在我的情况下搜索的特征函数的能量)的变化感兴趣,因此我通过首先搜索所研究范围的重新缩放因子然后计算行列式来克服目前的问题,
result(k) = det(pre_factor*Matrix{k});
现在这是一个非常尴尬的解决方案,仅适用于最大 500x500 的矩阵尺寸。
有人知道这个问题的一个很好的解决方案吗?与 Mathematica 的接口原则上可能有效,但我对可行性表示怀疑。先感谢您
罗伯特
编辑:我没有找到计算问题的方便解决方案,因为这需要更改为更高的精度。相反,我用那个
ln det M = trace ln M
也就是说,当我对 k 进行推导时
A = trace(inv(M(k))*dM/dk)
所以我至少有关于k的行列式的对数的变化。从问题的物理背景,我可以得出对 A 的约束,这最终给了我一个对我的问题有效的解决方法。不幸的是,我不知道这种解决方法是否可以推广。