2017年9月4日月曜日

逆行列求めるって、難しいよね、っていう話。

例えば、sqrt(5)*I [ただし、Iは単位行列] の逆行列は、当然ながら (1/sqrt(5))*I である。
ところが、行列のサイズが n = 1000 ぐらいになると、数値計算ではうまく行かないことがある。余因子行列を用いる方法だと行列式が必要であるが、sqrt(5)*I の行列式が Inf になってしまうのである。Matlab なら


>> n = 1000; A = speye(n)*sqrt(5); det(A)
ans =
   Inf

となってしまう。

これが単純に逆行列ならば (1/sqrt(5))*I で処理すればいいので特に問題ないが、主双対内点法で解きたいような問題にこういった構造があったりすると、数値的不安定になったりして、話が非常にヤヤコシイ。


0 件のコメント:

コメントを投稿