• Tidak ada hasil yang ditemukan

数学のためのコンピューター (4) 行列の解析的性質で遊ぶ

N/A
N/A
Protected

Academic year: 2025

Membagikan "数学のためのコンピューター (4) 行列の解析的性質で遊ぶ"

Copied!
5
0
0

Teks penuh

(1)

2003年度情報処理II 第12回

数学のためのコンピューター (4) 行列の解析的性質で遊ぶ

か つ ら だ

桂田

ま さ し

祐史 2003 年 7 月 3 日

「情報処理IIトップページ」1

1 はじめに

前々回は線形計算(連立一次方程式や固有値問題など) のための方法と、そのためのOctave というソフトウェア (MATLAB2 という有名なソフトの互換ソフト)について紹介したが3、今

回は Octave を使って行列の簡単な解析的性質の実験をしてみよう。

ここでいう 解析的性質 とは、行列の極限にかかわる性質のことを意味している。たとえば、

行列の列 Ann → ∞ のときの極限とか、無限級数 Pn=1An とか、行列値関数 f(A) の連 続性などの話である。線型作用素の解析的性質は通常は関数解析で学ぶが、(行列の段階での) 初等的な解説は杉浦・横沼 [1] でも読める。

2 行列の等比数列

一つの正方行列A の冪 An で作られる行列の列、いわば行列の等比数列 A0 =I, A1 =A, A2,· · ·, An, An+1,· · ·

の極限はどうなるだろうか?既に学んだかもしれないが (行列の Jordan 標準形の簡単な応用 である)、ここでは実験で試してみよう。

1http://www.math.meiji.ac.jp/~mk/syori2/

2http://www.mathworks.com/

3そのときの予定では、今回は行列の固有値計算の話(例えば回転による相似変換を繰り返すことで行列を対 角行列に近づけるJacobi 法など)をするつもりだったが、数学的解説を手短にする自信がなくなったので、今 回はもっと素朴な話にした。

(2)

³

isc-xas05% octave octave:1> n=5

octave:2> a=rand(n,n) octave:3> a*a

octave:4> a^2 octave:5> a^100 octave:6> a^1000

µ ´

Octave では、行列 a の n 乗はa^nで計算できることがわかるが、この例では n の増加と 共に急速に大きくなり、あっと言う間にオーバーフローすることが分かる。

種明かしをすると、行列の固有値の絶対値 (これをスペクトル半径と呼ぶ) を調べると事情 が見えてくる。

³

octave:7> eig(a)

octave:8> r=max(abs(eig(a))) octave:9> a=a/r

octave:10> max(abs(eig(a))) octave:11> a^100

octave:12> a^1000

µ ´

Octave では max(abs(eig(a))) で a のスペクトル半径が計算できる。a をそのスペクト ル半径 r で割ることで、スペクトル半径を 1 に縮めることができる。a^100, a^1000 ともに オーバーフローしていないが、それだけでなく何かが起こっていることに気がつくだろうか?

(どうしてそうなるのか考えてみよう。)

今度はスペクトル半径が1 より小さい行列の冪を調べてみよう。

³

octave:13> a=0.9*a octave:14> a^100 octave:15> a^1000 octave:16> a^10000

µ ´

3 行列の等比級数

今度は正方行列A (ただし A のスペクトル半径は 1より小さいとする) の等比級数 I+A+A2+A3+· · ·=

X n=0

An (I は単位行列) を考える。この級数は解析学では Neumann 級数と呼ばれる。

以下の実験は前節の続きで行うことを想定している。Octaveを終了してしまっている場合は、

(3)

この節の実験に先立ち必要なこと

³

n=5

a=rand(n,n)

r=max(abs(eig(a))) a=a/r

a=0.9*a

µ ´

を実行しておこう。

Neumann級数の部分和

Sn =

Xn k=0

Ak を計算する Octave プログラム neuamnn.mを用意した。

neumann.m

³

1 % neumann.m --- 行列の Neumann 級数 (等比級数) の第 N 部分和 2 function s = neumann(a,N)

3 [m,n] = size(a);

4 if m != n

5 disp("aが正方行列でない!");

6 return

7 endif

8 % 0 S_0 = I 9 s = eye(n,n);

10 % 1 S_1 = I + a 11 t = a; s = s + t;

12 % 2〜N 項まで加える (t a^n になるようにしてある) 13 for k=2:N

14 t = t * a;

15 s = s + t;

16 end

µ ´

これを~re00018/neumann.m から、Octave を実行するディレクトリィにコピーしよう。

こうしてコピーする

³

isc-xas05% cp ~re00018/neumann.m .

µ ´

³

octave:17> c=eye(n,n)-a octave:18> b=neumann(a,100) octave:19> b*c

octave:20> b=neumann(a,1000) ← もう少し精度を上げてみる octave:21> b*c

octave:22> format long ← お望みなら表示桁数を上げて octave:23> b*c

µ ´

Neumann級数の (部分) 和 SN =

XN k=0

akC =I a をかけた結果が単位行列に非常に近

(4)

いことが分かる。種明かしをすると、

X n=0

An= (I−A)1

が成り立つ。これは等比級数の和の公式

X n=0

rn= 1

1−r (ただし r|r|<1 を満たす複素数) の一般化である。

4 絶対値最大の固有値を求める — 冪乗法

簡単のため n 次正方行列 A が対角化可能で、その固有値を λ1, · · ·, λn, それらに属する固 有ベクトルを u1, · · ·, un とする。さらに 1| は他の固有値の絶対値よりも大きいとする。

1|>|λi| (i= 2,3,· · ·, n) 任意のベクトルx∈Cn

x=c1u1+c2u2+· · ·cnun と展開できるが、Ak を作用させると

Akx=c1Aku1+c2Aku2 +· · ·CnAkun=c1λk1u1+c2λk2u2+· · ·Cnλknun.

k が大きいとき、右辺第 1項は右辺の他の項と比べて大きくなることが分かる (ただし c1 6= 0 とする)。k を十分大きくすると、右辺第2項以下は第1項と比べて無視できるほど小さくな るだろう。すると Akxu1 の定数倍、すなわちλ1 に属する固有ベクトルに近くなるはずで ある。

以上のことをOctaveによる計算で確かめるためには、Akxがオーバーフローすることを防 ぐため、代りにその長さで割った Akx

kAkxk を作ればよい。

以下では素朴にA をかけていくことで Akx

kAkxk を求めている。

³

octave:5> x=ones(n,1) octave:5> for i=1:100

> y=a*x

> x=y/norm(y)

> end

octave:5> a*x ./ x ← a*x の各成分を対応する x の成分で割ってみる octave:5> eig(a) ← 念のため eig() で a の固有値を調べて比較

µ ´

線形代数では、固有値を固有多項式の根として特徴づけるが、普通固有多項式を数値計算で 解くのは難しいので、行列の問題のまま各種の反復法を用いることになる。上で見た方法は

(5)

5 課題 8

締め切りは 7月16日。

今回は Octave を使った計算の感想を (5行程度以上) 書いて下さい (これだけでレポー トと認めます)。

もし興味が生じて自分で何か実験を考案して実行した場合はそれについて書いてくだ さい。

具体的な挑戦課題が欲しいという人は neumann.m を参考に行列の指数関数 expA=

X n=0

1 n!An

を計算する関数 exponential() を作って、実験して下さい。

参考文献

[1] 杉浦光夫, 横沼健雄, Jordan 標準形・テンソル代数, 岩波書店 (1990).

Referensi

Dokumen terkait

fm1 fm2 · · · fmn    を基底Aと基底Bに関するf の表現行列という.つまり,各j 列にfajのBに関する 座標を並べて得られる行列である.実はRnを基底A,Rmを基底Bを用いて考えたとき に,線形写像f は各ベクトルに左からF を掛ける操作に見えている(後の問題を参照). とくにn=mの場合,線形写像f: Rn

本日の内容&連絡事項 これは実は毎年そうしていますが宿題の解答PDFを公開します。 「数学解析WWWサイト」の問のところに置いてあります。 第14回授業では、当初の予定では、広義積分の解説をする予定でし たが、宿題の解説をすることに切り替えます。 「期末試験の準備は、宿題にきちんと取り組むのがよい」と考えてい て、例年次のように説明しています。

2.4 tan−1x arctan x のテイラー級数で π を計算しよう 円周率π は、例えば π= 4 arctan 1 マーダヴァ・グレゴリー・ライプニッツ級数, π= 6 arctan 1 √3 シャープの級数 のように arctan を計算することで求められます。 テイラー級数の計算では、級数の一般項の計算に漸化式を用いるのが便利なことが多いです

5 方針:Pij−1 =Pij は2 より従う。3より QicQi1c =E,Qi1cQic =E を示す。 4 よりRijcRij−c =E,Rij−cRijc =E を示す。 2 出題の時はうっかりしていましたが、これを23と同じ方針でやろうとすると25つ 項が出てくるので、それでも計算できますが、要領よくするには、少し準備をした方が 良いですね。

狙い:行列の冪や行列の多項式の計算練習。 補足:A2を直接計算するのが普通の解法です。別解としては、与えられた式が−Aa+dE−A と変形できることに気がつき、そして、眼がとても良い人は、a+dE−A が問題 1 のB であることに気がつけば!、問題 1 を使うこともできます。 背景:つまり、公式 A2−a+dA+ ad−bcE =O

本日の内容&連絡事項 これは実は毎年そうしていますが宿題の解答PDFを公開します。 「数学解析WWWサイト」の問のところに置いてあります。 第14回授業では、当初の予定では、広義積分の解説をする予定でし たが、宿題の解説をすることに切り替えます。 「期末試験の準備は、宿題にきちんと取り組むのがよい」と考えてい て、例年次のように説明しています。

宇宙地球物理学実験(気象データの解析)(時系列データの解析) 1.はじめに 本実験では、気象庁による地上気圧の観測値の日変化を解析する。電子ファイルとして、2001年8月の東京、 銚子、甲府の気圧の時別値データが与えられている。データファイルはCSV形式である。基本的にはエクセルで 解析することを想定しているが、それ以外の方法を用いてもかまわない。

1 のことである.ここでSn はn次対称群,νnσ はσ∈Sn のサイクル分解に現れるサイクルの個数を表す.パラ メタの値が特別な場合として,det−1は行列式を,det1はパーマネントをそれぞれ与える.本稿ではパラメタが α=−1k(1≤k≤n−1)の場合を扱う.このパラメタの値は,巡回加群Ugln·detαxijの既約成分が(generic