• ベストアンサー

行列A^2=A となるAを求める方法の質問

【問題】 0行列でない、n×n行列Aにおいて、 A^2=Aとなる行列を求めよ。 こちらが分からないのですがお分かりの方、お答え頂けませんでしょうか?

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

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

求めよ,という表現が曖昧ですが常識的に考えると次のような回答を期待しているのでしょう.以下では行列の成分は実数体か複素数体Kの元としています. まずAの固有値を決めます.aをAの固有値,vをその固有ベクトルとすればAv = avなので両方にAを作用させれば. av = Av = A^2v = a^2v よりa = 0, 1のどちらかです. 次にK^n = im(A) + ker(A)を示します.一方の包含関係は自明です.B = 1 - Aとします.任意のu ∈ K^nに対して u = 1u = (A + B)u = Au + Bu です.A^2 = AよりAB = 0なのでBu ∈ ker(A)となりもう一方の包含関係も示せました.またこれは明らかに直和になっています. 次にim(A)が固有値1の固有空間Eになっていることを示します.E ⊆ im(A)は明らかです.逆im(A) ⊆ EもA^2 = Aに注意すれば,v = Au ⊆ im(A)に対して v = Au = A^2u = Av よりすぐわかります. したがってK^nはAの固有値0, 1の固有空間の直和に分解できたのでAは対角化可能です.結論としては A = P^{-1} diag(1, …, 1, 0, …, 0) P となる正則行列Pがあることがわかります.ここで1はrank(A) > 0の数だけあります.(rank(A) > 0 はA ≠ 0よりしたがう.)

nakamura1984
質問者

お礼

詳しいご回答本当にありがとうございます! 個人的には、まだ、固有値について勉強をしていないので、 今回は教授に確認して2×2行列について問題を 解けばよいことにしてもらいました。 勉強を進めた後、n×n行列についてもご回答頂いた ように、理解できるようにして参りたいと思います。 ありがとうございました!

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

その他の回答 (2)

回答No.3

追記(回答No.1の補足): 回答No.1では本当に解答しか書かなかったので,すこし問題の背景を補足しておきます.問題にあるように等式A^2 = Aを満たす正方行列のことを【射影行列】といいます.そして回答No.1に書いたのは要するにどうしてこれで定まる行列のことを射影行列と呼ぶか,です.これを踏まえて解答を読むだけでもだいぶ見通しがよくなると思います.回答No.1にある結論を言い換えれば 『射影を表す表現行列は適当に基底を取り直せばいつでもdiag(1, …, 1, 0, …, 0)とできる』 ということです.これが射影行列の射影行列たる所以です.ちなみにこれは線形代数のよくある演習問題なので適当な演習書を調べればきっと同じことが書いてあるはずです. そうは言っても一般論ばかりだと感じが掴めないかもしれないのでひとつ例を挙げておきます.実際に手を動かして計算してみてください. A =[ [1/2, 1/2], [1/2, 1/2]] とします.これは等式A^2 = Aを―つまり射影行列の定義を―満たします.実際これは2次元ユークリッド空間で標準基底e_x, e_yを取ったとき直線y = xへの射影の表現行列になっています.また P = [ [1, 1], [-1, 1]] D = [ [1, 0], [0, 0]] とおいたとき先の回答で証明したように A = P^{-1}DP と分解できます.

nakamura1984
質問者

お礼

補足もありがとうございます!!

全文を見る
すると、全ての回答が全文表示されます。
  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.2

A=QΛP(P, Qは直交、Λは対角行列)と分解すると   A^2 = QΛPQΛP = Q(Λ^2)P なので、A^2=Aということは、   Λ^2=Λ である。(実はANo.1のようなプレイも大好きなんですが。)

nakamura1984
質問者

お礼

ご回答ありがとうございます! こちらも後々理解できるようにガンバリマス!

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

関連するQ&A

  • 行列の行列式の求め方がわかりません

    こんにちは大学1年のものです。線形代数を履修しているんですが次のような行列の行列式がわかりません。 1行目は{0,0,0,・・・・・・・,a(1,n)} 2行目は{0,0,0,・・・・・,a(2,n-1),a(1,n)} 3行目は{0,0,0,・・・・・,a(3,n-2),a(1,n-1),a(1,n)} ・・・・・・n行目は{a(n,1),a(n,2),・・・・・,a(n,n)} といった行列の行列式の計算なんですけど、行列式の性質で列行列を左にずらしていくと行列式は(-1)^N×a(1,n)×a(2,n-1)×a(3,n-2)・・・a(n,n)になると思うのですが(-1)のN乗のNの求め方ががわかりません。 わかりにくいですがよろしくお願いします

  • 行列

    n×n行列Aで、i行(i+1)列が1(1<=i<=n-1),1行n列が1,他は全て0の行列の固有値はどう求めたらいいですか?

  • 行列の問題

     N行N列の行列A   行列Aの成分は成分を(行,列)で表すと、(1,1)=(N,N)=2、(1,2)=(1,N)=(2,1)=(N,1)=(N-1,N)=(N,N-1)-1  この行列の固有値と固有ベクトルを求めたいのですが、どうすればいいかわかりません。どなたか教えてください。

  • 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=10で構いません。 N Y = Σ(A) ・x^n・x^(N-n) n=1 行列 A は以下のように1行2列です(括弧がうまく書けません)。 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)のどちらかだと思います。

  • 行列

    Aを2行2列の行列とする。ある正の整数n≧2についてA^n-1 ≠0、A^n=0 (0は0行列)ならば常にA^2=0が成り立つと示せ。 という問題ですが、A^2=0ならA^n-1も0になるような気がするんですが たとえばn=15ならA^14=A^12*A^2=0 のような・・

  • 行列をベクトルに(C言語)

    行列をベクトルに(C言語) m行n列の行列Aがあったとき、それをm×n行1列の行列(ベクトル)Bに するというプログラムを作りたいです。 これは、行列Aの1列目m行分の要素をそのまま行列Bの1行1列目に持っていき、 それを行列Aのn列の数だけ繰り返す、といった要領です(画像参照) つまり MATRIX B; B.m=A.m*A.n; B.n=1; return B; ということだと思うのですが、なかなかうまいくいきません。 また、構造体も使いたいので、 typedef struct { int m; int n; double *mat; } MATRIX; と宣言しました。 画像は説明のため、一応載せておきました。(例として4列の行列になっています) みなさんよろしくお願いします。

  • 行列をベクトルに

    m行n列の行列Aがあったとき、それをm×n行1列の行列(ベクトル)Bに するというプログラムを作りたいです。 つまり MATRIX B; B.m=A.m*A.n; B.n=1; return B; ということだと思うのですが、なかなかうまいくいきません。 また、構造体も使いたいので、 typedef struct { int m; int n; double *mat; } MATRIX; と宣言しました。 みなさんよろしくお願いします。

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

    行列の問題で解けなくて困っています. よろしければ教えていただけないでしょうか。 行列に関係する以下の問い(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乗を表す。 という問題です。 計算過程、解答のほうをどうかよろしくお願いいたします。