・行列の冪乗計算                       GAI 氏

 「正方行列のn乗を求めよ」という問題が、2、3次での正方行列では入試等でも見かける
ことがある。ところが、それ以上の正方行列になると途端に面倒なことになるような雰囲気。

 使われる手としてジョルダン標準形があるも、パターンが様々で面食らう。なるだけ計算機
に頼らず、次の4次の正方行列 M のn乗形を求めてほしい。また、何か有効な方法があった
ら教えてほしい。

M= [ - 1  - 1  - 1  - 2 ]
   [                    ]
   [  1    1    1    0  ]
   [                    ]
   [  2    1    2    2  ]
   [                    ]
   [  1    1    0    3  ]



 S(H)さんからのコメントです。(平成30年7月25日付け)

 一つの発想:特性多項式 f(x) を求め、x^nを f(x) で割り、余りをもとめ、その余りからM の
        n乗を求める。


 GAI さんからのコメントです。(平成30年7月25日付け)

 値は計算機にかければ出ますので、求める式が欲しいんです。


 S(H)さんからのコメントです。(平成30年7月25日付け)

 特性多項式 f (x) = x^4-5 x^3+9 x^2-7 x+2 です。x^69を f (x) で割り、 余りを求めると、

 590295810358705649296 x^3-1770887431076116945542 x^2
                    +1770887431076116943265 x-590295810358705647018

 これから、M の69乗が求められる。


 GAI さんからのコメントです。(平成30年7月25日付け)

 この式は、n=69 の場合の式でしょう。言いたいのは、どんなnに対してもの式なのです。
逆に言えば、この方法ではそれは式を作ることが出来ないと思えるのです。よって、それを
可能する他の攻め方が知りたいのです。


 S(H)さんからのコメントです。(平成30年7月25日付け)

M^n= [
[-n+2-2^n,  1-2^n,  -n,  2-2*2^n],
[       n,      1,   n,        0],
[ n-1+2^n, -1+2^n, n+1, -2+2*2^n],
[  -1+2^n, -1+2^n,   0, -1+2*2^n]

]


 GAI さんからのコメントです。(平成30年7月25日付け)

 確かに、これですべてのM^nが作れます。ところで、この式を手に入れるためには大きく分
けて2つのアプローチ(帰納法的と演繹法的)があり、S(H)さんのコメントを見る限り、帰納法
的処理の接近だと思われます。

 つまり、M^2、M^3、M^4、・・・ と計算していき、結果に現れる規則を予想し、これを数学的
帰納法で確定させている。

 一方、途中の計算は一切使わず、行列の持つ性質や特徴だけを組み合わせ、M^nという
行列が持つ形を直接出現させていく演繹的手法もあり得て、この接近で、ジョルダンの標準
形と呼ばれている手法を使い、同じ結論を出す経験をしたのですが、これってなかなか落と
し穴があり、色々と経験を積まないと使いこなせない印象を持ちました。

 そこで、いろいろな人にどんな方法でやられるかを尋ねたかったので出題していました。
もし演繹的方法で有効な手段をお持ちな方は教えて下さい。


 りらひいさんからのコメントです。(平成30年7月26日付け)

 私にはとにかく頑張ることくらいしか思い浮かびません。でたらめな4次正方行列なら私の
手におえないけど、GAIさんが出題したという時点で答えがある程度簡単になることが予想
されるなら、この問題に関しては手計算でいけるんじゃないかなーと思って、とりあえずジョ
ルダン標準形でやってみた。

[固有多項式]
=(-1-x)(1-x)(2-x)(3-x)-(-1-x)(1-x)(0)-(-1-x)(2-x)(0)-(-1-x)(3-x)(1)-(1-x)(2-x)(-2)
-(1-x)(3-x)(-2)-(2-x)(3-x)(-1)+(-1-x)(2+0)+(1-x)(-2+0)+(2-x)(-2+0)+(3-x)(-2-1)+(0+0-2)
-(-2+0+0-2-4+0)=x^4-5x^3+5x^2+5x-6-x^2+2x+3+2x^2-6x+4+2x^2-4x+6+x^2-5x+6-2x-2
+2x-2+2x-4+3x-9+6
=x^4-5x^3+9x^2-7x+2=(x-1)^3(x-2)

 固有値1に対して、M-I=[[-2, -1, -1, -2],[ 1,  0,  1,  0],[ 2,  1,  1,  2],[ 1,  1,  0,  2]]より、固
有ベクトルは、[1,1,-1,-1]^T および [0,2,0,-1]^T

 (M-I)[a,b,c,d]^T = p*[1,1,-1,-1]^T + q*[0,2,0,-1]^T とおくと、

 -2a-b-c-2d=p 、a+c=p+2q 、2a+b+c+2d=-p 、a+b+2d=-p-q

より、p+q=0なので、(M-I)[-1,-1,0,1]^T = [1,-1,-1,0]^T

 固有値2に対して、M-2I=[[-3, -1, -1, -2],[ 1, -1,  1,  0],[ 2,  1,  0,  2],[ 1,  1,  0,  1]]より、固
有ベクトルは、[1,0,-1,-1]^T

 これより、J=[[1, 1, 0, 0],[0, 1, 0, 0],[0, 0, 1, 0],[0, 0, 0, 2]]
および、S=[[ 1, -1,  0,  1],[-1, -1,  2,  0],[-1,  0,  0, -1],[ 0,  1, -1, -1]]とおくと、SJ=MS が成
り立ち、

 J^n=[[1, n, 0,   0],[0, 1, 0,   0],[0, 0, 1,   0],[0, 0, 0, 2^n]]および(掃き出し法により)

 S^(-1)=[[ 1,  1, -1,  2],[-1,  0, -1,  0],[ 0,  1, -1,  1],[-1, -1,  0, -2]]から、

M^n = S J^n S^(-1)
= [[ 1, n-1, 0,  2^n],[-1, -n-1, 2, 0],[-1, -n,  0, -2^n],[ 0, 1, -1, -2^n]] S^(-1)
= [
[-n+2-2^n,  1-2^n,  -n,  2-2*2^n],
[       n,      1,   n,        0],
[ n-1+2^n, -1+2^n, n+1, -2+2*2^n],
[  -1+2^n, -1+2^n,   0, -1+2*2^n]

]

が求まる。(ぐは。四時間かかった…。)


 GAI さんからのコメントです。(平成30年7月26日付け)

 りらひいさん、4時間もの格闘ありがとうございます。この固有多項式(x-1)^3(x-2)に対して
最小多項式が(x-1)^2(x-2)になるパターンでの問題設定になっていました。

 即ち、当然、行列Mに対し、(M-I)^3*(M-2I)=O (零行列)であるが、それ以前に、
(M-I)^2*(M-2*I)=O でもあることから、固有値1に対する固有ベクトルを探す場合下記の作
業が必要となり、

<固有多項式> (M-I)[a,b,c,d]^T = p*[1,1,-1,-1]^T + q*[0,2,0,-1]^T とおくと、

 -2a-b-c-2d=p 、a+c=p+2q 、2a+b+c+2d=-p 、a+b+2d=-p-q

より、p+q=0なので、(M-I)[-1,-1,0,1]^T = [1,-1,-1,0]^T

 この部分の作業が出るところが面倒で落とし穴になりますね。

 固有値2に対して、M-2I=[[-3, -1, -1, -2],[ 1, -1,  1,  0],[ 2,  1,  0,  2],[ 1,  1,  0,  1]]より、固
有ベクトルは、[1,0,-1,-1]^T

 これより、J=[[1, 1, 0, 0],[0, 1, 0, 0],[0, 0, 1, 0],[0, 0, 0, 2]]
および、S=[[ 1, -1,  0,  1],[-1, -1,  2,  0],[-1,  0,  0, -1],[ 0,  1, -1, -1]]とおくと、SJ=MS が成
り立ち、

 J^n=[[1, n, 0,   0],[0, 1, 0,   0],[0, 0, 1,   0],[0, 0, 0, 2^n]]


 このJ^nのスッキリ感が鍵ですね。

 後は、S*J^n*S^(-1)からM^nの行列を作り出す手法をよくも探し出したものだと感心したも
のでした。

 ですから、4次くらいの正方行列にもなると固有多項式と最小多項式にずれが生じるパタ
ーンがいろいろ発生し、ジョルダン標準形のあり様がそれに伴い変化する点が面食らうこと
になる。でも、演繹的な構成の見事な出来栄えに感動しました。


 DD++さんからのコメントです。(平成30年7月26日付け)

 できるだけ煩雑な文字計算を避ける方針で。

| M | = (中略) = 2 、| M+I | = (中略) = 24 、| M-I | = (中略) = 0 、| M+2I | = (中略) = 108
| M-2I | = (中略) = 0

f(λ) = | M-λI | = a[4]*λ^4 + a[3]*λ^3 + a[2]*λ^2 + a[1]*λ + a[0] とおくと

f(0) = a[0] = 2、f(1) + f(-1) = 2a[4] + 2a[2] + 2a[0] = 24、f(2) + f(-2) = 32a[4] + 8a[2] + 2a[0] = 108

 これらから、 a[4] = 1, a[2] = 9

f(1) - f(-1) = 2a[3] + 2a[1] = -24 、f(2) - f(-2) = 16a[3] + 4a[1] = -108

 これらから、 a[3] = -5, a[1] = -7

よって、 | M-λI | = λ^4 - 5λ^3 + 9λ^2 - 7λ + 2 = (λ-2)*(λ-1)^3

 ケイリーハミルトンの定理より、 (M-2I)*(M-I)^3 = 0

 両辺に右から M^n をかけて、 (M-2I)*(M-I)^3*M^n = 0

 これを変形して、 (M-2I)*(M-I)^2*M^(n+1) = (M-2I)*(M-I)^2*M^n

 n = 0,1,2,3,…… で考えると、 (M-2I)*(M-I)^2*M^n = (M-2I)*(M-I)^2

 この右辺を A とおきます。

 これを変形して、 (M-2I)*(M-I)*M^(n+1) - (n+1)A = (M-2I)*(M-I)*M^n - nA

 n = 0,1,2,3,…… で考えると、 (M-2I)*(M-I)*M^n - nA = (M-2I)*(M-I)

 この右辺を B とおきます。

 これを変形して、

  (M-2I)*M^(n+1) - (1/2)(n+1)nA - (n+1)B = (M-2I)*M^n - (1/2)n(n-1)A - nB

 n = 0,1,2,3,…… で考えると、 (M-2I)*M^n - (1/2)n(n-1)A - nB = M-2I

 この右辺を C とおきます。

 これを変形すると (←ここだけどうしても煩雑な文字計算を避けられず……)

M^(n+1) + ((1/2)(n+1)^2+(1/2)(n+1)+1)A + (n+2)B + C = 2*{ M^n + ((1/2)n^2+(1/2)n+1)A + (n+1)B + C }

 n = 0,1,2,3,…… で考えると、 M^n + ((1/2)n^2+(1/2)n+1)A + (n+1)B + C = 2^n* (I+A+B+C)

ここで、C = M-2I = [[-3,-1,-1,-2],[1,-1,1,0],[2,1,0,2],[1,1,0,1]]
    B = C*(M-I) =  [[1,0,1,0],[-1,0,-1,0],[-1,0,-1,0],[0,0,0,0]]
    A = B*(M-I) = 0  (←もっと早く計算しておけばよかった!)

なので、

M^n = 2^n* (I+B+C) - nB - (B+C)
   = 2^n*[[-1,-1,0,-2],[0,0,0,0],[1,1,0,2],[1,1,0,2]] - n*[[1,0,1,0],[-1,0,-1,0],[-1,0,-1,0],[0,0,0,0]]
     - [[-2,-1,0,-2],[0,-1,0,0],[1,1,-1,2],[1,1,0,1]]


 GAI さんからのコメントです。(平成30年7月27日付け)

 こんな解法見たことありませんでした。DD++さんの独創性を感じます。

 ここら辺りを勉強していたら、次のような手法に遭遇しました。ジョルダン標準形も使わず、
基本的な代数計算を続けていくと、ひょっこりと結果を出してくれます。

 Mの固有多項式が、(x-1)^3*(x-2)である事を前提で進みます。

 Mの固有値が1(重複度が3),2(重複度が1)の場合、Mのスペクトル{1,2}上で定義される関数
f(M)を、基幹行列Z11,Z12,Z13,Z21とするとき、f(M)=f(1)*Z11+f'(1)*Z12+f''(1)*Z13+f(2)*Z21
とする。

 この基幹行列を決定するために、f(x)=1の関数で上記を使うと、Iを4次の単位行列とすれば、

I=Z11                               + Z21 ・・・・・@
f(x)=x で使って
M=Z11        + Z12                  +2*Z21・・・・・A
f(x)=x^2 で使い
M^2=Z11      +2*Z12        +2*Z13   +4*Z21・・・・・B
f(x)=x^3 で
M^3=Z11      +3*Z12        +6*Z13   +8*Z21・・・・・C

@〜Cを連立して解いて、

Z11=2*I-3*M+3*M^2-M^3
=[ 2  1 0  2]
 [ 0  1 0  0]
 [-1 -1 1 -2]
 [-1 -1 0 -1]


Z12=   -2*M+3*M^2-M^3
=[-1 0 -1  0]
 [ 1 0  1  0]
 [ 1 0  1  0]
 [ 0 0  0  0]


Z13=I-5/2*M+2*M^2-1/2*M^3=O (零行列)

Z21=-I+3*M-3*M^2+M^3
=[-1 -1 0 -2]
 [ 0  0 0  0]
 [ 1  1 0  2]
 [ 1  1 0  2]


そこで、いよいよ、f(x)=x^n で使ってみると、

M^n=f(M)=Z11 + n*Z12 + n*(n-1)*Z13 + 2^n*Z21

        =[2-n-2^n    1-2^n    -n   2-2^(n+1) ]
         [n          1         n          0  ]
         [-1+n+2^n   -1+2^n  1+n  -2+2^(n+1) ]
         [-1+2^n     -1+2^n    0   2^(n+1)-1 ]


勿論、f(x)=exp(x)とすれば(f'(x)=f''(x)=exp(x)より)

exp(M)=f(M)=e*Z11 + e*Z12 + e*Z13 + e^2*Z21
           =[2*e-e-e^2  e-e^2  -e  2*e-2*e^2]
            [-e-e^2     e       e          0]
            [-e+e+e^2  -e+e^2 e+e -2*e+2*e^2]
            [-e+e^2    -e+e^2   0   -e+2*e^2]


           =[e-e^2     e-e^2   -e  2*e-2*e^2]
            [-e-e^2    e        e          0]
            [e^2      -e+e^2  2*e -2*e+2*e^2]
            [-e+e^2   -e+e^2    0   -e+2*e^2]


もいける。


 DD++さんからのコメントです。(平成30年7月27日付け)

 あとから気がついたのですが、固有値が1つを除いて全て重複している時点で、以下の解
法を採用するべきでした。

M-I = [[-2,-1,-1,-2],[1,0,1,0],[2,1,1,2],[1,1,0,2]]
(M-I)^2 = [[-1,-1,0,-2],[0,0,0,0],[1,1,0,2],[1,1,0,2]]
(M-I)^3 = [[-1,-1,0,-2],[0,0,0,0],[1,1,0,2],[1,1,0,2]]

よって、n≧2 のとき

M^n = ((M-I)+I)^n
= Σ[k=0..n] C(n,k)*(M-I)^k
= Σ[k=2..n] C(n,k)*(M-I)^k + n*(M-I) + I
= Σ[k=2..n] C(n,k)*(M-I)^2 + n*(M-I) + I
= Σ[k=0..n] C(n,k)*(M-I)^2 - (n+1)*(M-1)^2 + n*(M-I) + I
= 2^n*(M-I)^2 - n*((M-I)^2-(M-I)) - ((M-I)^2-I)) (この行からはn=1でも一致)
= 2^n*[[-1,-1,0,-2],[0,0,0,0],[1,1,0,2],[1,1,0,2]]
   - n*[[1,0,1,0],[-1,0,-1,0],[-1,0,-1,0],[0,0,0,0]]
   - [[-2,-1,0,-2],[0,-1,0,0],[1,1,-1,2],[1,1,0,1]]



                         投稿一覧に戻る