連立一次方程式hirai/edu/2017/algorithm/handout/...algorithm : 2017/5/8(10:1) 24 3....

21
algorithm : 2017/5/8(10:1) 3 連立一次方程式 機械電気システムのモデルを解析するときには, 連立一次方程式 (simultaneous linear equations) を解く必要がたびたび生じる.制約安定化法を用いて微分方 程式を解く場合,平衡点まわりの安定性を解析する場合はその典型例である. 本章では,連立一次方程式の数値解法を述べる. 3.1 ガウスの消去法と LU 分解 未知数の個数と式の個数が等しい連立一次方程式を解こう.どちらの連立一 次方程式が解きやすいであろうか. 3x +2y -2z = 1 6x +2y -z = 3 -3x -8y +7z = 6 (3.1) 3x +2y -2z = 1 -2y +3z = 1 -4z = 4 (3.2) 連立一次方程式 (3.1) は,すべての式に変数 x, y, z が含まれている.一方,方 程式 (3.2) 3 番目の式は変数 z のみを含む.したがって,3 番目の式を解く z の値を求めることができる.2 番目の式は変数 y,z のみを含む.得られた z の値を代入すると,残された未知の変数は y のみであるので,y の値を求め ることができる.得られた z,y の値を 1 番目の式に代入すると,残された未知

Upload: buinhan

Post on 23-Mar-2019

217 views

Category:

Documents


0 download

TRANSCRIPT

algorithm : 2017/5/8(10:1)

3連立一次方程式

機械電気システムのモデルを解析するときには,連立一次方程式 (simultaneous

linear equations)を解く必要がたびたび生じる.制約安定化法を用いて微分方

程式を解く場合,平衡点まわりの安定性を解析する場合はその典型例である.

本章では,連立一次方程式の数値解法を述べる.

3.1 ガウスの消去法とLU分解

未知数の個数と式の個数が等しい連立一次方程式を解こう.どちらの連立一

次方程式が解きやすいであろうか.3x +2y −2z = 1

6x +2y −z = 3

−3x −8y +7z = 6

(3.1)

3x +2y −2z = 1

−2y +3z = 1

−4z = 4

(3.2)

連立一次方程式 (3.1)は,すべての式に変数 x, y, z が含まれている.一方,方

程式 (3.2)の 3番目の式は変数 z のみを含む.したがって,3番目の式を解く

と z の値を求めることができる.2番目の式は変数 y, z のみを含む.得られた

z の値を代入すると,残された未知の変数は y のみであるので,y の値を求め

ることができる.得られた z, yの値を 1番目の式に代入すると,残された未知

algorithm : 2017/5/8(10:1)

20 3. 連 立 一 次 方 程 式

の変数は xのみであるので,xの値を求めることができる.すなわち

−4z = 4, z = −1,

−2y = 1− 3z = 1− 3× (−1) = 4, y = −2,

3x = 1− 2y + 2z = 1− 2× (−2) + 2× (−1) = 3, x = 1

以上のように,連立一次方程式 (3.2)においては,最後の式から順番に解くこ

とにより,変数の値を計算することができる.したがって,方程式 (3.1)より

方程式 (3.2)の方が解くことが容易である.

ガウスの消去法 (Gaussian elimination)は,方程式 (3.1)を方程式 (3.2)の

ような形に変換し,連立一次方程式の解を求める.連立一次方程式 (3.1)を例

として,ガウスの消去法を説明しよう.まず,1番目の方程式を用いて,2番目

の方程式と 3番目の方程式の変数 xの係数を 0にする.このとき,1番目の方

程式の変数 xの係数 3をピボット (pivot)とよぶ.ここで,2番目の式の xの

係数 6をピボット 3で割った値を求めると 2が得られる.2番目の式から 1番

目の式の 2倍を引くと,2番目の方程式における変数 xの係数が 0となる.同

様に,3番目の式の xの係数 (−3)をピボット 3で割った値を求めると (−1)が

得られる.3番目の式から 1番目の式の (−1)倍を引くと,3番目の方程式にお

ける変数 xの係数が 0となる.以上の計算過程を表すと3 x +2y −2z = 1 ピボットの選択

6x +2y −z = 3 2行目から (6/3)×1行目を引く

−3x −8y +7z = 6 3行目から (−3/3)×1行目を引く3x +2y −2z = 1

−2y +3z = 1

−6y +5z = 7

結果として,2番目と 3番目の式は変数 yと zのみの方程式となる.そこで,

2番目の方程式を用いて,3番目の方程式の変数 y の係数を 0にする.2番目

の方程式の変数 yの係数 (−2)がピボットである.3番目の式の yの係数 (−6)

algorithm : 2017/5/8(10:1)

3.1 ガウスの消去法と LU分解 21

をピボット (−2)で割った値を求めると 3が得られる.3番目の式から 2番目

の式の 3倍を引くと,3番目の方程式における変数 yの係数が 0となる.以上

の計算過程を表すと3x +2y −2z = 1

−2 y +3z = 1 ピボットの選択

−6y +5z = 7 3行目から (−6)/(−2)×2行目を引く3x +2y −2z = 1

−2y +3z = 1

−4z = 4

前述の通り,最後の式から順次解くとx

y

z

=

1

−2

−1

が得られる.

以上の計算過程を行列とベクトルの形で表そう.係数行列

A =

3 2 −2

6 2 −1

−3 −8 7

(3.3)

変数ベクトル

x =

x

y

z

(3.4)

定数ベクトル

b =

1

3

6

(3.5)

algorithm : 2017/5/8(10:1)

22 3. 連 立 一 次 方 程 式

を導入すると,連立一次方程式は

Ax = b (3.6)

と表すことができる.

ガウスの消去法に表われる行の操作を行列を用いて表そう.行列の 2行目か

ら 1行目の 2倍を引く操作は,模式的に1行目

2行目

3行目

=⇒

1行目

2行目 −2×1行目

3行目

と表される.右辺は

1行目

2行目 −2×1行目

3行目

=

1 0 0

−2 1 0

0 0 1

1行目

2行目

3行目

と書くことができる.行列

F =

1 0 0

−2 1 0

0 0 1

(2行目から 2×1行目を引く) (3.7)

を導入すると,行列の 2行目から 1行目の 2倍を引く操作は1行目

2行目

3行目

=⇒ F

1行目

2行目

3行目

と表される.すなわち,行列の 2行目から 1行目の 2倍を引く操作は,行列 F

を左側から掛ける演算に相当する.同様に,行列の 3行目から 1行目の (−1)

倍を引く操作は

G =

1 0 0

0 1 0

1 0 1

(3行目から (−1)×1行目を引く)

(3.8)

algorithm : 2017/5/8(10:1)

3.1 ガウスの消去法と LU分解 23

行列の 3行目から 2行目の 3倍を引く操作は

H =

1 0 0

0 1 0

0 −3 1

(3行目から 3×2行目を引く)

(3.9)

と表される.前述のガウスの消去法における計算過程は,

Ax = b

FAx = Fb 2行目から 2×1行目を引く

GFAx = GFb 3行目から (−1)×1行目を引く

HGFAx = HGFb 3行目から 3×2行目を引く

と書くことができる.結果として得られる連立一次方程式 (3.2)の係数行列は

U =

3 2 −2

0 −2 3

0 0 −4

(3.10)

である.行列 U は,対角要素より下の要素の値がすべて 0である.このような

行列を上三角行列 (upper trianglular matrix)とよぶ.

ガウスの消去法において U = HGFAを計算する過程を模式的に表すと

F× G× H×

A =⇒ FA =⇒ GFA =⇒ HGFA = U

行列 U から Aへの径路をたどろう.操作 F,G,H の逆操作を F−1, G−1,H−1

で表すと

F−1× G−1× H−1×

A = F−1G−1H−1U ⇐= G−1H−1U ⇐= H−1U ⇐= U

操作 F は,2行目から 1行目の 2倍を引く操作である.操作 F に引き続いて

2行目に 1行目の 2倍を加えると,何もしない状態に戻る.したがって逆操作

F−1は,2行目に 1行目の 2倍を加える操作である.同様に,逆操作G−1は 3

algorithm : 2017/5/8(10:1)

24 3. 連 立 一 次 方 程 式

行目に 1行目の (−1)倍を加える操作,逆操作 H−1 は 3行目に 2行目の 3倍

を加える操作である.

F−1 =

1 0 0

2 1 0

0 0 1

(2行目に 2×1行目を加える)

G−1 =

1 0 0

0 1 0

−1 0 1

(3行目行目に (−1)×1行目を加える)

H−1 =

1 0 0

0 1 0

0 3 1

(3行目に 3×2行目を加える)

したがって,行列 Aは

A = F−1G−1H−1U (3.11)

と表される.ここで,行列 L = F−1G−1H−1 を計算すると

L =

1 0 0

2 1 0

0 0 1

1 0 0

0 1 0

−1 0 1

1 0 0

0 1 0

0 3 1

=

1 0 0

2 1 0

−1 3 1

(3.12)

行列 Lは,対角要素より上の要素の値がすべて 0である.このような行列を下

三角行列 (lower trianglular matrix)とよぶ.

行列 Lの (2, 1)要素は行列 F−1 の (2, 1)要素に,行列 Lの (3, 1)要素は行

列G−1 の (3, 1)要素に,行列 Lの (3, 2)要素は行列H−1 の (3, 2)要素に一致

する.行列 F−1G−1H−1 を掛ける計算過程を模式的に表すと

algorithm : 2017/5/8(10:1)

3.1 ガウスの消去法と LU分解 251行目

2行目

3行目

H−1×

=⇒

1行目

2行目

3行目+3×2行目

G−1×

=⇒

1行目

2行目

3行目+3×2行目+(−1)×1行目

F−1×

=⇒

1行目

2行目+2×1行目

3行目+3×2行目+(−1)×1行目

行列H−1 は 3行目に 2行目の 3倍を加える.このとき定数倍を加える 2行

目は,最初の行列の 2行目に等しい.行列G−1は 3行目に 1行目の (−1)倍を

加える.このとき定数倍を加える 1行目は,最初の行列の 1行目に等しい.行

列 F−1 は 2行目に 1行目の 2倍を加える.このとき定数倍を加える 1行目は,

最初の行列の 1行目に等しい.以上のように,定数倍を加える行は最初の行列

の行に一致するので,定数の値は直接 Lの要素として表われる.

けっきょく,行列 Aは下三角行列 Lと上三角行列 U の積で表される.

A = LU (3.13)

これを LU分解 (LU decomposition)とよぶ.行列 Lの要素とガウスの消去法

における行操作を順次表すと

algorithm : 2017/5/8(10:1)

26 3. 連 立 一 次 方 程 式

行列 Lの (2, 1)要素 = 2 (2行目から 2×1行目を引く)

行列 Lの (3, 1)要素 = −1 (3行目から (−1)×1行目を引く)

行列 Lの (3, 2)要素 = 3 (3行目から 3×2行目を引く)

となる.このように,ガウスの消去法における行操作と同時に行列 Lを構成す

ることができるので,ガウスの消去法により上三角行列 U となる係数行列が得

られた時点で,LU分解は完了する.

3.2 LU分解の計算

正方行列の LU分解を直接計算するアルゴリズムを構築しよう.例として,4

次の正方行列

A4 =

2 3 −1 1

−4 −7 5 −1

6 7 1 4

2 5 −5 3

を LU分解する.LU分解の下三角行列を L4,上三角行列を U4 で表す.下三

角行列 L4 の (i, j)要素を li,j,上三角行列 U4 の (i, j)要素を ui,j で表す.下

三角行列 L4 の対角要素を 1とする.このとき LU分解は

L4U4 =

1

l21 1

l31 l32 1

l41 l42 l43 1

u11 u12 u13 u14

u22 u23 u24

u33 u34

u44

と表すことができる.行列 A4 の要素の個数 16と,LU分解に含まれる未知数

の個数 16が一致するので,LU分解の未知数の値を一意に定めることができる.

行列 L4, U4 を次のようにブロック分割する.

algorithm : 2017/5/8(10:1)

3.2 LU 分 解 の 計 算 27

L4 =

1

l21 1

l31 l32 1

l41 l42 l43 1

=

1

l21

l31 L3

l41

U4 =

u11 u12 u13 u14

u22 u23 u24

u33 u34

u44

=

u11 u12 u13 u14

U3

ここで L3, U3 は 3次の正方行列である.このとき

L4U4 =

u11 u12 u13 u14

l21u11

l31u11

l41u11

l21

l31

l41

[u12 u13 u14

]+ L3U3

が成り立つので

u11 = 2, u12 = 3, u13 = −1, u14 = 1 (3.14)

l21u11 = −4, l31u11 = 6, l41u11 = 2 (3.15)

ならびにl21

l31

l41

[u12 u13 u14

]+ L3U3 =

−7 5 −1

7 1 4

5 −5 3

(3.16)

を得る.

式 (3.14)は,行列 U4 の 1行目の要素の値を与える.式 (3.15)より行列 L4

の 1列目の要素の値を計算できる.

l21 = −4/u11 = −2, l31 = 6/u11 = 3, l41 = 2/u11 = 1

algorithm : 2017/5/8(10:1)

28 3. 連 立 一 次 方 程 式

得られた要素の値を式 (3.16)に代入すると

L3U3 =

−7 5 −1

7 1 4

5 −5 3

−2

3

1

[3 −1 1

]

=

−1 3 1

−2 4 1

2 −4 2

したがって,行列 A4 の LU分解 L4U4 を求めるためには,3次の正方行列

A3 =

−1 3 1

−2 4 1

2 −4 2

の LU分解 A3 = L3U3 を計算すればよい.

行列 L3, U3 を次のようにブロック分割する.

L3 =

1

l32 1

l42 l43 1

=

1

l32

l42L2

U3 =

u22 u23 u24

u33 u34

u44

=

u22 u23 u24

U2

このとき,L3U3 と行列 A3 を比較することにより

u22 = −1, u23 = 3, u24 = 1

l32 = (−2)/u22 = 2, l42 = 2/u22 = −2

ならびに

L2U2 =

4 1

−4 2

2

−2

[3 1

]=

−2 −1

2 4

= A2

algorithm : 2017/5/8(10:1)

3.2 LU 分 解 の 計 算 29

を得る.すなわち,行列 U4の 2行目の要素の値,行列 L4の 2列目の要素の値

が求められる.

行列 L2, U2 を次のようにブロック分割する.

L2 =

1

l43 L1

, U2 =

u33 u34

U1

このとき,L2U2 と行列 A2 を比較することにより

u33 = −2, u34 = −1

l43 = 2/u33 = −1

ならびに

L1U1 =[4

]−

[−1

] [−1

]=

[3]= A1

を得る.すなわち,行列 U4の 3行目の要素の値,行列 L4の 3列目の要素の値

が求められる.

最後に,L1U1 =[1

] [u44

]と行列A1を比較することにより u44 = 3を

得る.すなわち,行列 U4 の 4行目の要素の値が求められる.

けっきょく,4次の正方行列 A4 の LU分解は

A4 =

1

−2 1

3 2 1

1 −2 −1 1

2 3 −1 1

−1 3 1

−2 −1

3

となる.行列 A4, A3, A2, A1 の (1, 1)要素をピボットと呼ぶ.以上の計算アル

ゴリズムを,ピボット型LU分解と呼ぶ.係数行列Aの LU分解がA = LU で

表されるとき,連立一次方程式Ax = bの解は,二つの連立一次方程式 Ly = b

と Ux = y を順次解くことにより求めることができる (章末問題【 4】).

algorithm : 2017/5/8(10:1)

30 3. 連 立 一 次 方 程 式

3.3 ピボット選択と置換行列

前節のアルゴリズムではピボットの値が 0ではないと仮定していた.もし,

ピボットとしたい要素の値が 0でピボットとして選ぶことができない場合は,

その行を他の行と交換して 0でないピボットを選ぶ.下記の正方行列の LU分

解を求めよう.

A4 =

0 1 4 −6

8 1 6 −2

−2 0 0 3

4 −2 −2 4

この場合,(1, 1)要素の値が 0であり,この値をピボットとして用いることはで

きない.そこで,1行目と他の行を交換する.下三角行列の要素の計算は,ピ

ボットの値による除算を含むので,数値誤差の観点からはピボットの絶対値が

大きいほうがよい.行列 A4 の 1列目の要素で最も絶対値が大きいのは,(2, 1)

要素の 8である.そこで,1行目と 2行目を交換すると

A′4 =

8 1 6 −2

0 1 4 −6

−2 0 0 3

4 −2 −2 4

これより

A′4 =

1

0 ∗

−1/4 ∗ ∗

1/2 ∗ ∗ ∗

8 1 6 −2

∗ ∗ ∗

∗ ∗

(3.17)

ならびに

algorithm : 2017/5/8(10:1)

3.3 ピボット選択と置換行列 31

A3 =

1 4 −6

0 0 3

−2 −2 4

0

−1/4

1/2

[1 6 −2

]

=

1 4 −6

1/4 3/2 5/2

−5/2 −5 5

を得る.

行列A3の 1列目の要素で最も絶対値が大きいのは,(3, 1)要素の−5/2であ

る.そこで,1行目と 3行目を交換すると

A′3 =

−5/2 −5 5

1/4 3/2 5/2

1 4 −6

これより

A′3 =

1

−1/10 ∗

−2/5 ∗ ∗

−5/2 −5 5

∗ ∗

(3.18)

ならびに

A2 =

3/2 5/2

4 −6

−1/10

−2/5

[−5 5

]=

1 3

2 −4

を得る.

行列 A2 の 1列目の要素で最も絶対値が大きいのは,(2, 1)要素の 2である.

そこで,1行目と 2行目を交換すると

A′2 =

2 −4

1 3

これより

algorithm : 2017/5/8(10:1)

32 3. 連 立 一 次 方 程 式

A′2 =

1

1/2 ∗

2 −4

(3.19)

ならびに

A1 =[3

]−

[1/2

] [−4

]=

[5

]を得る.

行の交換を行列を用いて表そう.行列 A4 の 1行目と 2行目の交換は

P12 =

0 1 0 0

1 0 0 0

0 0 1 0

0 0 0 1

で表される.行列 P12 を左から乗ずると,1行目と 2行目が交換される.

2行目

1行目

3行目

4行目

=

0 1 0 0

1 0 0 0

0 0 1 0

0 0 0 1

1行目

2行目

3行目

4行目

行列 A3 の 1行目と 3行目は,A4 の 2行目と 4行目に対応する.行列 A4 の 2

行目と 4行目の交換は

P24 =

1 0 0 0

0 0 0 1

0 0 1 0

0 1 0 0

で表される.行列 A2 の 1行目と 2行目は,A4 の 3行目と 4行目に対応する.

行列 A4 の 3行目と 4行目の交換は

algorithm : 2017/5/8(10:1)

3.3 ピボット選択と置換行列 33

P34 =

1 0 0 0

0 1 0 0

0 0 0 1

0 0 1 0

で表される.このような行列を単位置換行列 (unit permutation matrix) と

呼ぶ.

上記の計算で,行を交換する過程を模式的に表すと2行目

4行目

1行目

3行目

P34×

⇐=

2行目

4行目

3行目

1行目

P24×

⇐=

2行目

1行目

3行目

4行目

P12×

⇐=

1行目

2行目

3行目

4行目

したがって,行の交換はまとめて

P = P34P24P12 =

0 1 0 0

0 0 0 1

1 0 0 0

0 0 1 0

で表される.このような行列を置換行列 (permutation matrix)とよぶ.1行目

に 2行目が,2行目に 4行目が,3行目に 4行目が,4行目に 1行目が移るので,

置換行列 P の (1, 2)要素,(2, 4)要素,(3, 4)要素,(4, 1)要素の値が 1である.

上記の計算は,行を交換した行列 PAが LU分解できることを意味する.上

記の計算結果から,行列 PAの LU分解を求めよう.行列 A′4 の LU分解 (式

(3.17))のときには,置換 P12 は成されているが,置換 P24 と P34 は成されて

いない.したがって,この結果を行列 PAの LU分解に適用するためには,置

換 P24 と P34 を適用する必要がある.行の交換は,置換行列を左から乗ずるこ

とに相当する.LU分解に置換行列を左から乗ずると,下三角行列の行が交換さ

れる.そこで,式 (3.17)で求められている下三角行列の要素の列に,置換 P24

algorithm : 2017/5/8(10:1)

34 3. 連 立 一 次 方 程 式

と P34 を適用する.1

1/2

0

−1/4

P34×

⇐=

1

1/2

−1/4

0

P24×

⇐=

1

0

−1/4

1/2

行列 A′

3 の LU分解 (式 (3.18))のときには,置換 P12 と P24 は成されている

が,置換 P34は成されていない.そこで,式 (3.18)で求められている下三角行

列の要素の列に,置換 P34 を適用する.1

−2/5

−1/10

P34×

⇐=

1

−1/10

−2/5

行列A′

2の LU分解 (式 (3.19))のときには,置換 P12, P24, P34が成されている

ので,置換を適用する必要はない.

けっきょく,行列 PAの LU分解は

PA =

1

1/2 1

0 −2/5 1

−1/4 −1/10 1/2 1

8 1 6 −2

−5/2 −5 5

2 −4

5

と表される.以上の計算を,ピボット選択型 LU分解と呼ぶ.

3.4 冗長な連立一次方程式

変数の個数が式の個数より多い場合,連立一次方程式は冗長であるという.

ガウスの消去法は冗長な連立一次方程式を解くことができる.例えば変数の個

数が 5,式の数が 3である次の連立一次方程式を解こう.

algorithm : 2017/5/8(10:1)

3.4 冗長な連立一次方程式 350x +0y −3z −1u −2v = 4

2x −4y +5z +1u −2v = −2

2x −4y +2z −5u +1v = 7

(3.20)

1番目の式における変数 xの係数が 0であるので,1番目の式と 2番目の式

を交換する.2x −4y +5z +1u −2v = −2

0x +0y −3z −1u −2v = 4

2x −4y +2z −5u +1v = 7

1番目の式における変数 xの係数をピボットに選び,ピボット操作を行うと2 x −4y +5z +1u −2v = −2 ピボットの選択

0x +0y −3z −1u −2v = 4 2行目から 0×1行目を引く

2x −4y +2z −5u +1v = 7 2行目から 1×1行目を引く2x −4y +5z +1u −2v = −2

0y −3z −1u −2v = 4

0y −3z −6u +3v = 9

を得る.このとき,2番目の式の変数 yの係数は 0,3番目の式の変数 yの係数

が 0であるため,式の入れ換えでピボットを得ることができない.そこで,ピ

ボットとして y 以降の変数の係数を選ぼう.この場合,2番目の式における変

数 zの係数をピボットに選ぶことができる.そこで,変数 yの項と変数 zの項

の順序を入れ替えると2x +5z −4y +1u −2v = −2

−3z 0y −1u −2v = 4

−3z 0y −6u +3v = 9

ピボット操作を行うと

algorithm : 2017/5/8(10:1)

36 3. 連 立 一 次 方 程 式2x +5z −4y +1u −2v = −2

−3 z 0y −1u −2v = 4 ピボットの選択

−3z 0y −6u +3v = 9 3行目から 1×2行目を引く2x +5z −4y +1u −2v = −2

−3z 0y −1u −2v = 4

0y −5u +5v = 5

を得る.このとき,3番目の式における yの係数が 0であるので,変数 yの項と

変数 uの項の順序を入れ替え,変数 uの係数をピボットに選ぶ.2 x +5z +1u −4y −2v = −2

−3 z −1u 0y −2v = 4

−5 u 0y +5v = 5

係数がピボットとして選ばれていない変数 y, vは,任意の値をとることがで

きる.任意のパラメータ α, β に対して,y = α, v = β とおくと,上式は2 5 1

−3 −1

−5

x

z

u

=

−2

4

5

−4 −2

0 −2

0 5

α

β

となる.最後の式から解くことにより

u = β − 1

z = −β − 1

x = 2α+ 3β + 2

を得る.まとめると

x

y

z

u

v

=

2

0

−1

−1

0

+ α

2

1

0

0

0

+ β

3

0

−1

1

1

algorithm : 2017/5/8(10:1)

章 末 問 題 37

z1z2

x0

z1z2

O

図 3.1 連立一次方程式の一般解の集合

と表すことができる.さらに変数ベクトル x = [x, y, z, u, v]T とパラメータ

ベクトル α = [α, β]T を導入し,

x0 =

2

0

−1

−1

0

, Z =

2 3

1 0

0 −1

0 1

0 1

とおくと,連立一次方程式の解は

x = x0 + Zα

と表される.以上のようにピボットを選ぶことにより,冗長な連立一次方程式

の一般解 (general solution)を計算することができる.行列 Z の第 1行を z1,

第 2行を z2 で表す.図 3.1に示すように,上式で与えられる解の集合は点 x0

を含み,ベクトル z1, z2 に沿う平面で与えられる.

章 末 問 題

【 1 】 第 3.1節における係数行列 Aと上三角行列 U は

U = HGFA

algorithm : 2017/5/8(10:1)

38 3. 連 立 一 次 方 程 式

を満たす.行列の積HGF が下三角行列であることを示せ.また,行列F−1, G−1,H−1

の下三角要素が行列 L = F−1G−1H−1 の下三角要素に直接対応しているのに

対して,積 HGF の下三角要素に行列 F,G,H の下三角要素が直接対応して

いるとは限らない.その理由を考えよ.

【 2 】 下三角行列

L =

1 0 0 0

4 1 0 0

−2 −2 1 0

1 3 −3 1

の逆行列を求めよ.計算過程を基に下三角行列の逆行列を計算するアルゴリズ

ムを構成せよ.

【 3 】 4次の正方行列 Aに以下の操作を行った.

2行目から 1行目の 2倍を引く

3行目から 1行目の (−3)倍を引く

4行目から 1行目の (−1)倍を引く

3行目から 2行目の (−2)倍を引く

4行目から 2行目の 2倍を引く

4行目から 3行目の 1倍を引く

その結果として上三角行列

U =

−2 2 −1 1

1 3 1

2 −1

2

を得た.行列 Aの LU分解を求めよ.

【 4 】 行列 Aの LU分解が

A = LU

L =

1 0 0

2 1 0

−1 3 1

, U =

3 2 −2

0 −2 3

0 0 −4

で与えられる.このとき連立一次方程式

algorithm : 2017/5/8(10:1)

章 末 問 題 39

Ax = b

を解け.ここで変数ベクトル xと定数ベクトル bは

x =

x1

x2

x3

, b =

b1

b2

b3

と表される.

【 5 】 ピボット型 LU分解のアルゴリズムを構成せよ.

【 6 】 ピボット選択型 LU分解のアルゴリズムを構成せよ.

【 7 】 式 (3.20)に示す連立一次方程式の係数行列

A =

2 −4 5 1 −2

0 0 −3 −1 −2

2 −4 2 −5 1

に対して,3.4節で行った行の変換は,P = P12 を左から乗ずる演算で表され

る.一方,列の変換は,Q = P23P34を右から乗ずる演算で表される.このとき

PAQ = L[

U B]

(3.21)

ただし

L =

1

0 1

1 1 1

, U =

2 5 1

−3 −1

−5

, B =

−4 −2

0 −2

0 5

と表されることを示せ.行列 Lは下三角行列,U は上三角行列である.この結

果を用いて,冗長な連立一次方程式 Ax = bを解くアルゴリズムを考察せよ.

【 8 】 正定対称行列Aは下三角行列 Lを用いてA = LLTと表すことができる.これ

は LU分解の特別な場合であり,コレスキー分解 (Cholesky decomposition)

と呼ばれる.行列

A =

4 2 −2 2

2 10 2 −5

−2 2 3 −4

2 −5 −4 10

のコレスキー分解を,LU 分解と同様のピボット型のアルゴリズムで求めよ.

計算過程を基にコレスキー分解のアルゴリズムを構成せよ.