
No.2ベストアンサー
- 回答日時:
逆行列を求めるC++のソースが置いています。
http://www.doumo.jp/modules/general/CMatrix.html
n元1次連立方程式を解くアプリもあります。
http://www.doumo.jp/mysoft/index.html
No.6
- 回答日時:
#4さんのお礼に対して・・・
Ax=bという方程式を解くのに
A^(T)Ax=A^(T)b
という方程式を解くと考えれば、対称行列になりますよ。
(A^(T)は行列Aの転置)
でも確かにLU分解を使うのも手かも。
No.5
- 回答日時:
逆行列を求める目的はなんでしょうか.
以下は,
連立方程式の解法ということで仮定します.
ちょっと横道にそれますが,
現代では,100元,200元というのはそれほど
大きなものではないですね.
何万という連立方程式もあります.
一番の問題は,計算を高速化するために,
連立方程式を通常は「対角項を強くする」といいますか,対角の付近に数値が大きく出るように工夫するのです.そうすれば,そのぶぶんだけメモリにいれておけるので,めもりも節約できますし,計算も速くなります.
ところがせっかく,対角付近の強い行列を作っても,その逆行列は,その性質が遺伝しません.
いわゆる「フルマトリックス」と言って,全体にまんべんなく数値の出るマトリックス(行列)となります.
このような行列は,メモリにも全体を格納しなくてはならないし,計算スピードも遅くなります.
だから,逆行列を直接求めることは普通せず,
「LU分解」とか「コレスキー分解」「LDLT分解」といって,
元の行列を性質のよくわかるいくつかの行列に分解しておくことがよく行われます.
この手法だと,一度分解しておけば,逆行列と同じ計算回数で解を求めることが出来ます.
もしも,ご興味があれば,上記ワードで検索してみたらいかがですか.
この回答へのお礼
お礼日時:2004/06/21 21:41
回答ありがとうございます。
連立方程式を解く目的が暗号化/複合化で、性質上完全ランダムな値が全体的に出てくることになります。
こういう状態では上にあるような分解での速度やメモリの改善はあまり期待できないと言うことでしょうか?
No.3
- 回答日時:
#1のYanYasさんがご紹介されたソースはPascal言語で書かれています。
#2のsha-girlさんのC++は手続きがカプセル化されているので使い勝手がいいと思います。>逆行列を求めるプログラムを作りたい
ということであれば、下記サイトのC言語の基礎から逆行列(ただし正則行列のみ)の解説をはじめ、それを求めるプログラムまで書かれているので一度覗かれてはいかがでしょうか。
http://akita-nct.jp/~yamamoto/lecture/2003/5E/
↓
ガウス・ジョルダン法のプログラミング解説(ここに逆行列のプログラムがある)。
参考URL:http://akita-nct.jp/~yamamoto/lecture/2003/5E/le …
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
高校数学で教わる行列っていっ...
-
5
行列の平方根?のようなもの
-
6
行列式計算で答が二通りでてしまう
-
7
行列の消去法のコツなど教えて...
-
8
3行3列の逆行列(ルートを含む)
-
9
単因子の計算問題
-
10
[☆急いでます!!☆] 基本変形の解...
-
11
拡散方程式の陰解法
-
12
基本行列の積
-
13
行列と行列式の違いは?
-
14
行列の指数関数
-
15
数値解析について
-
16
直交補空間の問題が分かりませ...
-
17
零因子(右零因子、左零因子)に...
-
18
行列式って何に使ってるんですか。
-
19
レオンチェフの逆行列について...
-
20
平面上で原点を中心に30°回転を...
おすすめ情報
公式facebook
公式twitter