線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/solverdirect.pdf線形方程式の解法:直接法...

87
線形方程式の解法:直接法 中島 研吾 東京大学情報基盤センター 大学院情報理工学系研究科数理情報学専攻 数値解析 (科目番号 500080)

Upload: others

Post on 14-Mar-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

線形方程式の解法:直接法

中島 研吾東京大学情報基盤センター

同 大学院情報理工学系研究科数理情報学専攻

数値解析 (科目番号 500080)

Page 2: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

2

C言語速習コース

• 以下の2日間実施

– 1月17日(金)15:00-18:00(予定)• 翌日センター試験のため休講,浅野地区は入試がなく施設利用可能

– 1月21日(火)13:00-17:00(予定)

• 情報基盤センター(浅野)本館1F 大演習室2– http://www.itc.u-tokyo.ac.jp/itcPage/CntMap/jhongo.pdf

• 教育用計算機システム(ECCS)アカウント取得のこと

– http://www.ecc.u-tokyo.ac.jp/user.html

• 今日の話の範囲であれば手計算でも理解できるが,反復法以降になると何らかのプログラミングが必要(Scilabでも良い)

Solver-Direct

Page 3: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

• ベクトル,行列の基本的性質(復習)

• 線形方程式,連立一次方程式の解法

• ガウスの消去法

• ピボットの選択

• LU分解法

Page 4: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

4

今後の予定:かなりの詰め込みになる模様

• 2013年12月13日(金)

• 2013年12月20日(金)

– 線形方程式の解法(直接法)

– 線形方程式の解法(反復法)

• 2014年1月10日(金)

• 2014年1月17日(金)

• 2014年1月24日(金)

– 偏微分方程式の数値解法

– 固有値解法

– 大規模連立一次方程式の並列解法(実例)

Solver-Direct

Page 5: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

科学技術計算の方法• 偏微分方程式(Partial Differential Equations:PDE)数値解• メッシュ,格子,粒子(mesh, grid, particle)

– 大規模な連立一次方程式を解く必要あり– 細かいメッシュほど計算量は多いが精度の良い解

5Solver-Direct

Page 6: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

有限要素法Finite-Element Method (FEM)

One of the most popular numerical methods for solving PDE’s. elements 要素(meshes) & nodes節点 (vertices)

Consider the following 2D heat transfer problem:

16 nodes, 9 bi-linear elements uniform thermal conductivity (=1) uniform volume heat flux (Q=1) T=0 at node 1 Insulated boundaries

1

1

2 3

4 5 6

7 8 9

2 3 4

5 6 7 8

9 10 11 12

13 14 15 1602

2

2

2

Q

yT

xT

3分で学ぶ有限要素法(Finite Element Method: FEM) 大学院講義「科学技術計算Ⅰ」より

6

Page 7: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

Galerkin FEM procedures Apply Galerkin procedures to each element:

1 2 3

4 5 6

7 8 9

2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

02

2

2

2

dVQyT

xTN

T

V

}{NT where{} : T at each vertex[N] : Shape function

(Interpolation function)

1

Introduce the following “weak form” of original PDE using Green’s theorem:

0

dVNQ

dVyN

yN

xN

xN

V

T

TT

V

in each elem.

3分で学ぶ有限要素法(Finite Element Method: FEM)7

Page 8: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

Element Matrix

Apply the integration to each element and form “element” matrix.

e

B

D C

A

)(

)(

)(

)(

)(

)(

)(

)(

)()()()(

)()()()(

)()()()(

)()()()(

)()()( }{}]{[

eD

eC

eB

eA

eD

eC

eB

eA

eDD

eDC

eDB

eDA

eCD

eCC

eCB

eCA

eBD

eBC

eBB

eBA

eAD

eAC

eAB

eAA

eee

ffff

kkkkkkkkkkkkkkkk

fk

0

dVNQ

dVyN

yN

xN

xN

V

T

TT

V

3分で学ぶ有限要素法(Finite Element Method: FEM)8

Page 9: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

“Sparse” Global (Overall) MatrixAccumulate each element matrix to “global” matrix.

1

1

2 3

4 5 6

7 8 9

2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

}{}]{[

FFFFFFFFFFFFFFFF

DXXXXDXXXX

XDXXXXXDXX

XXDXXXXXXXDXXXX

XXXXDXXXXXXXDXX

XXDXXXXXXXDXXXX

XXXXDXXXXXXXDXX

XXDXXXXXDX

XXXXDXXXXD

FK

3分で学ぶ有限要素法(Finite Element Method: FEM)

Sparse Matrix疎行列

9

Page 10: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

To each node … Effect of surrounding elem’s/nodes are accumulated.

1

1

2 3

4 5 6

7 8 9

2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

}{}]{[

FFFFFFFFFFFFFFFF

DXXXXDXXXX

XDXXXXXDXX

XXDXXXXXXXDXXXX

XXXXDXXXXXXXDXX

XXDXXXXXXXDXXXX

XXXXDXXXXXXXDXX

XXDXXXXXDX

XXXXDXXXXD

FK

3分で学ぶ有限要素法(Finite Element Method: FEM)10

Page 11: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

Solve the obtained global eqn’sunder certain boundary conditions (=0 in this case)

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

FFFFFFFFFFFFFFFF

DXXXXDXXXX

XDXXXXXDXX

XXDXXXXXXXDXXXX

XXXXDXXXXXXXDXX

XXDXXXXXXXDXXXX

XXXXDXXXXXXXDXX

XXDXXXXXDX

XXXXDXXXXD

3分で学ぶ有限要素法(Finite Element Method: FEM)

科学技術シミュレーションで も重要(時間かかる)

11

Page 12: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

Result … 3分で学ぶ有限要素法(Finite Element Method: FEM)

12

Page 13: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

大規模連立一次方程式Ax=bを解く!

• (教養の線形代数学(数学Ⅱ)(昔の「幾何」))

• 科学技術シミュレーションにおいて も重要なプロセス

– 時間がかかる

– 安定で高速な手法が必須:新しい科学の開拓に貢献

• 解法

– 直接法(ガウス消去法,LU分解)

– 反復法(定常法,非定常法(クリロフ(Krylov)部分空間法))

• 係数行列A– 密行列,疎行列(ゼロ多い):モデル化手法,条件により異なる

– 行列を見れば現象の全てがわかる!

• 研究としてやることはたくさんある,実用性も高い

13Solver-Direct

Page 14: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

14

線形方程式,連立一次方程式に関する基本事項,前提条件(本講義)

• 係数行列A,右辺定数ベクトルb,未知数ベクトルxの成分は全て実数と仮定(実際は複素数の場合もある)

• 係数行列Aは正方行列(n×n)と仮定(実際は正方行列でない場合もある)

• 係数行列Aは「密」とする(「疎」な場合は非零成分のみ記憶)

Solver-Direct

nnnn

n

n

aaa

aaaaaa

21

22221

11211

A

bAx

nb

bb

2

1

b

nx

xx

2

1

x

Page 15: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

15

解:Cramerの公式

• 解の存在条件

– det (A)≠ 0– rank(A)= n

• 行列のランク(rank)

– 一次独立な行ベクトル,列ベクトルの 大数

– 行列式≠0となる小行列式の 大次数

Solver-Direct

nix i

i ,,2,1detdet

AA

Adet :Aの行列式

iA :Aのi列目をbで置き換えた行列

Page 16: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

16

ベクトル・行列のノルム(Norm)||・||Solver-Direct

pn

i

pip

x

1

1

xp

p

pp

p

Axx

AxA

xx 10maxsup

ベクトル成分の大きさには無関係,||x||=1としても一般性を失わない

• p=1:1-ノルム,p=2:2-ノルム(ユークリッドノルム)

n

iijj

a1

1maxA 列方向の絶対値の和の 大値

2

1

2max AAA T

ii nii ,,2,1 B

行列Bの固有値

BAABxAAx ,

Page 17: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

17

スペクトル半径 (A)Solver-Direct

Ax

AxA

Ax

Ax

xAxAAx

xi

ii

i

iiiii

0sup

AAA ii max Aの絶対値 大固有値

(スペクトル半径)

::

i

i

x 固有値

対応する固有ベクトル

Page 18: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

18

条件数(Condition Number)cond(A)Solver-Direct

bbxxAbAx

条件数:右辺に入った誤差が左辺でどのくらいになり得るか

の倍率,条件数が大きいと「悪条件」,「性質の良くない」方程式,すなわち解きにくい方程式となる

bxA

bAx

bAx

1

1

IAAAAA

bb

AAxx

11

1

1cond

Page 19: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

19

条件数(Condition Number)(続き)Solver-Direct

この値はノルムの定義に依存する。Aがエルミート行列(実行列であれば対称行列)の場合,下記が成立することが知られている( 大 小固有値の比):

pp

1pcond AAA

A

A

AAAAA

ii

ii

iiii

min

max

1maxmaxcond2

122

AA

11

)(max)()(max)(max)(max 21

21

221

2AAAAAAA iiiiiii

Tii

Page 20: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

20

行列の基本変形(1/3)• 行に関する基本変形(基本行変換)

– 二つの行を入れ替える

– ある行を0でない定数倍する

– ある行に,他のある行の定数倍を加える• 行列Aに基本行変換を繰り返し施して得られた行列B: AとBは「行同値」

• 列に関する基本変形(基本列変換)

– 二つの列を入れ替える

– ある列を0でない定数倍する

– ある列に,他のある列の定数倍を加える• 行列Aに基本列変換を繰り返し施して得られた行列B: AとBは「列同値」

Solver-Direct

Page 21: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

21

行列の基本変形(2/3)Solver-Direct

Page 22: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

22

行列の基本変形(3/3)• 行に関する基本変形(基本行変換)

– 二つの行を入れ替える:Pを左側からかける

– ある行を0でない定数倍する:Qを左側からかける

– ある行に,他のある行の定数倍を加える:Rを左側からかける• 行列Aに基本行変換を繰り返し施して得られた行列B: AとBは「行同値」

• 列に関する基本変形(基本列変換)

– 二つの列を入れ替える:Pを右側からかける

– ある列を0でない定数倍する:Qを右側からかける

– ある列に,他のある列の定数倍を加える:Rを右側からかける• 行列Aに基本列変換を繰り返し施して得られた行列B: AとBは「列同値」

Solver-Direct

Page 23: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

• ベクトル,行列の基本的性質(復習)

• 線形方程式,連立一次方程式の解法

• ガウスの消去法

• ピボットの選択

• LU分解法

Page 24: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

24

線形方程式,連立一次方程式の解法

• 直接法(Direct Method)

– 「解を変えない変形」を駆使して問題を解きやすい形に変形

– ガウスの消去法,LU分解法 等

• 反復法(Iterative Method)

– 繰り返し計算によって解を求める方法

– ヤコビ法(Jacobi),ガウス・ザイデル法(Gauss-Seidel)– 共役勾配法(Conjugate Gradient,CG)

Solver-Direct

Page 25: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

25

連立一次方程式の行列表現

Solver-Direct

n元の連立一次方程式の一般形

nnnnnn

nn

nn

bxaxaxa

bxaxaxabxaxaxa

2211

22222121

11212111

行列表現

nnnnn

n

n

baaa

baaabaaa

21

222221

111211

(1)

Page 26: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

26

「解を変えない変形」とは?

• 二つの行を入れ替える(式の入れ替え)

• ある行を0でない定数倍する(式の定数倍)

• ある行(式)に,他のある行(式)の定数倍を加える

• 二つの列を入れ替える(変数の入れ替え)

Solver-Direct

Page 27: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

27

解を変えない変形:4種類Solver-Direct

• 二つの行を入れ替える(式の入れ替え)

• ある行を0でない定数倍する(式の定数倍)

• ある行(式)に,他のある行(式)の定数倍を加える

• 二つの列を入れ替える(変数の入れ替え)

12752

21

21

xxxx 1

2

3,1 21 xx

Page 28: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

28

(1)ある行(式)の定数倍Solver-Direct

12752

21

21

xxxx

1 ×α ( α≠0)

132175312

3,1 21 xx

12752

21

21

xxxx 1

2

Page 29: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

29

(2)ある行(式)に他行(式)の定数倍を加える

Solver-Direct

15)2()72(

52

21

21

xx

xx1 ×α ( α≠0)2 + 3,1 21 xx

12752

21

21

xxxx 1

2

153)2(1)72(

5312

Page 30: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

30

(3)行を入れ替える(式の入れ替え)Solver-Direct

12752

21

21

xxxx 1

2

例 1 2

52127

21

21

xxxx 1

2

Page 31: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

31

(4)列を入れ替える(変数の入れ替え)Solver-Direct

17252

21

21

xxxx

21 xx

解は 1,3 21 xxとなるが、どの変数を入れ替えたかを記憶しておけば、元の方程式の解が復元できる

12752

21

21

xxxx 1

2

Page 32: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

• ベクトル,行列の基本的性質(復習)

• 線形方程式,連立一次方程式の解法

• ガウスの消去法

• ピボットの選択

• LU分解法

Page 33: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

33

ガウスの消去法(1/3)Gaussian Elimination

Solver-Direct

n元の連立一次方程式の一般形

nnnnnn

nn

nn

bxaxaxa

bxaxaxabxaxaxa

2211

22222121

11212111

行列表現

nnnnn

n

n

baaa

baaabaaa

21

222221

111211

(1)

Page 34: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

34

ガウスの消去法(2/3)Gaussian Elimination

Solver-Direct

nn

nn

nn

bx

bxaxbxaxax

222

112121

行列表現

n

n

n

b

babaa

100

010

1

22

1112

解を変えない変形を駆使して、以下のような形に変形する

(2)

Page 35: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

35

ガウスの消去法(3/3)Gaussian Elimination

Solver-Direct

nn

nn

nn

bx

bxaxbxaxax

222

112121

(2)

この式の解は?

後退代入(Backward Substitution)によって簡単に求められる

)( 121211

,111

nn

nnnnn

nn

xaxabx

xabxbx

Page 36: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

36

前進消去・後退代入(1/2)Forward Elimination & Backward Substitution

Solver-Direct

前進消去(Forward elimination)

nnnnnn

nn

nn

bxaxaxa

bxaxaxabxaxaxa

2211

22222121

11212111

nn

nn

nn

bx

bxaxbxaxax

222

112121

式をこのように変形すること

Page 37: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

37

前進消去・後退代入(2/2)Forward Elimination & Backward Substitution

Solver-Direct

後退代入(Backward substitution)

)( 121211

,111

nn

nnnnn

nn

xaxabx

xabxbx

変形した式を用いて解を求めること

nn

nn

nn

bx

bxaxbxaxax

222

112121

Page 38: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

38

行と列

Solver-Direct

n元の連立一次方程式の一般形を次式のように、行列表現で表す.

nnnnn

n

n

baaa

baaabaaa

21

222221

1112111行

2行

n行

1列 2列 n列 (n+1)列

Page 39: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

39

前進消去(行列表現)

Solver-Direct

nnnnn

n

n

baaa

baaabaaa

21

222221

111211

n

n

n

b

babaa

100

010

1

22

1112

対角成分

Page 40: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

40

数値例

Solver-Direct

732122532

321

321

321

xxxxxxxxx

行列表現

732112125132

Page 41: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

41

前進消去Solver-Direct

[1,3/2,1/2,5/2] [-2,-3,-1,-5][+2,+1,-2,+1]

[ 0,-2,-3,-4]

+)

×(-2)

2/92/52/1043202/52/12/31

732112125132

1.Start

73211212

2/52/12/31

2.第1行÷2

3.第1行×(-2)+2行第1行×(-1)+3行

n

n

n

b

babaa

100

010

1

22

1112

[1,3/2,1/2,5/2] [-1,-3/2,-1/2,-5/2][+1, +2, +3, +7]

[ 0,+1/2,+5/2,+9/2]

+)

×(-1)

Page 42: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

42Solver-Direct

2/74/70022/310

2/52/12/31

22

2/5

1002/3102/12/31

3

2

1

xxx

5.第2行÷(-2)+3行 [0,1,3/2,2] [0,-1/2,-3/4, -1][0,+1/2,+5/2,+9/2]

[0, 0, +7/4,+7/2]

+)

210022/310

2/52/12/316.第3行×4/7

2/92/52/1022/310

2/52/12/314.第2行÷(-2)

2/92/52/1043202/52/12/31

n

n

n

b

babaa

100

010

1

22

1112

÷(-2)

Page 43: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

43

数値例(続き)

Solver-Direct

22

2/5

1002/3102/12/31

3

2

1

xxx

後退代入

3221)1(

23

25

1232

2

1

32

3

x

xx

x

Page 44: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

44

前進消去(行列表現):まとめ

Solver-Direct

0,,, 13121 naaa

122 a

111 a

nnnnn

n

n

baaa

baaabaaa

21

222221

111211

n

n

n

b

babaa

100

010

1

22

1112

1

2

3

4

0,,, 24232 naaa

13

24

5

6

Page 45: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

do k= 1, N

RAkk= 1.d0/A(k,k)do j= k, N

A(k,j)= A(k,j) * RAkkenddoB(k)= B(k) * RAkk

do i= k+1, NAik= A(i,k)do j= k, NA(i,j)= A(i,j) - Aik*A(k,j)

enddoB(i)= B(i) - Aik*B(k)

enddo

enddo

45

プログラム例(前進消去)Solver-Direct

A(i,j): Aのaij成分⇒前進消去後の行列B(i): bの各成分⇒前進消去後のb’の各成分

k行目の成分akj(j=k,k+1,...,N)をakkで割るakk=1となっていることに注意

i行目(i=k+1,k+2,...,N)の成分からk行目の成分のaik倍を引き,aik=0となるようにする

n

n

n

b

babaa

100

010

1

22

1112

Page 46: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

do k= N, 1, -1VAL= 0.d0do j= k+1, N

VAL= VAL + A(k,j)*B(j)enddoB(k)= B(k) - VAL

enddo

46

プログラム例(後退代入)Solver-Direct

nn

nn

nn

bx

bxaxbxaxax

222

112121

)( 121211

,111

nn

nnnnn

nn

xaxabx

xabxbx

Page 47: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

• ベクトル,行列の基本的性質(復習)

• 線形方程式,連立一次方程式の解法

• ガウスの消去法

• ピボットの選択

• LU分解法

Page 48: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

48

ガウスの消去法:前進消去プログラムを作ることを考えて見る

Solver-Direct

nnnnn

n

n

baaa

baaabaaa

21

222221

111211

n

n

n

b

babaa

100

010

1

22

1112

① i行をaiiで割る② j行(j>i)にi行の –aji 倍を足す⇒ a’ji=0③ i=i+1として繰り返す

aii=0となったらどうする ?行の交換・・・プログラムではどうやって対処する ?

Page 49: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

49

計算例

Solver-Direct

968

231121242

3

2

1

xxx

Page 50: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

50

ピボットの選択(Pivot)誤差発生防止

Solver-Direct

nnnnk

knkkk

kknkk

nk

nk

baa

baabaa

baabaaa

00

0000

101

1,1,1

222

11112

kk bp

b

ikiki

ijkjikij

bbabaaaa

ピボット(pivot:軸)

ここをゼロにするために

kjkj ap

a

kkap

k 行を akk で割り

aik 倍を i 行から引く

Page 51: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

51

ピボットの選択と誤差

Solver-Direct

p pakj /

0p 割り算が不可能

が小さい場合 が大きくなる

ikiki

ijkjikij

bbabaaaa

で丸め誤差が発生

pbk /

いずれにせよ、ピボット p は大きい方が良い.

戦略

ピボットを大きく選びながらガウスの消去法を適用すれば誤差を抑え,精度の良い解を得ることができる.

Page 52: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

52

部分ピボッティングPartial Pivoting

Solver-Direct

nnnnk

IInIk

kknkk

nk

nk

baa

baa

baa

baabaaa

00

00

00

101

222

11112

ピボッティング(pivoting):ピボット(軸)選択すること

nnnnk

kknkk

IInIk

nk

nk

baa

baa

baa

baabaaa

00

00

00

101

222

11112

この中で、絶対値が 大の aik を持つ行(第 I 行とする)を選び,I 行と k 行を入れ替える.

入れ替えたあとは、普通に計算続行(解は不変)

Page 53: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

53

完全ピボッティングFull Pivoting

Solver-Direct

nnnnJnk

IInIJIk

kknkJkk

nJk

nJk

baaa

baaa

baaa

baaabaaaa

00

00

00

101

2222

111112

nnnnknJ

kknkkkJ

IInIkIJ

nJk

nJk

baaa

baaa

baaa

baaabaaaa

00

00

00

101

2222

111112

この中で,絶対値が 大の aik を持つ行(第 I 行)と列(第 J 列)を選び,I 行と k 行,J 列と k 列とを入れ替える。

入れ替えたあとは,普通に計算続行(解は不変)

ただし,「列」の入れ替えを行なった場合は,どの列とどの列を入れ替えたかを記憶しておく必要がある(変数を入れ替えたことに相当するので)。

Page 54: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

54

部分・完全ピボッティングによるガウスの消去法

Solver-Direct

前進消去 拡張された行列表現

321923161218242

各列に対応する番号を記述(列交換しなければ不変)

を部分・完全ピボッティングで解く

968

231121242

3

2

1

xxx

Page 55: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

55

例:部分ピボッティング(1/2)

Solver-Direct

923161218242

1.1行÷2

923161214121

531022004121

220053104121

前進消去スタート

2.2行-1行,3行-1行 3.2行⇔3行(交換)

Page 56: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

56

例:部分ピボッティング(2/2)

Solver-Direct

124235

1

321

32

3

xxxxx

x

220053104121

154

100310121

3

2

1

xxx

110053104121

3.2行⇔3行(交換)

4.3行÷2

後退代入

Page 57: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

57

例:完全ピボッティング(1/5)Solver-Direct

321923161218242

1列⇔2列

312921361128224

1行×(1/4)

3129213611222/12/11

絶対値 大の項を見つけ、ピボットとする.

Page 58: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

58

例:完全ピボッティング(2/5)Solver-Direct

3129213611222/12/11 2行-1行×2

3行-1行×3

31232/72/10220022/12/11

絶対値 大の項を見つけ、つぎのピボットとする.

2行⇔3行2列⇔3列

132202032/12/7022/12/11

Page 59: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

59

例:完全ピボッティング(3/5)Solver-Direct

2行×(2/7)

3行-2行×2

3行×(7/2)

132202032/12/7022/12/11

1322020

7/67/11022/12/11

1327/27/2007/67/110

22/12/11

1321100

7/67/11022/12/11

Page 60: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

60

例:完全ピボッティング(4/5)Solver-Direct

ここまで,まとめると

前進消去

1321100

7/67/11022/12/11

後退代入

221

212

171

761

321

32

3

xxx

xx

x

前進消去終了

1321100

7/67/11022/12/11

321223161218242

Page 61: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

61

例:完全ピボッティング(5/5)Solver-Direct

列を入れ替えたことを考慮する.

13

32

21

xxxxxx

ゆえに,もとの方程式の解は:

121

3

2

1

xxx

Page 62: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

do i= 1, NJP(i)= i

enddo

do k= 1, Npivot= dabs(A(k,k))imax = kjmax = kdo i= k, Ndo j= k, N

if (dabs(A(i,j)).gt.pivot) thenpivot= dabs(A(i,j))imax = iimax = j

endifenddoenddo

62

プログラム例(完全Pivoting)(1/3)Solver-Direct

JP(i) (i=1,2,...N)JP(新列番号)=旧列番号(変数番号)

k行目の操作:まずakkをpivotとし,下図の赤点線の範囲から

大の成分aimax,jmax(図中ではaI,J)を探索する

nnnnJnk

IInIJIk

kknkJkk

nJk

nJk

baaa

baaa

baaa

baaabaaaa

00

00

00

101

2222

111112

Page 63: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

if (jmax.ne.k) theniik= JP(k)JP(k )= JP(jmax)JP(jmax)= iik

endif

do i= 1, Npivot= A(i,k)A(i,k)= A(i,jmax)A(i,jmax)= pivot

enddo

do j= k, Npivot= A(k,j)A(k ,j)= A(imax,j)A(imax,j)= pivot

enddo

pivot = B(k)B(k) = B(imax)B(imax)= pivot

63

プログラム例(完全Pivoting)(2/3)Solver-Direct

新JP(k) = 旧JP(jmax)新JP(jmax)= 旧JP(k)

k列とjmax列(J列)を入れ替える

nnnnJnk

IInIJIk

kknkJkk

nJk

nJk

baaa

baaa

baaa

baaabaaaa

00

00

00

101

2222

111112

k行とimax行(I行)を入れ替える

(右辺の)k行とimax行(I行)を入れ替える

Page 64: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

RAkk= 1.d0/A(k,k)do j= k, NA(k,j)= A(k,j) * RAkk

enddoB(k)= B(k) * Rakk

do i= k+1, NAik= A(i,k)do j= k, NA(i,j)= A(i,j) - Aik*A(k,j)

enddoB(i)= B(i) - Aik*B(k)

enddo

64

プログラム例(完全Pivoting)(3/3)Solver-Direct

nnnnJnk

IInIJIk

kknkJkk

nJk

nJk

baaa

baaa

baaa

baaabaaaa

00

00

00

101

2222

111112

新しい番号を使用して,下図の赤点線の範囲で前進消去

Page 65: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

• ベクトル,行列の基本的性質(復習)

• 線形方程式,連立一次方程式の解法

• ガウスの消去法

• ピボットの選択

• LU分解法

Page 66: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

66

連立一次方程式の行列表現より一般的な表現方法

Solver-Direct

n元の連立一次方程式の一般形

nnnnnn

nn

nn

bxaxaxa

bxaxaxabxaxaxa

2211

22222121

11212111

行列表現

nnnnnn

n

n

b

bb

x

xx

aaa

aaaaaa

2

1

2

1

21

22221

11211

A x b

bAx

Page 67: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

67

LU分解による解法

Solver-Direct

LU分解(エル・ユーブンカイ)

Aがn×n行列のとき,Aを次式のように表すことを(あるいは,そのようなLとUそのものを)AのLU分解という.

nn

n

n

n

nnnnnnnn

n

n

n

u

uuuuuuuuu

lll

lll

aaaa

aaaaaaaaaaaa

000

000

1

010010001

333

22322

1131211

321

3231

21

321

3333231

2232221

1131211

LUA L:Lower triangular part of matrix A(下三角成分)U:Upper triangular part of matrix A(上三角成分)

Page 68: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

68

LU分解による連立一次方程式解法

Solver-Direct

2

3

LUA となるAのLU分解LとUを求める

bLy の解yを求める(前進代入)

yUx の解xを求める(後退代入)

このxが bAx の解となる

bLyLUxAx

Page 69: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

69

Ly=bを解く

Solver-Direct

bLy

nnnn b

bb

y

yy

ll

l

2

1

2

1

21

21

1

01001

nnnn byylyl

byylby

2211

22121

11

i

n

ininnnnn ylbylylby

ylbyby

1

12211

12122

11

前進代入(Forward Substitution)

Page 70: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

70

Ux=yを解く

Solver-Direct

yUx

nnnn

n

n

y

yy

x

xx

u

uuuuu

2

1

2

1

222

11211

00

0

11212111

1,111,1

yxuxuxu

yxuxuyxu

nn

nnnnnnn

nnnn

112

111

1,1,111

/

/)(/

uxuyx

uxuyxuyx

j

n

ij

nnnnnnn

nnnn

後退代入(Backward Substitution)

Page 71: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

71

LU分解法のメリット

Solver-Direct

一回の演算量はガウスの消去法と同じ.

メリットは

bAx を、いろいろなbに対して解かなければならない場合:一度LU分解A=LUを求めておけば、bが変わっても、Ly=b, Ux=yを解くだけでOK.

ガウスの消去法では,bが変わるたびに初からやり直し.

Page 72: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

72

LU分解を計算するSolver-Direct

nn

n

n

n

nnnnnnnn

n

n

n

u

uuuuuuuuu

lll

lll

aaaa

aaaaaaaaaaaa

000

000

1

010010001

333

22322

1131211

321

3231

21

321

3333231

2232221

1131211

Page 73: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

73

aij={Lのi行目}×{Uのj列目}Solver-Direct

nn

jj

nj

nj

nj

nnn

iii

nnnjnnn

inijiii

nj

nj

nj

u

u

uuuuuuuuuuuu

lll

lll

lll

aaaaa

aaaaa

aaaaaaaaaaaaaaa

0000000000

000

10010001000100001

3333

222322

11131211

321

321

3231

21

321

321

33333231

22232221

11131211

Page 74: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

74

LU分解の求め方(1/4)Solver-Direct

nn

n

n

n

nnnnnnnn

n

n

n

u

uuuuuuuuu

lll

lll

aaaa

aaaaaaaaaaaa

000

000

1

010010001

333

22322

1131211

321

3231

21

321

3333231

2232221

1131211

① nn uauaua 1112121111 ,,,

ja1 :[L]の第1行と,[U]の第 j 列の内積 ⇒ [U]の第1行のみ残る

nuuu 11211 ,,,

Page 75: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

75

LU分解の求め方(2/4)Solver-Direct

nn

n

n

n

nnnnnnnn

n

n

n

u

uuuuuuuuu

lll

lll

aaaa

aaaaaaaaaaaa

000

000

1

010010001

333

22322

1131211

321

3231

21

321

3333231

2232221

1131211

② 1111113131112121 ,,, ulaulaula nn

1ia :[L]の第 i 行と,[U]の第1列の内積

13121 ,,, nlll

① nn uauaua 1112121111 ,,, nuuu 11211 ,,,

Page 76: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

76

LU分解の求め方(3/4)Solver-Direct

nn

n

n

n

nnnnnnnn

n

n

n

u

uuuuuuuuu

lll

lll

aaaa

aaaaaaaaaaaa

000

000

1

010010001

333

22322

1131211

321

3231

21

321

3333231

2232221

1131211

③ nnn uulauula 2121222122122 ,, nuuu 22322 ,,,

② 1111113131112121 ,,, ulaulaula nn 13121 ,,, nlll

① nn uauaua 1112121111 ,,, nuuu 11211 ,,,

ja2 :[L]の第 2行と,[U]の第 j 列の内積

Page 77: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

77

LU分解の求め方(4/4)Solver-Direct

nn

n

n

n

nnnnnnnn

n

n

n

u

uuuuuuuuu

lll

lll

aaaa

aaaaaaaaaaaa

000

000

1

010010001

333

22322

1131211

321

3231

21

321

3333231

2232221

1131211

④ ,2232123132 ulula

③ nnn uulauula 2121222122122 ,, nuuu 22322 ,,,

② 1111113131112121 ,,, ulaulaula nn 13121 ,,, nlll

① nn uauaua 1112121111 ,,, nuuu 11211 ,,,

24232 ,,, nlll

2ia :[L]の第 i 行と,[U]の第2列の内積

Page 78: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

78

数値例(1/2)Solver-Direct

44

3433

242322

14131211

434241

3231

21

00000

0

1010010001

17407822

107624321

uuuuuuuuuu

lllll

lA

第1行 14131211 4,3,2,1 uuuu

第1列

0/002/22,2/22

11411141

1131113111211121

ulululululul

第2行

21017,26

24241421

2323132122221221

uuuluuuluuul

第2列 24,12 42224212413222321231 lulullulul

Page 79: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

79

数値例(2/3)Solver-Direct

44

3433

242322

14131211

434241

3231

21

00000

0

1010010001

17407822

107624321

uuuuuuuuuu

lllll

lA

第3行

17,38

343424321431

333323321331

uuululuuulul

第3列 37 43334323421341 lululul

第4行(第4列) 21 4444344324421441 uuululul

1行,1列,2行,2列、・ ・ ・の順に求める式を作っていく.

Page 80: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

80

数値例(3/3)Solver-Direct

2000130021204321

1320011200120001

17407822

107624321

A

L U

Page 81: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

do k= 1, Ndo j= k, Ns= 0.d0if (k.ne.1) thendo ll= 1, k-1s= s + A(k,ll)*A(ll,j)

enddoendifA(k,j)= A(k,j) - s

enddo

if (k.ne.N) thendo i= k+1, Ns= 0.d0if (k.ne.1) thendo ll= 1, k-1s= s + A(i,ll)*A(ll,k)

enddoendifA(i,k)= (A(i,k)-s)/A(k,k)

enddoendif

enddo

81

プログラム例(LU分解)(1/3)Solver-Direct

nn

n

n

n

nnn

nnnnn

n

n

n

u

uuuuuuuuu

lll

lll

aaaa

aaaaaaaaaaaa

000

000

1

010010001

333

22322

1131211

321

3231

21

321

3333231

2232221

1131211

A(i,j): Aのaij成分⇒L(対角成分除く)+U

Page 82: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

do k= 1, Ndo j= k, Ns= 0.d0if (k.ne.1) thendo ll= 1, k-1s= s + A(k,ll)*A(ll,j)

enddoendifA(k,j)= A(k,j) - s

enddo

82

プログラム例(LU分解)(2/3)Solver-Direct

nn

n

n

n

nnnnnnnn

n

n

n

u

uuuuuuuuu

lll

lll

aaaa

aaaaaaaaaaaa

000

000

1

010010001

333

22322

1131211

321

3231

21

321

3333231

2232221

1131211

③ nnn uulauula 2121222122122 ,, nuuu 22322 ,,,

kj

k

lljklkj uula

1

1

:kja Lのk行目,Uのj列目の内積

Page 83: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

if (k.ne.N) thendo i= k+1, Ns= 0.d0if (k.ne.1) thendo ll= 1, k-1s= s + A(i,ll)*A(ll,k)

enddoendifA(i,k)= (A(i,k)-s)/A(k,k)

enddoendif

enddo

83

プログラム例(LU分解)(3/3)Solver-Direct

nn

n

n

n

nnnnnnnn

n

n

n

u

uuuuuuuuu

lll

lll

aaaa

aaaaaaaaaaaa

000

000

1

010010001

333

22322

1131211

321

3231

21

321

3333231

2232221

1131211

④ ,2232123132 ulula 24232 ,,, nlll

kkik

k

llkilik ulula

1

1

:ika Lのi行目,Uのk列目の内積

Page 84: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

do i= 1, NY(i)= B(i)

enddo

do i= 2, Ns= 0.d0do ll= 1, i-1s= s + A(i,ll)*Y(ll)

enddoY(i)= Y(i) - s

enddo

84

プログラム例(前進代入)Solver-Direct

bLy

nnnn b

bb

y

yy

ll

l

2

1

2

1

21

21

1

01001

nnnn byylyl

byylby

2211

22121

11

i

n

ininnnnn ylbylylby

ylbyby

1

12211

12122

11

B(i): bの各成分⇒解xの各成分

B(i): yの各成分(実は不要)

Page 85: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

B(N)= Y(N)/A(N,N)do i= N-1, 1, -1s= 0.d0do ll= i+1, Ns= s + A(i,ll)*B(ll)

enddoB(i)= (Y(i)-s)/A(i,i)

enddo

85

プログラム例(後退代入)Solver-Direct

yUx

nnnn

n

n

y

yy

x

xx

u

uuuuu

2

1

2

1

222

11211

00

0

11212111

1,111,1

yxuxuxu

yxuxuyxu

nn

nnnnnnn

nnnn

112

111

1,1,111

/

/)(/

uxuyx

uxuyxuyx

j

n

ij

nnnnnnn

nnnn

Page 86: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

86Solver-Direct

22

2/5

1002/3102/12/31

3

2

1

xxx

2,1,3,, 321 xxx

715

321212

132

3

2

1

xxx

ガウスの消去法

LU分解

4/700320

132

14/12/1011001

321212

132

Page 87: 線形方程式の解法:直接法nkl.cc.u-tokyo.ac.jp/13n/SolverDirect.pdf線形方程式の解法:直接法 中島研吾 東京大学情報基盤センター 同大学院情報理工学系研究科数理情報学専攻

87Solver-Direct

線形計算の数理(岩波数学叢書)杉原 正顯 (著)室田 一雄 (著)

本書では、連立1次方程式と固有値問題

を中心に、線形計算の数理的基礎を解説。理論の全体像を俯瞰できるように標準的な話題を見通し良い形で記述した。同時に、高度な内容でも数理的に興味深い理論や発展性のあるテーマは 新結果も取り上げて詳説。考え方の筋道がわかるよう丁寧に説明して、研究者、技術者の双方に役立つ内容とした。