• 検索結果がありません。

● 講義資料

N/A
N/A
Protected

Academic year: 2021

シェア "● 講義資料"

Copied!
7
0
0

読み込み中.... (全文を見る)

全文

(1)

● 講義資料

▼ 講義予定

数値積分

Strumの二分法

● 前回の講義のまとめ

▼ 消去法

LU 分解

現実に連立一次方程式を解く際に,同一のA, 異なるb に対して,Ax=b を何度も解く場合 がある. 特に,あるb1に対してAx=b1 を解き,そのxから得られるb2 に対して解を求め る場合もある. このような場合, Gaussの消去法を何度も適用することは, O(n3)の計算を何 度も行うことになり,非常に効率が悪い.

もし,Aに対して,ある下三角行列L, 上三角行列U を用いて,事前にA=LU と分解され ていれば,Ax=b を解く手順は,LU x=b より,

Ly=b, 前進代入で解く, U x=y, 後退代入で解く

として,ともにO(n2)のアルゴリズムで解を得ることができる. ここで,前進代入とは,後退 代入と同じ手順を下三角行列に適用したものである.

Aを正則行列としたとき,次の定理が成り立つ.

任意の正則行列Aに対して,Aの行を適当に入れ替えれば,入れ替えたあとの行列を再びA と書いたとき,ある上三角行列U,下三角行列Lが存在して,A=LU と書ける. これをLU 分解と呼ぶ.

この証明はGauss の消去法のアルゴリズムから導かれる. ここでは, Gauss の消去法で枢軸 選択が必要ない(対角成分が 0にはならない)場合のみを考える. この時, ある基本変形行 列の列{Mi}Ni=1と上三角行列 U が存在して,

MN· · ·M1A=U

と書ける. いま,Mi には行交換の行列が含まれないので,すべてのMi は下三角行列である.

よって,

A= (M1−1· · ·MN−1)U

となる. ここで, 下三角行列の逆行列は再び下三角となり,下三角行列の積は下三角なので, M1−1· · ·MN−1は下三角行列となる.

(2)

実際のLU分解は,L= (ℓij),U = (uij)と書いたとき, aij=

j

X

k=1

ikukj, i > j,

aii=

i

X

k=1

ikuki=

i

X

k=1

ijukj, i=j,

aij=

i

X

k=1

ikukj, i < j,

(1)

となるが,n2+n個の未知数{ℓij, uij}に対して, n本の方程式があり,このままではL,U を定めることができない. そこで,

Lの対角成分を1 にとる(Doolittle Type) U の対角成分を 1にとる(Crout Type) のいずれか一方の条件をおくことが多い.

いま, Crout Type (uii= 0)を仮定すると, aij=

j−1

X

k=1

ikukj+ij, ij,

aij=

i−1

X

k=1

ikukj+iiuij, i < j, となるので,これを書き直すと,

ij =aij

j−1

X

k=1

ikukj, ij,

uij = 1 ii

aij

i−1

X

k=1

ikukj

!

, i < j,

(2)

となる.

もっとも標準的なアルゴリズムは,Crout Algorithmと呼ばれる次の方法である. (Crout typeを仮定している.)

i= 1, . . . , nに対して,以下を行う.

1. j= 1, . . . , iに対して,

ij=aij

j−1

X

k=1

ikukj

を計算する.

2. j=i+ 1, . . . , nに対して,

uij = 1 ii

aij

i−1

X

k=1

ikukj

!

を計算する.

この方法では(多くのLU分解のアルゴリズムでは), L,U のデータはAの上に上書きで きる. 逆に,Aの上にL,U を上書きした方が,プログラムが書きやすい.

(3)

▼ 反復法

Jacobiの反復法

Aは,n×n正方行列で,その対角成分は0 を含まないと仮定する. この時,連立一次方程式 Ax=b を解くために,以下の反復解法を考えることができる.

x(0) を適当に与え,

x(k+1)1 = 1 a11

b1a12x(k)2 − · · · −a1nx(k)n , ...

x(k+1)n = 1 ann

bnan2x(k)2 − · · · −ann−1x(k)n−1 , これをJacobiの反復法と呼ぶ.

Aを対角部分D,(対角部分を含まない)上三角部分U,(対角部分を含まない)下三角部 Lを使ってA=D+L+U と書いたとき, Jacobiの反復法は

x(k+1)=AJx(k)+D−1b, AJ =−D−1(L+U) とかきあらわすことができる.

Gauss-Seidel

Jacobiの反復法で,x1 から順に計算しているとき,すでに計算済みのx(k+1) の成分を利用

して反復計算を行った方が,収束が速いと予想できる. そのように改良した以下の反復法を Gauss-Seidel 法と呼ぶ.

x(k+1)1 = 1 a11

b1a12x(k)2 − · · · −a1nx(k)n , ...

x(k+1) = 1 aℓℓ

baℓ1x(k+1) − · · · −aℓℓ−1x(k+1)ℓ−1 aℓℓ+1x(k)ℓ+1− · · · −ann−1x(k)n−1 , ...

x(k+1)n = 1 ann

bnan2x(k+1)2 − · · · −ann−1x(k+1)n−1 ,

Gauss-Seidel法は,

(D+L)x(k+1)=−U x(k)+b と書けているので,

x(k+1)=AGSx(k)+ (D+L)−1b, AGS=−(D+L)−1U

と書きあらわすことができる.

(4)

★ 反復法の収束

一般に反復計算は,任意の初期値x(0) に対して収束するわけではないが,B n×n行列と し,その絶対値最大の固有値ρ(B)ρ(B)<1をみたすならば,反復計算

x(k+1)=Bx(k)+c は,任意の初期値に対して収束し,収束値x

x=Bx+c

を満たすことが証明できる. そのときの収束の速さはO(ρ(B)k)となる.

具体的なAに関して,AJ,AGS ρ(AJ)<1,ρ(AGS)<1をみたすことを確かめるのは, 般には容易ではないが,以下の定理が知られている.

Aが正定値実対称行列ならば,ρ(AGS)<1が成り立つ.

Aが対角優位,すなわち, すべての行に対して

|aii|>X

i6=j

|aij| が成り立つならばρ(AJ)<1

(5)

▼ 数値積分

区間 [0,1] 上の連続関数 f に対する定積分I = Z 1

0

f(x)dx の近似値を計算することを考 える.

[0,1] 上に相異なる n 個の点 {xi}ni=1 と, その点での関数値 {yi}ni=1 が与えられたとき, yi=f(xi)をみたすn1次多項式f がただひとつ定まる. (ラグランジュ補間)

代表的な数値積分公式(閉じた公式)

If(1) +f(0)

2 ,

I 1

6(f(0) + 4f(1/2) +f(1)), I1

8(f(0) + 3f(1/3) + 3f(2/3) +f(1))

次の母関数で定義される数をBernoulli数とよぶ x

ex1 =X

n=0

Bn

n!xn. このとき,

Bn(x) =

n

X

j=0

n j

Bjxn−j

によって定義される多項式{Bn(x)} Bernoulli多項式と呼ぶ. Bernoulli数, Bernoulli 項式は次の性質をみたす.

1. B0(x) =B0= 1,B1=−1/2,B2k+1= 0,k1.

2. Bk(x) =kBk−1(x)

台形公式の誤差は,O(h2)である. 一般に2n1点の公式はO(h2n), 2n点の公式はO(h2n) となる. この結果は,オイラー・マクローリンの公式から得ることができる.

f を区間[0, n]上のなめらかな関数としたとき,

n

X

i=0

f(i) = Z n

0

f(x)dx+1

2(f(0) +f(n)) +

k

X

j=2

Bj

j!(f(j−1)(n)f(j−1)(0)) +Rk, Rk =(−1)k−1

k!

Z n

0

B˜k(x)f(k)(x)dx

が成り立つ. (オイラー・マクローリンの公式)ただし, ˜Bk(x) Bk(x)を周期1 で拡張し た関数である.

区間[0,1]上にn個の点{xi} を取ると,区間[0,1]上の任意のn1 次以下の多項式f 対して,

Z 1

0

f(x)dx=Ajf(xj) となる{Aj}を一意的に定めることができる.

(6)

区間[0,1]上のn次多項式Pnであって,以下の条件をみたす多項式をLegrandre polynomial という.

(Pn, Pm) = Z 1

0

Pn(x)Pm(x)dx=δij

Legrandre polynomialは,以下の性質を持つ.

1. (n+ 1)Pn+1(x)(2n+ 1)xPn(x) +nPn−1(x) = 0が成り立つ.

2. Pn n次多項式である.

3. Pn は,区間[0,1]上に相異なる n個の零点を持つ.

区間[0,1]上のn個の点{xi}を,Pn の零点と取ると,区間[0,1]上の任意の2n1次以下 の多項式f に対して,

Z 1

0

f(x)dx=Ajf(xj) となる{Aj}を一意的に定めることができる. (Gaussの積分法)

Strum の二分法

次の条件を満たす関数列{fk}nk=0 Strum 列と呼ぶ.

1. f0(x)0 でない定数関数である.

2. fk(x)fk−1(x)は等しい根をもたない.

3. fk(t) = 0 ならばfk+1(t)fk−1(t)<0 となる.

4. fn(t) = 0 ならば,fn(t)fn−1(t)<0となる

関数列{fk(λ)}nk=0 Strum 列をなすと仮定する. この時, fn(a)fn(b) 6= 0をみたす区間 [a, b]内に存在するfn(x) = 0の実根の数pは,

p=N(b)N(a) に等しい. ただしN(t)は,

fn(t), fn−1(t), . . . , f0(t)

の符号の変化の数である. ただし, fk−1(t)<0,fk(t) = 0, fk+1(t)>0 となるもので1回の 符号変化と数える. (Strumの定理)

f(x)は重根を持たない多項式であると仮定する. さらに,あるStrum{fk(x)}nk=0 であっ て,f(x) =fn(x)となるものが存在すると仮定する. また,区間[α, β]内にすべてのf(x) 根が存在すると仮定する. この時,f(x)の小さい方からk番目の根をλk を求めるための二 分法は以下の通りである.

λkj, βj],

j+1, βj+1]j, βj], βj+1αj+1= βjαj

2 .

(7)

が成り立つ. ただし,αj,βj は,次によって定められる.

µj= αj+βj

2 ,

αj+1=

(αj if Nj)k+ 1, µj if Nj)< k+ 1 , βj+1=

(µj if Nj)k+ 1, βj if Nj)< k+ 1 . (Strumの二分法)

参照

関連したドキュメント

従って、こ こでは「嬉 しい」と「 楽しい」の 間にも差が あると考え られる。こ のような差 は語を区別 するために 決しておざ

問についてだが︑この間いに直接に答える前に確認しなけれ

しかしながら生細胞内ではDNAがたえず慢然と合成

 高齢者の外科手術では手術適応や術式の選択を

実際, クラス C の多様体については, ここでは 詳細には述べないが, 代数 reduction をはじめ類似のいくつかの方法を 組み合わせてその構造を組織的に研究することができる

これはつまり十進法ではなく、一進法を用いて自然数を表記するということである。とは いえ数が大きくなると見にくくなるので、.. 0, 1,

児童について一緒に考えることが解決への糸口 になるのではないか。④保護者への対応も難し

ヒュームがこのような表現をとるのは当然の ことながら、「人間は理性によって感情を支配