• ベストアンサー

n行n列の行列の2乗

javaでn行n列の行列の2乗を求めたいのですが、どうすればよいでしょうか?3行3列の2乗はできたのですがn行n列への拡張の仕方がわかりません。

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

  • ベストアンサー
回答No.1

行列のかけ算について調べて理論を理解しておいてください。 イメージ的には↓のようなプログラムになります for(i=0; i<n; i++ ){  for(j=0; j<n; j++ ){   b[i][j] = 0 ;   for(k=0; k<n; k++){    b[i][j] += a[i][k]*a[k][j] ;   }  } } ちなみに実際に大規模行列の乗算を行う場合は、上記のようなijk形式のループではなく、キャッシュ等を考慮してブロック化したり演算の順序を変えたりします。

riquelme10
質問者

お礼

早い返信ありがとうございます。とりあえずやってみます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 3行3列の行列 A に対して、Aの2乗, Aの3乗 を求めよ。

    3行3列の行列 A に対して、Aの2乗, Aの3乗 を求めよ。 という問題で #include <stdio.h> #define N 3 int A[N][N]; int A_2[N][N]; /* 行列Aを2乗したもの */ int A_3[N][N]; /* 行列Aを3乗したもの */ int main() { int i,j,k,l; /* 3行3列の係数行列Aの成分を入力 */ printf("係数行列Aを%d行%d列で入力してください\n", N, N); for( i=0; i<N; i++) { for( j=0; j<N; j++) { printf("A[%d][%d]=", i+1, j+1); scanf("%d", &A[i][j]); } } ここまでがあたえられえているのですが、単純にA_2=A×Aとしてみたのですが、セグメントエラーが出てしまいうまく出力できませんでした。 A_2とA_3の計算方法とあたえられているプログラムの動作を教えてください。 よろしくお願いします

  • 行列のn乗について

    javaで複素行列のアルゴリズムを実装していて疑問に思ったのですが、 行列のn乗に関して、 (1) n = 0 (2) n は負の整数 (3) n は実数 (4) n は複素数 のそれぞれの場合に定義されていますでしょうか? 定義されている場合には、その概略を示していただくか 参考になるサイトをご紹介いただければ非常に幸いです。 以上、よろしくお願い申し上げます。

  • 英語で『m行n列の行列』の読み方

    m行n列の行列の英語表現の場合、書くだけなら、 m×n matrix でいいと思うのですが、(もしかしたらこの時点で違うかもしれませんが・・・) これはなんと読めばいいのでしょうか?

  • 3行3列の逆行列

    私は高校時代、数学IAIIBまでしか習っていなかったのですが、 大学生になって、行列というものが出てきて困ってます。 先輩から逆行列は一回一回足したり引いたり掛けたり割ったりしなくても、 できる公式があると聞いて、本屋で数学IIICの教材をあさってみたのですが、 2行2列の逆行列ばかりで、3行3列か見当たりませんでした(汗) 3行3列の逆行列の簡単なやり方がわかる方、教えてください!!   (2 2 -1) A=(3 1 4 )   (1 -1 1) ちょっと()の描き方おかしいですが、これでお願いします。 もしくは3行3列の逆行列の解き方がわかるサイトがあったら紹介してください。

  • 4行4列の行列式から得られるcosθ

    4行4列の行列式から得られるcosθ 以下の(1)式から(2)式が導けるそうですが、 どうして導けるのかわかりません。 この4行4列の行列式を計算するのに、余因子展開を使うのでしょうか。

  • 3行3列行列のn乗について。

    同じ質問がほかにもあったらごめんなさい。 一応調べても出てこなかったので、質問してみようと思いました。 ご解答のほどよろしくおねがいします。 行列、 1、1、0、 0、2、0、 1、1、1、 のn乗を求めたいと思っていますが、 高校で習った知識をフル活用して固有値固有ベクトルでといてみようと思ったのですがうまくいきませんでした。。 できれば、 (1)固有値固有ベクトルではどうしていけないのか。 (2)どうやってとけばいいのか。 の2つを解答してもらえるとありがたいです。 よろしくおねがいします。

  • 『行列の2つの列を入れ替えると行列式はー1倍になる』ことの証明

    お世話になります。よろしくお願いします。 『行列の2つの“列”を入れ替えると行列式はー1倍になる』ことの 証明についてです。 手持ちの参考書には 『行列の2つの“行”を入れ替えると行列式はー1倍になる』ことの 証明は載っていました。 i行とk行を入れ替える時、τ=σ(i k)と置くといううまいやり方でした。 列の入れ替えについては、行の入れ替えに 転置行列の公式detA=det(tA)を用いればよいのですが、 この公式を用いずに直接「2列の入れ替えで行列式がー1倍になる」ことを示したいと思っているのですが、なかなかできずに困っています。 どなたかできる方、よろしくお願い致します。 方針があってないかもしれませんが、以下途中まで自分でやった部分です。 ________________________________________ 行列A=(a_ij)のi列とk列を交換した行列をA'=(b_ij)、 S_nをn次の対称群をします。 detA=Σ[σ∈S_n]sgn(σ)a_1σ(1)・・a_rσ(r)・・    ・・a_tσ(t)・・a_nσ(n) σ(r)=i, σ(t)=kとする。またσ(-1)はσの逆置換とする。 b_1σ(1)・・b_rσ(r)・・b_tσ(t)・・b_nσ(n) =b_1σ(1)・・b_ri・・b_tk・・b_nσ(n) =a_1σ(1)・・a_rk・・a_ti・・a_nσ(n) =a_1σ(1)・・a_σ^(-1)(i)k・・a_σ^(-1)(k)i・・a_nσ(n) ________________________________________ よろしくお願い致します。 

  • 複素n次正方行列に関する質問です。

    λ∈Cに対して次のような複素n次正方行列N, J[λ](n)を考えます。 Nは、1行2列目、2行3列目、3行4列目、……、(n-1)行n列目の成分が全て1になっていて、残りの成分が全て0の行列です。(つまり単位行列の対角成分を右に一個ずつずらした感じです) J[λ](n)は、対角成分が全てλで、1行2列目、2行3列目、3行4列目、……、(n-1)行n列目の成分が全て1になっていて、残りの成分は全て0の行列です。 したがって、J[λ](n)=λE+N が成り立ちます。それで、k≧nという条件の下で、J[λ](n)のk乗を求めたい場合、 {J[λ](n)}^k=Σ【r=0→k】kCr(λE)^(k-r)*N^r となりますが、このときの1行n列目の成分がどうなるのかわからないので教えてください。 たぶん、kC(k-n)*λ^nか、kC(n-1)*λ^(k-n+1)のどちらかだと思います。

  • 行列の問題を教えてください。

    行列の問題で解けなくて困っています. よろしければ教えていただけないでしょうか。 行列に関係する以下の問い(1)~(4)に答えよ。 (1)2行2列の行列をAとする。さらにその固有値をλ1,λ2(λ1≠λ2)とし、それぞれに付随する固有ベクトルを(x1,y1)と(x2,y2)とする。 P≡ |x1 x2| |y1 y2| と置くと、固有値と固有ベクトルの定義から AP=P|λ1 0| |0 λ2| と書ける。ここから、 A=P|λ1 0|P^-1 | 0 λ2| および A^n=P|λ1 0|^nP^-1 |0 λ2| となることを示せ。ここでP^-1はPの逆行列、nは正の整数、A^nは行列Aのn乗を示す。 (2)固有値が1と-1である2行2列の行列Bがある。この行列のn乗B^nを求めよ。さらにその逆行列(B^n)^-1を求めよ。B^nと(B^n)^-1の両方において、nが偶数と奇数で答えが異なるので、両者を区別して答えを示せ。必要なら2つの正則な正方行列B1、B2の積の逆行列が (B1B2)^-1=B2^-1B1^-1 となることを使え。 (3)固有値が1と-1で、それぞれに付随する固有ベクトルが(2,1)と(1,1)である2行2列の行列Cを求めよ。 (4)xとyを未知数とする次の連立方程式 |3 -4|^21 |x| =|10| |2 -3| |y| |7| を解け。ここで |3 -4|^21 |2 -3| は行列 |3 -4| |2 -3| の21乗を表す。 という問題です。 計算過程、解答のほうをどうかよろしくお願いいたします。

  • 行ベクトルと列ベクトル

    行ベクトルと列ベクトル 次の積を計算せよ。 ( 1 2) (3) 5 6 4 指針 行列の積ABの計算は、Aの行ベクトルとBの列ベクトルの積が基本となる。例えば ( 1 2) (3) 4 ( 5 6) (3)を計算し、これらの成分としておいたものが積になる。このとき、次のことがポイント。 4 (第●行目の行ベクトル)と(第■行目の列ベクトル)積を(●、■)とおく。 教えてほしいところ行ベクトルとは1×n行列のことをいい、m×1の行列を列ベクトルというんですよね。 よって、第●行目の行ベクトル)と(第■行目の列ベクトル)積を(●、■)とおく。 って、行列の中に行列が入ってみるたいで、おかしくないですか?? 実際、( 1 2) の行列の5 6の部分は行ベクトルであるとはいいませんよね?? 5 6