Document

Numerical Recipes in C
[日本語版]
初版
宮崎大輔
2003年12月4日(木)
PBVセミナー
第6章 特殊関数
Special functions
6th Physics Based Vision Seminar
2003/Dec/4
ガンマ関数(gamma function)
• ガンマ関数
• zが整数なら
• 漸化式
3
6th Physics Based Vision Seminar
2003/Dec/4
ベータ関数(beta function)
• ベータ関数
• ガンマ関数との関係
4
6th Physics Based Vision Seminar
2003/Dec/4
不完全ガンマ関数
(incomplete gamma function)
• 不完全ガンマ関数
• 極限値
• P(a,x)の補関数
も不完全ガンマ関数という
• 極限値
5
6th Physics Based Vision Seminar
2003/Dec/4
誤差関数
• 誤差関数
• その補関数
• 極限値と対称性
• 不完全ガンマ関数との関係
6
6th Physics Based Vision Seminar
2003/Dec/4
累積Poisson(ポアソン)確率関数
(cumulative Poisson probability function)
• 累積Poisson確率関数Px(<k)
(x:正, 整数k≧1)
• 期待平均値をxとしたとき、Poissonのランダム事象
の起きる回数が0以上k-1以下の確率
• 極限値
• 不完全ガンマ関数との関係
7
6th Physics Based Vision Seminar
2003/Dec/4
カイ2乗確率関数
• P(χ2|ν)は、あるモデルについて、観測されるカイ2乗
の値がχ2より小さくなる確率
• これを1から引いたものがQ(χ2|ν)
• 整数νは自由度の個数
• 極限値
• 不完全ガンマ関数との関係
8
6th Physics Based Vision Seminar
2003/Dec/4
不完全ベータ関数(incomplete beta function)
• 極限値
• 対称性
9
6th Physics Based Vision Seminar
2003/Dec/4
Studentの分布(Student’s distribution)
• Studentの分布
• 応用例:二つの分布が同じ平均を持つかどうか
• 極限値
• 不完全ベータ関数との関係
10
6th Physics Based Vision Seminar
2003/Dec/4
F分布の確率関数
• 応用例:二つの標本が同じ分散を持つかどうか
• 極限値
• 不完全ベータ関数との関係
11
6th Physics Based Vision Seminar
2003/Dec/4
累積2項確率(cumulative binomial probability)
• ある事象が1回の試行で起きる確率をpとする
• そのとき、n回の試行でk回以上それが起きる確率P
を累積2項確率という
• 不完全ベータ関数との関係
12
6th Physics Based Vision Seminar
2003/Dec/4
Bessel(ベッセル)関数(Bessel function)
• Bessel関数
• Bessel関数
13
6th Physics Based Vision Seminar
2003/Dec/4
変形Bessel関数(modified Bessel function)
• 変形Bessel関数
14
6th Physics Based Vision Seminar
2003/Dec/4
球面調和関数(spherical harmonics)
• 球面調和関数Ylm(θ,φ) (-l≦m≦l)
• Legendre(ルジャンドル)陪多項式(associated Legendre polynomials)
Plm(x)との関係
• mが負でもこの関係式を使えばOK
• 最初のいくつかのLegendre陪多項式と、対応する正規化された球面調和
関数
15
6th Physics Based Vision Seminar
2003/Dec/4
楕円積分(elliptic integral)
• 以下のような積分を楕円積分という
A( x)  B( x) S ( x)
 C ( x)  D( x)
S ( x)
dx
A( x)
 B( x) S ( x) dx
ただし、A,B,C,Dは任意の多項式、Sは3次か4次の
多項式
16
6th Physics Based Vision Seminar
2003/Dec/4
一般第2種楕円積分
(general elliptic integral of the 2nd kind)
el 2( y, kc , a, b)  
(a  bx 2 )dx
y
0
(1  x 2 ) (1  x 2 )(1  kc2 x 2 )
• y≧0でa,b,kcは任意の実数
• 変数変換 x  tan k 2  1  kc2
2
により
tan y a  (b  1) sin 
el 2( y, kc , a, b)  
0
1
1  k sin 
2
2
d
17
6th Physics Based Vision Seminar
2003/Dec/4
完全楕円積分(complete elliptic integral)
• 一般第2種楕円積分
el 2( y, kc , a, b)  
(a  bx 2 )dx
y
0
(1  x 2 ) (1  x 2 )(1  kc2 x 2 )
でy→∞つまりtan-1y→π/2のときを完全楕円積分とい
う
• より一般的に、一般完全楕円積分は
cel(kc , p, a, b)  
a  bx2

0
(1  px ) (1  x )(1  k x )
 2

0
2
2
2
c
2
dx
(a cos2   b sin 2  )d
(cos2   p sin 2  ) cos2   kc2 sin 2 
18
6th Physics Based Vision Seminar
2003/Dec/4
第1種Legendre楕円積分
(Legendre elliptic integral of the 1st kind)
• 第1種Legendre楕円積分
d

F ( , k )  F ( \  )  
0

dx
x
0
1  k 2 sin 2 
(1  x )(1  k x )
2
2
c
2

dy
y
0
(1  y 2 )(1  k 2 y 2 )
 el 2( x, kc ,1,1)
• ここで、
y  sin , x  tan, kc2  1  k 2 , kc  cos , k  sin 
19
6th Physics Based Vision Seminar
2003/Dec/4
第1種完全楕円積分
(complete elliptic integral of the 1st kind)

K (k )  F ( , k )  cel (kc ,1,1,1)
2
20
6th Physics Based Vision Seminar
2003/Dec/4
第2種Legendre楕円積分
(Legendre elliptic integral of the 2nd kind)
• 第2種Legendre楕円積分

E ( , k )  E ( \  )  
0

x
0
1  k 2 sin 2  d  
1  kc2 x 2 dx
(1  x 2 ) 1  x 2
y
0
1  k 2 y 2 dy
1 y2
 el 2( x, kc ,1, kc2 )
• ここで、
y  sin , x  tan, kc2  1  k 2 , kc  cos , k  sin 
21
6th Physics Based Vision Seminar
2003/Dec/4
第2種完全楕円積分
(complete elliptic integral of the 2nd kind)
• 第2種完全楕円積分

E (k )  E ( , k )  cel (kc ,1,1, kc2 )
2
• 以下を用いることもある

B ( , k )  
0

D( , k )  
0
cos 2 
1  k 2 sin 2 
sin 2 
1  k sin 
2
2
d  el 2( x, kc ,1,0)
d  el 2( x, kc ,0,1)
22
6th Physics Based Vision Seminar
2003/Dec/4
第3種楕円積分(elliptic integral of the 3rd kind)
• 第3種楕円積分

d
0
(1  n sin 2  ) 1  k 2 sin 2 
 ( , n, k )  
dy

y
0
(1  ny2 ) (1  y 2 )(1  k 2 y 2 )

x
1 x2
0
(1  px2 ) (1  x 2 )(1  kc2 x 2 )
dx  el3( x, kc , p )
• ここで、
y  sin , x  tan, kc2  1  k 2 , kc  cos , k  sin 
p≡n+1
23
6th Physics Based Vision Seminar
2003/Dec/4
第3種完全楕円積分
(complete elliptic integral of the 3rd kind)
• 第3種完全楕円積分

 ( , n, k )  cel (kc , p,1,1)
2
• p≡n+1
24
6th Physics Based Vision Seminar
2003/Dec/4
Jacobi(ヤコビ)の楕円関数
(Jacobian elliptic function)
• 第1種Legendre楕円積分(ここで、y=sinφ)
d

F ( , k )  F ( \  )  
0

• この楕円関数
関数
dx
x
0
1  k 2 sin 2 
(1  x )(1  k x )
2
2
c
2

dy
y
0
(1  y 2 )(1  k 2 y 2 )
 el 2( x, kc ,1,1)
を考える代わりにその逆
を考える。あるいは同じことであるが
とも書ける
• 関数cnとdnは
と定義
• 以上、sn(u,kc), cn(u,kc), dn(u, kc)をJacobiの楕円関数という
25
第7章 乱数
Random numbers
6th Physics Based Vision Seminar
2003/Dec/4
線形合同法(linear congruential generators)
• 整数の列I1,I2,I3,…は0以上m-1以下
• 漸化式
により生成
• mは法(modulus)、a,cは正の整数で乗数(multiplier)、
増分(increment)
• この漸化式はいつかはもとに戻り、その周期はm以
下
• m,a,cをうまく選べば最大の周期mが得られる
• 最大周期の場合0以上m-1以下のすべての整数が
どこかで生じる
• 初期値(種,seed)I0は何を選んでも、そこから数列が
出発するというだけで結局は同じこと
27
6th Physics Based Vision Seminar
2003/Dec/4
「拙速」(quick and dirty)法
• プログラムに
の一文を入れるだ
け
28
6th Physics Based Vision Seminar
2003/Dec/4
さらに速い乱数生成法
• 整数の長さが32ビットでm=232にすればmod mが不
要になり、単に以下を計算するだけで良い
• a=1664525
• c=10013904223
29
6th Physics Based Vision Seminar
2003/Dec/4
乗算合同法
• 以下のa,mの値を使った単純な乗算合同法は、そこ
そこいい乱数を生成し、他の乱数生成法を評価する
際の良い基準である
30
6th Physics Based Vision Seminar
2003/Dec/4
切り混ぜ
1. iyの値をもとに表のどれかを選ぶ
2. 表の選んだ箱の中に入っている値を出力(乱数)として吐く。
さらにiyをその箱の中の値にする
3. その箱の中には新しく計算された乱数値を入れる
31
6th Physics Based Vision Seminar
2003/Dec/4
2通りの生成法の組み合わせ
• 2つの乱数値を足した新しい乱数列は周期が長くな
る(=2つの周期の最小公倍数)
• m1=2147483563, a1=40014, 周期m1-1
• m2=2147483399, a2=40692, 周期m2-1
• これらの組み合わせ:周期≒2.3×1018
32
6th Physics Based Vision Seminar
2003/Dec/4
減算法(subtractive method)
•
•
•
•
•
•
ma[1…55]にあらかじめ値を入れておく
以下、mjは必ず範囲内に収まるようにする
乱数1: ma[1]-ma[32], ma[1]に乱数1を入れる
乱数2: ma[2]-ma[33], ma[2]に乱数2を入れる
乱数3: ma[3]-ma[34], ma[3]に乱数3を入れる
・・・
33
6th Physics Based Vision Seminar
2003/Dec/4
データ暗号化規格
(Data Encryption Standard, DES)
• 入力64ビット
• ビット混ぜ16回
• 暗号化関数
(cipher function)
g: 32ビット→32ビット
非線形
34
6th Physics Based Vision Seminar
2003/Dec/4
データ暗号化に基づく乱数列
• 右が乱数生成のためのg
• 入力は右32ビット語
• C1, C2: 定数, ただし32ビットのうち0が
16個あり1が16個ある数
• 半語を反転(reverse half-words): 左右
16ビットを入れ替える
• gの出力値と左32ビット語を32ビット
XORした値を新しい右32ビット語とする
• 古い右32ビット語は新しい左32ビット語
に入れる
• この左右32ビット語の入れ替えを4回計
算した結果を乱数値として出力とする
35
6th Physics Based Vision Seminar
2003/Dec/4
相対的な実行時間と推奨
• ran0=乗算合同法, ran1=切り混ぜ, ran2=2通りの生
成法の組み合わせ, ran3=減算法, ranqd1=拙速法,
ranqd2=232線形合同法, ran4=データ暗号化乱数列
• お薦めran1, 長周期が必要ならran2, ran4は良いけ
ど遅い
36
6th Physics Based Vision Seminar
2003/Dec/4
GF(2)
• 位相qのGalois体をGF(q)と表す
• 簡単に言うと、GF(2)は、2進数で、加減乗除ができ
る集合
• 体(field)では逆元-xが存在しなければならない
つまり (-x)+x=x+(-x)=0が成り立つ
+ 0 1
?+0=0を満たす?は0、よって-0=0
0 0 1
?+1=0を満たす?は1、よって-1=1
1 1 0
以上から-x=x
× 0 1
• また、0+0=0、1+1=0からx+x=0
0
0
0
1
0
1
37
6th Physics Based Vision Seminar
2003/Dec/4
既約多項式
• それ以上因数分解できない多項式
• x2+1は実数の世界だと既約(=分解不可能)
0,1の世界だと(x+1)(x+1)=x2+1より既約でない(=分
解可能)
• GF(2)上の多項式x2+x+1は既約
38
6th Physics Based Vision Seminar
2003/Dec/4
原始多項式(primitive polynomial)
•
•
•
•
GF(2)でx2+x+1は既約多項式
この根をαとする:α2+α+1=0
よってα2=-1-α=1+α
α0=1
α1=α
α2=1+α
α3=α+α2=1=α0
• α3で1に戻っているので、GF(2)にαを付加した体は、0,1,α,α2
の元だけで体をなす
• このようにして得られる体をGF(22)と表す
• このように、GF(p)にm次多項式の根を追加して得られる
Galois体GF(pm)の元が0,α0,α1,α2,…,αpm-2で表すことができ
るとき、その既約多項式を原始多項式という
39
6th Physics Based Vision Seminar
2003/Dec/4
x4+x+1は既約多項式かつ原始多項式
• 既約多項式x4+x+1の根をαとす
る
• α4+α+1=0
つまりα4=-α-1=α+1
• 右から分かる通り、α15で1に戻っ
ている
• よって、GF(24)は0とα0~α14の元
だけでなす体である
• 24-2=14である
• よってこの多項式は原始多項式
である
• α0=1
α1=α
α2=α2
α3=α3
α4=α+1
α5=α2+α
α6=α3+α2
α7=α3+α+1
α8=α2+1
α9=α3+α
α10=α2+α+1
α11=α3+α2+α
α12=α3+α2+α+1
α13=α3+α2+1
α14=α3+1
α15=1
40
6th Physics Based Vision Seminar
2003/Dec/4
x4+x3+x2+x+1は既約多項式だが原始多項式で
はない
• 既約多項式x4+x3+x2+x+1
の根をαとする
• α4+α3+α2+α+1=0
つまりα4=α3+α2+α+1
• 右から分かる通り、α5で1に
戻っている
• これによって作られた
Galois体GF(24)は0とα0~
α4の元だけでなす体である
• 24-2≠4である
• よってこの多項式は原始多
項式でない
• α0=1
α1=α
α2=α2
α3=α3
α4=α3+α2+α+1
α5=1
41
6th Physics Based Vision Seminar
2003/Dec/4
2を法とする原始多項式
• 表で(18,5,2,1,0)とあるの
は
のことである
42
6th Physics Based Vision Seminar
2003/Dec/4
ランダムなビットの生成
•
•
•
•
原始多項式を使った乱数列は最大周期2n-1
原始多項式の例:
ビットをa1,a2,…,anとし、新しいビットa0を求めたい
a0を生成したあと、すべてのビット一つずらすので、
古いanは失われ、前回のa0はa1になる
• 計算法の例:
43
6th Physics Based Vision Seminar
2003/Dec/4
モンテカルロ積分
44
6th Physics Based Vision Seminar
2003/Dec/4
変換法(transformation method)
• 一様分布で、xとx+dxの間の数を生成する確率
• x→yに変換
つまり
• この dx  p( y ) を解くと x  F ( y)  p( y)の不定積分
dy
よって
一様乱数
(入力)
変換された乱数
(出力)
45
6th Physics Based Vision Seminar
2003/Dec/4
正規(ガウス)乱数
• 変換法は2次元以上でもOK
• xの同時確率密度p(x1,x2,…)dx1dx2…
x→yに変換
xとyは同じ個数
yの同時確率密度:
|∂( )/∂( )|はxのyについてのヤコビ行列式(ヤコビア
ン)
• 正規分布
の乱数を生成するBox-Muller(ボックス・マラー)法
(Box-Muller method)というものがある
46
6th Physics Based Vision Seminar
2003/Dec/4
棄却法(rejection method)
• p(x)の下の領域にランダムな点を一様に選ぶことができれば、そのランダ
ムな点のx座標が目的の乱数
• 0≦p(x)≦Aのとき、図の長方形内部に一様にランダムな点を生成し、p(x)
より下なら採択、p(x)より上なら棄却する方法もあるが棄却する点があま
りに多く、非効率
• p(x)に近い関数f(x)≧p(x)があり、f(x)の不定積分が計算できるなら
– まずf(x)に関して変換法で乱数x0を生成
– 次に0~f(x0)の乱数を生成し、その値がp(x0)より下なら採択、p(x0)より上なら
棄却する
第1の乱数
(入力)
第2の乱数
(入力)
47
6th Physics Based Vision Seminar
2003/Dec/4
ガンマ分布
• 整数次a>0のガンマ分布は、平均1のPoisson(ポアソン)確率
過程でa回目の事象が起きるまでの待ち時間
• ガンマ分布の乱数は確率pa(x)dxでxとx+dxの間に入る
• 以下のLorentz(ローレンツ)分布(Lorentzian distribution)を
使って棄却法でガンマ分布の乱数を生成すると効率的
– 不定積分の逆関数が単なるタンジェントなので計算しやすい
48
6th Physics Based Vision Seminar
2003/Dec/4
Poisson乱数
• 与えられた時間間隔xに、平均1のPoisson確率事象がm回起きる確率
• m≧0は整数なので、Poisson分布の密度関数px(m)dmは、ほとんど至る
ところ0で、m≧0が整数のところだけ∞
• この関数を階段状の関数にしてしまう
[m]はmを超えない最大の整数
• この関数に対してLorentz型の関数を
使った棄却法で乱数を生成する
49
6th Physics Based Vision Seminar
2003/Dec/4
2項乱数
• 事象が確率qで起きるとき、n回の試行でm回起きる
確率は次の2項分布に従う
• 2項分布に従うmのとりうる値は0以上n以下の整数
である
50
第8章 ソーティング
Sorting
6th Physics Based Vision Seminar
2003/Dec/4
ソーティング
• N個の要素を大きさの順にソート(並べ替え)する
• N>1000のとき、Nlog2Nのオーダーの演算回数で済
む以下の2手法がおすすめ
– J.W.J. Williamsによるヒープソート(Heapsort)
– C.A.R. Hoareによるクイックソート(Quicksort)
• N<50のとき、単純挿入法(straight insertion sort)が
良いが、N2のオーダーの演算回数である
• 50<N<1000なら、Shell(シェル)ソート(Shell’s
method)が良く、N1.5のオーダーの演算回数である
52
6th Physics Based Vision Seminar
2003/Dec/4
単純挿入法(straight insertion sort)
•
(3 5 2 1 4)を(1 2 3 4 5)に並び替えたいとき
–
–
–
–
–
3を()に入れて(3)
5を(3)に入れて(3 5)
2を(3 5)に入れて(2 3 5)
1を(2 3 5)に入れて(1 2 3 5)
4を(1 2 3 5)に入れて(1 2 3 4 5)
53
6th Physics Based Vision Seminar
2003/Dec/4
Shell(シェル)ソート(Shell’s method)
• 16個の数n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11,
n12, n13, n14, n15, n16をソートする場合を考えよう
– (n1,n9), (n2,n10), (n3,n11), (n4,n12), (n5,n13), (n6,n14),
(n7,n15), (n8,n16)それぞれを単純挿入法でソート
– (n1,n5,n9,n13), (n2,n6,n10,n14), (n3,n7,n11,n15),
(n4,n8,n12,n16)それぞれを単純挿入法でソート
– (n1,n3,n5,n7,n9,n11,n13,n15), (n2,n4,n6,n8,n10,n12,n14,n16)を
単純挿入法でソート
– (n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16)を単
純挿入法でソート
54
6th Physics Based Vision Seminar
2003/Dec/4
ヒープソート(Heapsort)
• a1≧a2とa1≧a3のような関係を持つ木をヒープという
• ヒープの生成
– 最初は会社のトップとして雇われる
– 部下より無能なら部下の下に格下げされる
– どんどん格下げされていき、上下関係の正しい所でストップ
• ヒープソート
–
–
–
–
–
会社のトップを退職させる
2人の部下のうち大きい方をトップに格上げする
こうしてできた空席にまたその部下の大きい方を昇格させる
これをヒープの下まで繰り返す
順番に退職した社員を並べたものがヒープソートの結果である
55
6th Physics Based Vision Seminar
2003/Dec/4
索引づけと順位づけ
• 下図のように、左端の(14,8,32,7,3,15)を並び替え、右端の
(3,7,8,14,15,32)にしたい
• 配列の要素の移動に伴うオーバーヘッドを減らすため、ポイ
ンタのみをソートしてやったのが左から2列目
• 右から2列目は順位表
56
6th Physics Based Vision Seminar
2003/Dec/4
クイックソート(Quicksort)
1.
2.
3.
•
適当な数(ピボット)を選択する
ピボットより小さい数を前方、大きい数を後方に移動させる
二分割された各々のデータを、それぞれクイックソートする
(8 4 3 7 6 5 2 1)の例(下線はピボット)
–
–
–
–
–
–
(8 4 3 7 6 5 2 1)
(1 4 3 2 6 5 7) (8)
(1 2) (3 4 6 5 7) (8)
(1 2) (3 4 5 6) (7) (8)
(1 2) (3 4 5) (6) (7) (8)
(1 2) (3 4) (5) (6) (7) (8)
57
6th Physics Based Vision Seminar
2003/Dec/4
同値類(equivalence class)の決定
• 「要素3と要素7は同じクラスに属する」などのように、
それぞれの要素にクラス番号を割り振りたい
そのまま
クラスA
クラスB
統合
クラスA
クラスA
クラスA
58
第9章 非線形方程式と非線形連立方
程式の解法
Root finding and nonlinear sets of
equations
6th Physics Based Vision Seminar
2003/Dec/4
方程式
• 方程式
を解く
• 陰関数定理(implicit function theorem)
– N個の未知数があればN個の方程式を同時に満たす可能
性がある
• 多次元では
を満たすN次元の解ベクトルxを求める
• fはN次元のベクトル値の関数で、その成分が、同時
に満たされるべき個々の方程式
60
6th Physics Based Vision Seminar
2003/Dec/4
根の探索で出会う種々の状況
•
中間値の定理(intermediate value
theorem)
– f(a)とf(b)が異符号なら区間(a,b)に根がある
a. 関数が異符号である2点a,bの間に根x1が
ある
b. 関数の符号は必ずしも変化しないし、根
があるとも限らない
c. 多数の根を持つ病的な関数
d. 関数はa,bで異符号だが、根ではなく特異
点
61
6th Physics Based Vision Seminar
2003/Dec/4
二分法(bisection method)
• アルゴリズムの動作の様子:
• 誤差は半分に減る
• 二分法のように、繰り返しごとに誤差が定数倍になる
手法は1次収束(linear convergence)するという
• 1次よりも高いベキで収束するとき超1次収束
(superlinear convergence)するという
62
6th Physics Based Vision Seminar
2003/Dec/4
割線法, 挟み撃ち法
• 割線法(secant method)
– 収束の次数は1.618
– 破線は、根を囲むか否かによら
ず、最新の2点を選ぶ
• 挟み撃ち法(false position
method, regula falsa)
– 収束の次数は低いが超1次収束
のことが多い
– 破線は必ず根を囲む2点を結ぶ
– 割線法より収束は遅いが確実
63
6th Physics Based Vision Seminar
2003/Dec/4
van Wijngaarden(ヴァン・ワインハールデン)–Dekker
(デッカー)–Brent(ブレント)法(Brent’s algorithm)
• 3点を通る補間式は
• y=0のときのxを求める
• 挟み撃ち法や割線法が2点を直線で結ぶが、3点を通る逆2次
関数(xがyの2次関数)を使う方法を逆2次補間(inverse
quadratic interpolation)という
• 逆2次補間と二分法を組み合わせた手法をBrentの方法という
– 逆2次補間が失敗するようなケースでは二分法に切り替える
– 探索範囲を超える場合も適切な処理を行う
– 二分法の確実性+高次の方法の速さ
64
6th Physics Based Vision Seminar
2003/Dec/4
Newton(ニュートン)-Raphson(ラフソン)法
(Newton-Raphson method)
• Taylor(テイラー)展開(Taylor series expansion)
• 2次以上を省略し、f(x+δ)=0とすると
つまり、xからδだけ動かせばfは0に近づく=根に近づく:
Newton法
• 誤差は2次収束
65
6th Physics Based Vision Seminar
2003/Dec/4
多項式の根
• 根の近くでの直線、2次曲
線、3次曲線の振る舞い
• 拡大してみると、3次曲線は
一つの根、2次曲線は二つ
の根を持つことがわかる
66
6th Physics Based Vision Seminar
2003/Dec/4
多項式の減次
• 最初に多項式P(x)の根rを一つ見つける
• 次に、因数分解してQ(x)を求める
P(x)=(x-r)Q(x)
• 多項式Q(x)はP(x)より次数が一つ減るので根を推定
しやすくなる
67
6th Physics Based Vision Seminar
2003/Dec/4
各種の方法
• 多項式の根を計算する手法に以下のような手法が
ある(説明は省略)
–
–
–
–
Muller(マラー)法(Muller’s method)
Laguerre(ラゲール)法(Laguerre’s method)
Jenkins-Traub method
Lehmer-Shur algorithm
68
6th Physics Based Vision Seminar
2003/Dec/4
根の改良技法
• 大体の根が求まったら、それを改良してさらに精度
良く根を求めたい
• 例えば、減次を使う場合など、減次をしていくにつれ、
徐々に誤差が累積していくので、求まった根は精度
が低い可能性があるからである
• このように根を改良する方法として以下の2つの手
法がある(説明は省略)
– Newton-Raphson法
– Bairstow法(Bairstow’s method)
69
6th Physics Based Vision Seminar
2003/Dec/4
非線形連立方程式のNewton-Raphson法
•
•
•
•
•
非線形連立方程式を解きたい
例として2次元の場合:f(x,y)=0, g(x,y)=0
fとgのゼロ等高線の交点が求めるべき解
3次元以上の場合、ほぼ不可能
ただし、根の近くを初期値とすれば多次元版のNewtonRaphson法が適用できる
70
6th Physics Based Vision Seminar
2003/Dec/4
多次元方程式の解法と、多次元関数の最小化
• 共役勾配法など、多変数関数の極小を求める手法が数多く
あるので、それを適用したくなる人もいるだろう
• 問題が発生する例:下図の点Mでは極小なのに根ではない
71
(c) Daisuke Miyazaki 2003
All rights reserved.
http://www.cvl.iis.u-tokyo.ac.jp/