シミュレーションの問題から、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の制約を導き出すことができ、最終的には問題に有効な回避策が得られました。残念ながら、そのような回避策を一般化できるかどうかはわかりません。