• ベストアンサー

C++行列計算プログラム

C++を利用して逆行列(10×10などの大きな行列)を求める計算のプログラムを作りたいのですが、うまくできません。 どのように作ればいいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#6694
noname#6694
回答No.2

#1の追加です。 C言語で書かれた『C言語による最新アルゴリズム事典』(奥村晴彦著,技術評論社)という本があって、その中にGaussのはきだし法やLU分解などのアルゴリズムが説明されています。 ソースコードについては以下のアドレスからFTPで入手可能です。 後はそのソースコードを自分の目的に合わせて変更してください。

参考URL:
http://www.matsusaka-u.ac.jp/~okumura/algo/

その他の回答 (1)

noname#6694
noname#6694
回答No.1

どの部分がうまくできないのでしょう? アルゴリズムですか? それとも具体的なコーディングの段階でしょうか? 逆行列の求め方でしたら,LU分解などいろいろありますが,逆行列の求め方は,数値計算法の本に詳しいアルゴリズムがいくつか載っているので参考にされてはどうでしょうか。 もう少し詳細を書いていただいた方が答えやすくなります。

frontmax
質問者

補足

アルゴリズムですかね?ただ、手計算では大変なのでプログラムでできないかと考えたので(プログラムは専門ではないので)、よくわからないのです。 逆行列や行列式、掛け算、擬似逆行列、内積なんかも計算したのです。 プログラム例のあるホームページがないでしょうか?

関連するQ&A

  • 行列計算のプログラム

    行列計算のプログラムを作りたいのですが,上手く出来ません. 簡単なものでいいので,どなたか教えていただけませんか?

  • 教えてください! 行列式の計算プログラム

    FORTRANで「4次の行列式の計算」 を行うプログラムを作りたいのですが、 どのようにすればよいか良く分かりません。 プログラム例または参考ホームページを教えていただけると嬉しいです。 よろしくお願いします。

  • BASICのプログラムで行列式の積の計算をしたいのですが…

    BASICのプログラムで「行列式の積」の計算をしたいのですが…どのようにして行ったらよいか分かりません。あいにく、大学の図書館が閉まってしまい、調べる事もできない状態で困っています。一例として、3行3列の行列式の積の計算をする方法のプログラムを教えてください。 後、計算結果がどのように表示されるかも教えていただけると嬉しいです。

  • 行列の計算について。

    こんにちは。 JAVAで行列の計算をするプログラムを作っていますが、なかなかうまくいきません。 自分で考えたのはfor文を使った物です。行列数を入力するとその数だけの行列を作る、という物なのですが、どうもうまくいきません。 「2」を入力すると、 │1 2││5 6│ │   ││   │ │3 4││7 8│ こんな2行2列の行列の計算をする、というものです。 for (int i =0; i < 2; i++){ for (int j = 0; j<2; j++){ for (int k = 0; k<2; k++){ C[i][j]=C[i][j]+a[i][k]*b[k][j]; } } } 上のようなプログラムを考えました。 JAVAには行列の計算をする専用の関数(クラス?)などあるのでしょうか? また、ソースなど教えていただけると、とても助かります。 CからJAVAに急に移ったので、つまづくことが非常に多いです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • cのプログラミングで虚数を含む行列の計算の考え方がわかりません

    cのプログラミングで行列の積を計算するものまではできたのですが、その行列の中に虚数を含むものの考え方がよくわかりません。 たとえば  ia b  c id    (a,b,c,dが実数、iが虚数) というような行列があるときこれと同じものの積を何回かするプログラムを作るとき、虚数をどのような対処をすればいいのでしょうか? よろしくお願いします。

  • 3×3の逆行列の計算

    3×3の逆行列の計算 吐き出し法以外の逆行列の計算の仕方をすっかり忘れてしまいました・・・。 0.4 0.708 -0.081 -0.226 1.165 0.046 0 0 0.918 これの逆行列を求めたいのですが、吐き出し法でできる気がしません・・・。 どうやればいいのでしょうか? よろしくお願いします。

  • mathematicaでの行列の計算

    Aを5×5の行列として(成分は与えられている) Pを5×5行列で各列、各行に1が一つ(残りは0)の行列(置換行列) とします。このときに全てのPに対して P×A×(Pの逆行列) を計算するプログラムってmathematicaで出来るのでしょうか? 分かりにくい説明で申し訳ありません! いずれはn×nでやりたいと思っているのですが、とりあえず5×5くらいで考えています。 あまりmathematicaはやったことがないので、変な質問でしたらすみませんっ。。。

  • 逆行列の計算

    こんばんは。 逆行列の計算についてどうしてもわからない所があるので教えてください。 行列(B+C*Rt)があります。(Rtは行列Rの転置) ここで、B=[B11 0; B21 B22]{;は改行}の構造化行列で次元は,(行*列)の順番でB11がn+n,0がn*m(0は0行列),B21がm*n,B22がm*mです。 行列Cに関しては、C=[B21;0]でB21がn*m,0がm*mの0行列。 行列Rtに関しては、Rt=[0 Iq]で0がm*nの0行列、Iqがm*mの単位行列です。 この時(B+C*Rt)の逆行列がわかりません。 答えは、B~-B~*{C*(Iq+Rt*B~*C)~*Rt}*B~になると思うのですが・・・(~は逆行列です) どなたか解かる方お願いします。

  • Javaを使った行列計算

    Javaを使って行列の固有値などを求めるプログラムを 作りたいと考えています。そこで、自分で全て実装する前に Javaのライブラリの中に行列を扱うクラスなどがあるのならば それを利用したいと考えています。そこで、Javaのライブラリに 行列計算に適したクラスなどは用意されているでしょうか。 もしありましたら、教えて頂きたいと思います。お願いします。

    • ベストアンサー
    • Java
  • 行列を使った計算

    「質問」 行列を使った計算で、何が楽になるのか感覚的に分からないので 具体例を教えて欲しいです。 「質問に至った経緯」 統計に強くなりたいと思い行列の勉強を始めました。 単位行列や逆行列や可換や、不定や不能といった概念を学んでいるところです。 本の最初ではカフェに出てくるお茶のカロリーや値段という例に基づいて行列の 計算をしてみよう、という内容だったのですが、逆行列を解説するページ辺りでは 数式のみの説明になってしまいました。 逆行列の計算の方法は理解しましたが、具体例がなく説明されていたので 一体これは何の為の計算なんだろう、、?統計とどう関係があるのだろう、、、? と少し退屈な気持ちになってしまっています。 自分で調べたところ "多くの変数を分析する時に、行列を用いて計算をすると楽だから、行列がある" そんな旨のことがあるウェブサイトに書かれていました。 役に立つことは理解できましたが、やはり漠然とした理解なので、ちょっともやもやしています。 私としては学習を進めるにあたって、何の役に立つのか理解しておかないと 非常に退屈な気持ちになるので、もっと具体的にどういうふうに役に立つのか 知りたいです。 といっても、行列を大して理解もしていないのに、難しい分析をするというの難しい話です。 「質問のまとめ」 出来れば生活に身近な事柄を使って、行列を用いると計算が楽になるという具体例を教えていただけないでしょうか? 「質問者の知識レベル」 私は数学に弱い人間なので、難しい単語や概念の話をされると わからない可能性が高いです。可能なレベルで文章を柔らかく書いてもらえると 非常に助かります。 「蛇足」 質問文において、改善した方が良さそうなところがあれば 教えてほしいです。

専門家に質問してみよう