データの精度が異なる6x6行列を使用しています。MATLABでその行列を逆にしようとすると、通常、Inf
またはNaN
すべてのデータが取得され、MATLABが警告をスローします。
マトリックスは、作業精度に対して特異です。
それを避けて適切な結果を得る方法はありますか?
データの精度が異なる6x6行列を使用しています。MATLABでその行列を逆にしようとすると、通常、Inf
またはNaN
すべてのデータが取得され、MATLABが警告をスローします。
マトリックスは、作業精度に対して特異です。
それを避けて適切な結果を得る方法はありますか?
マトリックスのランクが不足しているようです。フルランクの行列のみを確実に反転できます。
元の単位行列に小さな単位行列を追加することで、問題を回避できます。
A = rand(6,5);
A = A*A'; %' symmetric rank 5 matrix
iA = inv(A); % results with NaNs and infs A is singular
iAs = inv( A + eye(6)*1e-3 ); % add small (1e-3) elements to diagonal - this should help