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

クラフチックの方法による非線形方程式の 解の精度保証と高速化

N/A
N/A
Protected

Academic year: 2022

シェア "クラフチックの方法による非線形方程式の 解の精度保証と高速化"

Copied!
43
0
0

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

全文

(1)

平成 16 年度

卒業論文

クラフチックの方法による非線形方程式の 解の精度保証と高速化

平成 17 年 2 月 2 日

指導教授 :   大石 進一  教授

早稲田大学 理工学部 情報学科

1G01P087-9   平野 晃

(2)

目 次

1 序論 4

1.1 背景 . . . 5

1.2 本論文の目的 . . . 5

1.3 本論文の構成 . . . 6

2 準備 7 2.1 浮動小数点数 . . . 8

2.1.1 浮動小数点数 . . . 8

2.1.2 浮動小数点数と丸め . . . 10

2.1.3 浮動小数点数の性質 . . . 11

2.2 区間解析 . . . 12

2.3 区間演算 . . . 12

2.3.1 四則演算の定義 . . . 12

2.3.2 区間演算の性質 . . . 14

2.3.3 区間拡張 . . . 15

2.4 機械区間演算 . . . 16

3 非線形方程式の解の精度保証付き数値計算 18 3.1 ニュートン法 . . . 19

3.1.1 はじめに . . . 19

3.1.2 ニュートン法 . . . 19

(3)

3.1.3 簡易ニュートン法 . . . 20

3.1.4 簡易ニュートン法収束定理 . . . 20

3.2 不動点の存在を保証する理論 . . . 21

3.2.1 縮小写像原理 . . . 21

3.3 クラフチック法 . . . 24

3.3.1 クラフチック法 . . . 24

3.3.2 平均値形式 . . . 24

3.3.3 精度保証 . . . 24

3.3.4 計算量 . . . 25

4 高速化 26 4.1 はじめに . . . 27

4.2 高速化理論 . . . 27

4.3 計算量 . . . 29

5 数値シミュレーション 30 5.1 はじめに . . . 31

5.1.1 MATLAB . . . 31

5.2 数値例 . . . 32

5.3 解の検証 . . . 33

5.4 計算時間の比較 . . . 34

5.5 考察 . . . 36

6 統括と今後の課題 37 6.1 統括 . . . 38

6.2 今後の課題 . . . 38

6.3 むすび . . . 39

謝辞 40

(4)

参考文献 42

(5)

第 1

序論

(6)

1.1 背景

今日,いろいろな現象をモデル化し,その現象を微分方程式などの基礎方程式で解析する 研究が進められてきた.したがって,微分方程式を解いたり,積分を計算したりするなどの連 続数学の問題を解くことの需要が非常に高い.ところが,連続数学の問題を解くことは困難 である場合が多い.そこで,計算機を用いて連続数学の問題を解こうとする研究が進められ てきた.数値計算の理論もそういった研究から作られてきた.このような数値計算による連 続数学の問題へのアプローチは,現代科学技術の大幅な進歩を促してきた.

従来,近似計算は近似解を求めることのみに使用されることが多く,近似解の近傍に真の 解が存在するかといったことや,近似解と真の解の間の誤差評価などは,数値計算をする人 の経験による判断や常識によって判断されてきた部分があった.これは,数値計算によって 数学的に正しいことが保証された結論を得るためには計算のコストがあまりにもかかり過 ぎて現実的ではなかったためである.しかし,こういった経験による判断や常識が通用しな い,例外的な数値計算がある場合に関しては何ら保証されていない.

そこで近年,計算機の能力が大幅に向上したので,数値計算を近似計算のみにとどめてお くのではなく,数値計算によって連続数学の問題に対しても数学的に正しいことが保証され た結論を導くための理論と技術の開発が活発に進められている.これを精度保証数値計算と いう.計算機上での浮動小数点数演算における丸め誤差を含む演算結果の保証が,理論的に も実用的にも高い精度で効率よく実現できることが明らかにされ,計算の信頼性という問題 が世界的にも注目を浴びている.

また,数値計算アルゴリズムにも影響を与え,今後の科学技術計算のあるべきひとつの方 法として考えられるようになっている.

1.2 本論文の目的

丸め誤差の厳密な評価を行う上で現在主流となっている手法に区間演算と呼ばれるもの がある.この区間演算を用いて非線形方程式の解を求める場合,反復法による近似解が広く

(7)

用いられている.この際,反復法の過程における計算を区間演算に置き換えても,近似解の含 まれる区間が得られるだけであり,真の解の精度保証には何も役立たない.そこで,与えられ た方程式をこれと同値な不動点問題に置き換え,不動点定理の成立条件を区間演算を用いて 数値的に評価することにより,解の存在保証と誤差評価を行うのである. 本論文では,非線 形方程式に対する精度保証付き数値計算法の中で,非線形方程式に対する解の存在証明の代 表的なものとしてクラフチック法を利用している.この方法により非線形方程式の解の精度 保証付き数値計算を,従来の方法から計算量を減らし,高速かつ容易に行うことが本論文の 目的である.

1.3 本論文の構成

本論文の構成は以下の通りである.

第 2 章では,精度保証付き数値計算の準備として,浮動小数点数システム,区間演算,精度保 証の基本的概念について述べる.

第 3 章では,ニュートン法,クラフチック法を用いた非線形方程式の解の精度保証付き数値 計算について述べる.

第 4 章では,クラフチック法の高速化について述べる.

第 5 章では,数値例とMATLABでの実行結果,データについて述べる.

第 6 章では,統括として結果を元に考察について述べる.

(8)

第 2

準備

(9)

2.1 浮動小数点数

現代の数値計算では,浮動小数点数が標準として用いられている. 浮動小数点数は現在で は標準化が進められ,ほとんどのパソコンやワークステーション, ベクトル計算機,並列計 算機などで同じ形式の浮動小数点体系が用いられている. この体系に基づいて,高速に浮動 小数点演算が実行される回路がコンピュータに実装されているため, 数値計算は浮動小数 点数体系上で行われることがほとんどである. そこで,このような浮動小数点数の体系の上 での計算の精度を保証することが重要である.

そのために,まず浮動小数点数について説明する. 浮動小数点数については IEEE 標準 754 ( IEEE standard 754 ,以下 IEEE 754 と略記する. ) がパソコンやワークステーショ ンなどをはじめとして,多くのコンピュータで標準的に用いられている. 本論文では,以下

IEEE 754 に基づく 2 進数浮動小数点数システムを考えることにする.

2.1.1 浮動小数点数

IEEE 754では4つのタイプの数が用意されている. それは規格化2進浮動小数点数,零,

非規格化 2 進浮動小数点数, NaN ( Not a Number , 非数) である.

2 進規格化浮動小数点数

2 進規格化浮動小数点数とは a=±

Ã1 2 +d2

22 + d3

23 +· · ·+dN

2N

!

×2e, (di = 0または1). (2.1) と書ける数をいう. emin を負の整数,emax を正の整数として,eemin ≤e≤emax と なる整数である.

m = 1 2 +d2

22 +d3

23 +· · ·+dN

2N. (2.2)

を符合付き仮数 (signed mantissa) といい, e を指数 (exponent) という. 指数 e も 2 進数で表される.通常,単精度,倍精度 (8 byte = 64 bit) ,拡張倍精度 (10 byte =

80 bit) の浮動小数点システムがあるが,それぞれつぎのような浮動小数点システムで

(10)

ある.

N = 24, (−126 ≤e≤127), N = 53, (−1022≤e≤1023), N = 64, (−16382≤e≤16383).

規格化 2進浮動小数点システムにおいて表される数の絶対値の最大値は xmax=

µ1 2 + 1

22 + 1

23 +· · ·+ 1 2N

2emax. (2.3)

であり,その最小値は

xmin = 1

22emin. (2.4)

である.倍精度数では(2.3),(2.4)はそれぞれ

(2252)×21023 = 1.7976931348623157· · · ×10308, (2.5)

2−1023 = 2.22507358507201· · · ×10−308. (2.6)

である. |x|> xmax のときにオーバーフロー (overflow) が生じたという.

倍精度浮動小数点数においては,仮数部が 53bit である.

2−53= 1.1102230246· · · ×10−16. (2.7) より,倍精度浮動小数点数は 10進数で約 16桁の精度がある.

零は規格化されて

+

µ0 2+ 0

22 + 0

23 +· · ·+ 0 2N

2emin. (2.8)

と表される.

非規格化 2 進浮動小数点数

IEEE 754 では浮動小数点数は指数部がemin となったとき,仮数部の最初の桁が 1よ

(11)

り小さい数を表すために,デフォルトで最初の桁を1とすることをやめ,ここが0とな る数を置くことを許す規格となっている. これを非規格化数(denormalized number) という. 非規格化数の範囲に数が入ることを,漸近アンダーフロー(gradual underflow) という. このような非規格化浮動小数点数の正で最も小さな数は

2−1074 = 4.94065645841246544· · · ×10−324. (2.9)

である.これ以下の数になると,アンダーフロー (underflow) が生じたという.

NaN

このほかに, IEEE 754 ではつぎのような特別な数が用意されている.

(a) NaN(Not a Number)は

−5,∞

∞,+∞+ (−∞) など不当な演算の結果として得

られる.

(b) ±∞ はオーバーフローの結果や零で割った結果として得られる.

(c) ±0はアンダーフローか ±∞での割り算の結果として得られる.

2.1.2 浮動小数点数と丸め

IEEE 754 では,つぎの4 つの丸めのモードが指定できる. c を実数 (c∈R)とする.

上向きの丸め (round upward)

c 以上の浮動小数点数の中で最も小さい数に丸める. これを 4 :R F と表す.ア ルゴリズムでの表記は UP とする.

下向きの丸め (round downward)

c 以下の浮動小数点数の中で最も大きい数に丸める.これを 5 : R →F と表す. ア ルゴリズムでの表記は DOWNとする.

最近点への丸め (round to nearest)

c に最も近い浮動小数点数に丸める.これを □: R →F と表す. アルゴリズムでの

(12)

表記は NEAR とする.もし,このような点が 2 点ある場合には,仮数部の最後のビッ トが偶数である浮動小数点数に丸める. これを偶数丸め方式(round to even)という.

切り捨て (round toward 0)

絶対値が c 以下の浮動小数点数の中で, c に最も近いものに丸める.アルゴリズムで の表記は ZERO とする.

2.1.3 浮動小数点数の性質

丸めの演算を写像として°:R→F と書く. すなわち,°4,5,□ のいずれかと考 える. IEEE 754 では,丸めの演算はつぎの条件を満たす.

°x=x, (任意のx∈Fについて),

x <=y→ °x <=°y, (任意のx, y ∈Rについて). (2.10) また, x∈F のとき,符号を変えることにより, −x|x| が得られるので,これらは正確に 計算される.

IEEE 754 では,つぎの性質が成立する.

□(−x) = −□x, (任意のx∈Rについて), 4(−x) = − 5x, (任意のx∈Rについて),

5(−x) = − 4x, (任意のx∈Rについて). (2.11)

IEEE 754では,浮動小数点数演算(F 上での四則演算)は丸めとの関係により,つぎのよ

うに定義されている. · ∈ {+,−,×, /} , ° ∈ {4,5,} のとき

x°· y=°(x·y), (任意のx, y ∈Rについて). (2.12) この式は,左辺の浮動小数点数の四則演算の結果 x°· y は,右辺の数学的に正しい (実数と しての) 四則演算の結果 x·y を指定された丸めを行って得られた数 °(x·y) に一致する ように計算することを表している.

(13)

また,平方根も

(

x)f p=°(√

x), (任意のx∈Fについて). (2.13) と,浮動小数点数演算によって計算された平方根 (

x)f p は, 正確な実数演算で計算された 平方根

x を指定された丸めの方向へ丸めた数となる. 注意すべきことは,指数関数や三角 関数などはこのような規格を満たしていない. つまり,初等関数の値を精度保証付きで求め るためには工夫が必要である.

2.2 区間解析

精度保証付き数値計算の原理は, 実数値で与えられる真の解の上限と下限を浮動小数点 演算により計算しようとするものであった.このような考え方は区間解析と呼ばれる数学 的理論と密接な関係がある.この区間解析についてまず簡単に述べる.

区間解析では区間を数の拡張と考える.そして, その四則演算が定義される.これを区 間演算という.区間演算を浮動小数点システムの上で展開するものを機械区間演算という.

以下,区間演算について述べていく.

2.3 区間演算

機械区間演算を定義するのが目標であるが,まず, 実数上での演算を仮定する区間演算の 概念を説明するここでの議論において四則演算は実数の四則演算とする.

2.3.1 四則演算の定義

区間解析においては,区間とは

[x, x] = {x∈R| x≤x≤x} (2.14)

(14)

と表される閉区間であるとする.ただし,x x Rで,それぞれの区間の下端,上端とす る.以下,記号の節約のため,

[x] = [x, x] (2.15)

と区間を表すことにし,区間[x]と単に書けば,それは[x] = [x, x]を表すものとする.x=x となる区間[x]は点区間という.点区間は実数であるので,点区間[x]の表す実数をxと書く ことにする.

区間[x]について以下を定義する.

d([x]) = x−x, r([x]) = x−x

2 , m([x]) = x+x

2 (2.16)

d([x]), r([x]), m([x])をそれぞれ区間[x]の直径,半径,中心という.

区間[x]の最小絶対値と最大絶対値をそれぞれ次で定義する.

h[x]i= min{|x| |x∈[x]}

|[x]|= max{|x| | x∈[x]}= max{|x|,|x|} (2.17) 2つの区間[x],[y]の距離を

q([x]) = max{|x−y|,|x−y|} (2.18) で定義する.

2つの区間[x],[y]が与えられたときその二つの区間の四則演算を次で定義する.

[x][y] = {x◦y | x∈[x], y [y]} (2.19) ただし,◦ ∈ {+,−,×, /}.これを区間演算という.この定義では区間演算は無限回の実数演 算をしないと実行できないような印象を与えるが,実は次が成立する.

[x] + [y] = [x+y, x+y]

[x][y] = [x−y, x−y]

[x]×[y] = [min{xy, xy, xy, xy},max{xy, xy, xy, xy}]

[x]/[y] = [x]×

"

1 y,1

y

#

, (0∈/ [y]) (2.20)

(15)

これから区間演算が有限回の実数演算で実行できることがわかる.かけ算(Table 2.1)と

割算(Table 2.2)においては,場合分けにより,より少ない手間で計算する次のような計算規

則も簡単に導ける.

Table 2.1: 区間[x],[y]の乗算[x][y]

y≥0 y30 y≤0

x≥0 [xy, xy] [xy, xy] [xy, xy]

x30 [xy, xy] [min{xy, xy},max{xy, xy}] [xy, xy]

x≤0 [xy, xy] [xy, xy] [xy, xy]

Table 2.2: 区間[x],[y]の除算[x]/[y]

y≥0 y≤0 x≥0 [x/y, x/y] [x/y, x/y]

x30 [x/y, x/y] [x/y, x/y]

x≤0 [x/y, x/y] [x/y, x/y]

2.3.2 区間演算の性質

区間演算については,包含関係における単調性

[x][x0], [y][y0][x][y][x0][y0], ◦ ∈ {+,−,×, /} (2.21) が成立する.

また,加法と乗法に関し交換則と結合則が成立する.

[x][y] = [y][x], ◦ ∈ {+,×}

[x]([y][z]) = ([x][y])[z], ◦ ∈ {+,×} (2.22)

(16)

しかし,加法と乗法の逆元は存在しない.すなわち,−[x] = [−x,−x]であるが 0 = [0][x][x] = [x−x, x−x]

1 = [1][x]/[x] (2.23)

となることがわかる.上式で等号は[x]が点区間のときのみ成立する.

また,分配則も区間演算に対しては成立しない.そのかわり次の劣分配則が成立する.

[x]×([y] + [z])[x]×[y] + [x]×[z] (2.24) この式で等号は例えば区間[y]と[z]が同じ符合をもつときに成立する.

2.3.3 区間拡張

関数f :D ⊂R→Rを領域Dの任意の閉区間の上で連続な初等関数とする.関数fを 次のようにしてIR上の関数に拡張することができる.

f([x]) ={f(x) | x∈[x]} (2.25)

IRを実数上の有界閉区間の集合とする.関数f :D⊂R→Rが初等関数の合成や四則 演算に基づく演算規則で定義されているとき,fIR上の関数に拡張したい.しかし,f([x]) を厳密に計算することは非常な計算時間を要することがある.そこで,fの演算規則を単純 に区間演算で置き換えた演算規則によって定義される関数をfの区間拡張といいfで表す.

f([x])⊆f([x]) (2.26)

が成立する.区間拡張は一意的に定まるわけではなく,fを定義する数式を同等な他の表現 形式に書き直したとき, それらの表現に基づく区間拡張が一般に異なる評価を与えること に注意する.

上式で等号が成立するとき,厳密な包み込みができたという.厳密な包み込みは一般に難 しいが,f の数学的な表現式に区間値パラメータが現れず,また, [x]が一度しかその表現に

(17)

現れなければ,その表現に基づく区間拡張が厳密な包み込みを与えることが知られている.

一般に式の表現に[x]が少なく現れれば現れるほど,区間包囲は厳密な包み込みに近くなる ことが多いことが経験されている.区間[x]の幅d([x])が小さいとき,

q(f([x]), f([x]))≤αd([x]) (2.27) となることが知られている.ただし, αは正の[x]によらない定数である.

なお,一般に関数の値域f([a, b])f([a, b])⊂[c, d]と区間[c, d]で評価するとき,区間[c, d]

のことをf([a, b])の区間包囲という.区間拡張は区間包囲の一種である.

一般の整式の区間包囲は区間を変数として与え計算したもの,すなわち区間拡張したもの を用いればよい. 初等関数のうちex

xなどの単調関数に関しても,区間の両端の計算に よって区間包囲が求められる.

2.4 機械区間演算

前節で説明した区間演算においては,区間の両端の数は実数であるとし,厳密な実数演算 に基づいて区間演算が定義された.しかし,浮動小数点数システム上で数値計算するときに は,厳密な区間演算は実行できない.そこで,数学的な正解が含まれる区間が演算の結果得 られることを念頭に区間演算で与えられた浮動小数点数システムR上に展開する方法を説 明する.

IR={[x]∈IR | x, x∈R} (2.28)

とする.IRの要素を機械区間という.機械区間は区間の定義で上端と下端の数が浮動小 数点数で与えられるものをいう.区間[a, b] IRを区間[c, d] IRに丸める区間の丸め

:IR→IR

[x]⊂ ♦[x] (2.29)

および,次を満たすように定義する.

♦[x] = [x] (すべての[x]∈IRについて)

(18)

[x][y]⇒ ♦[x]⊂ ♦[y] (すべての[x],[y]∈IRについて)

♦(−[x]) = −♦[x] (すべての[x]∈IRについて) (2.30)

IEEE754上の浮動小数点数システムにおいては

♦[x] = [5x,4x] (2.31)

と定義すれば上記の条件は満たされる.機械区間演算の四則演算を

[x]♦[y] = ♦([x]◦[y]) (2.32)

と定義する.ただし,◦ ∈ {+,−,×, /}である.

具体的には機械区間演算は次のように定義される.

[x] + [y] = [5(x+y),4(x+y)]

[x][y] = [5(x−y),4(x−y)]

[x][y] = [5(min{xy, xy, xy, xy),4(max{xy, xy, xy, xy)]

[x]/[y] = [5(min{x/y, x/y, x/y, x/y),4(max{x/y, x/y, x/y, x/y)] (2.33) 解を有限回の四則演算の組合せで求める方法(直接解法という)において, 浮動小数点数 を機械区間に置き換え,四則演算を機械区間演算に置き換えて計算をすれば,真の解を含む 区間が得られる.こうして,数値計算により数学的に正しい結論を導き出すために, 直接解 法が知られている問題については, このような置き換えを行なうことが盛んに行なわれた.

ガウスの消去法において,途中の計算における数を機械区間に,四則演算を機械区間演算に 置き換えたアルゴリズムを区間ガウス消去法という.区間ガウス消去法はこのようなアル ゴリズムの代表的なものである.

区間ガウス消去法では, 実行の途中で現れる区間の幅の爆発が生じてしまうことが多い.

したがって,区間ガウス消去法は,高々,数十次元の線形方程式の解法としてのみ有効である と考えられている.

(19)

第 3

非線形方程式の解の精度保証付き数値計算

(20)

3.1 ニュートン法

3.1.1 はじめに

一般に非線形方程式は直接的に解を求めることは不可能であり,その近似解は反復法に より求められる.ニュートン法はその中でももっとも基本的な非線形方程式の反復解法で ある.そこで,ニュートン法について説明する.

3.1.2 ニュートン法

f :Rn →Rnを1回連続微分可能な関数とする.このとき,方程式

f(x) = 0 (3.1)

を解くことを考える.x0 ∈Rnf(x) = 0の近似解とするが,f(x0) = 0とする.このとき x1 =x0+hf(x) = 0のよりよい近似解となるようにhを定めることを考える.||h|| →0 のとき

f(x1) =f(x0 +h) = f(x0) +f0(x0)h+o(||h||) (3.2) であるから,f(x0+h)f(x0) +f0(x0)hと近似し

f(x0) +Df(x0)h= 0 (3.3)

によってhを定める.ただし,|h| → 0のとき,o(h)/h 0とする.f(x0) = 0 という仮定 より,

h=−f(x0)

f0(x0) (3.4)

となる.よって

x1 =x0 f(x0)

f0(x0) (3.5)

となる.ここで

g(x) =x− f(x)

f0(x) (3.6)

(21)

とおくと上式は

x1 =g(x0) (3.7)

と書け,これを繰り返して

f(xn+1) =g(xn) =xn−f0x(xn)−1f(xn)(n = 0,1,2,· · ·) (3.8) によって解を改良していく方法をニュートン法という.ただし,f0(x)はf の点x における ヤコビ行列である.

3.1.3 簡易ニュートン法

ニュートン法の変形として,次のようなものも考えられる.G∈Rn×nとして

g(x) = x−Gf(x) (3.9)

と置き,近似解法として

xn+1 =g(xn) (n = 0,1,2,· · ·) (3.10) を用いる方法である.これを簡易ニュートン法という.

G=f0(x0)−1 (3.11)

とする場合や,Gをf0(x0)−1の何らかの近似とする場合が多い.

3.1.4 簡易ニュートン法収束定理

fを一回連続微分可能な関数とする.方程式f(x) = 0を考える.このとき,その近似解 x0に対し,あるδ >0 が存在して,次の条件を満たすとする.

[x0−δ, x0+δ]∈I (3.12)

maxx∈[x0−δ, x0]|1−rf0(x)|=k <1 (3.13)

|rf(x0)|+ ≤δ (3.14)

(22)

このとき,f(x) = 0の真の解x∗は[x0−δ, x0+δ]内にただ1つ存在し,誤差評価

|x0−x∗ | ≤ |rf(x0)|

1−k (3.15)

が成り立つ.

3.2 不動点の存在を保証する理論

非線形方程式の解の精度保証付き数値計算は,その解を不動点とする不動点問題に帰着さ れる.そこで不動点の存在を保証するために縮小写像と縮小写像原理,そしてBrouwerの定 理を説明する.

3.2.1 縮小写像原理

数値計算の原理を考える際の基本的方法は, 問題を不動点定理に帰着させることである.

今,Xをバナッハ空間,gXからその中への写像とする.

g(x) = x (3.16)

を満たすXの点を不動点という.写像gによって動かしても動かない点という意味である.

写像gの不動点を求める問題を不動点問題という.

写像gに不動点が存在することを保証する定理を不動点定理という.以下で述べる縮小 写像原理は不動点定理の中でも, もっとも基本的かつ有用なものである.また,不動点の逐 次反復による求め方も示されており, 具体的な解法に直接結び付く場合も多い.

写像gの定義域をD(g),値域をR(g)とする.それぞれバナッハ空間Xの部分集合とす る.このとき,写像g :D(g) →R(g)が縮小写像であるとは, ある定数k, (0 k <1)が存 在して, 任意のx1, x2 ∈D(g)に対して

kg(x1)−g(x2)k ≤kkx1−x2k (3.17) が成立することである.

このとき,次の定理が成立する:

(23)

定理 3.1 (バナッハの縮小写像の原理)

Xをバナッハ空間とし,Sをその空でない閉部分集合とする.g :S →Sを縮小写像とす ると, Sの中にgの不動点が存在する.しかもこの不動点は唯一である.

さらに,Sの中の任意の点x0をとり,逐次反復(iteration)

xn+1 =g(xn), n = 0,1,2,· · · (3.18) を考えると,{xn}n=1Sの中の点列となる. Sの中のgの不動点をxとするとき,xnx へ収束し, かつ事前誤差評価(a priori error estimate)

kxn−xk ≤ kn

1−kkx0−g(x0)k (3.19)

が成立する.また,事後誤差評価(a posteriori error estimate) kxn+1−xk ≤ k

1−kkxn+1−xnk (3.20)

も成立する. □

数値計算の精度を保証する有効な原理の一つは, 問題を適当なバナッハ空間X上の写像g の不動点を求める問題に帰着させることである.すなわち, 適切な閉集合Sを選び,その上 でgが縮小写像となること,および,

g(S)⊂S (3.21)

が満たされることを数値計算により示そうとするものである. Sが十分小さな閉集合であ れば,解の存在のみならず,シャープな誤差評価も得られたことになる.

縮小写像の原理の応用として次の定理が成立する.

定理 3.2 (バナッハの摂動定理)

X, Y をバナッハ空間, A: X Y を有界線形作用素で有界な逆作用素A−1 :Y →Xを もつとする. このとき,有界線形作用素B :X →Y が条件

kA−1BkL(X,Y) 1 (3.22)

(24)

を満たすとき,有界線形作用素A+B : X Y は有界な逆作用素(A+B)−1 : Y Xを もち

k(A+B)−1kL(X,Y) kA−1kL(X,Y)

1− kA−1BkL(X,Y) (3.23)

となる. □

この定理は,例えば,A, Bをn×n行列とすると, 与えられた行列T =A+Bの近似逆行 列をA−1とすると,T−1の存在が逆行列の計算(3.22)に帰着させられることがわかる. これ から,前節までの議論により, 精度保証付きでこの条件の成立がチェックできることになる.

定理 3.3 (Brouwerの定理)

Dが有解閉凸集合で、写像g :D →Dを連続写像とする.このとき

g(D)⊂D (3.24)

なら,D内に少なくとも一つは不動点が存在する. □ これらの定理から不動点の存在を示すことが出来るので,精度保証付き数値計算が可能と なる.

(25)

3.3 クラフチック法

簡易ニュートン法の収束定理の条件をより容易に,かつ自然な形で評価する方法として, クラフチック(Krawczyk)法がある.これは,ニュートン法の区間版であり,縮小写像の原理 と一体化されて真の解を含む区間を生成する方法である.

3.3.1 クラフチック法

簡易ニュートン法の収束定理の条件を容易かつ,自然な形で評価する手法.クラフチック 法はニュートン法を区間解析的に行ったものである.

3.3.2 平均値形式

平均値形式を用いると,区間演算における区間幅の増大を抑えることができる.X =Rn, Y = Rm, D ⊂Xとする.以下,I(D)からI(Y)への写像を区間写像と言う.ここで,m :I(D)→Ym(I)∈Iを満たす任意の関数とする.f :D→Y に対して,

F(I) = f(c) +F0(I)(I−c), c =M(I) (3.25) で定義された区間写像F :I(D)→I(Y)を中心形式と言う.とくにm(I) = Mid(I)のとき, 平均値形式と言う.

3.3.3 精度保証

f :Rn →Rnを1回連続微分可能な非線形写像として

f(x) = 0 (3.26)

を考える.Lをf0(x) の近似行列,R をLの逆行列とする.Rと cは通常の浮動小数点演算

(Newton法)により近似的に求めたとしよう.このとき,f(x) = 0の近似解cの近くに真の解

x∗が存在するか否かや,存在する場合には||x−c||を評価することを考える.

T =c+X,(X = [−e, e], e= 2|Rf(c)|) (3.27)

(26)

とする.クラフチック作用素K(X+c)−c=H

H =−Rf(c) + (E−RF0(X+c))X (3.28)

で与えられる.H X ならばc + X 内にf(x) = 0 の真の解が存在する.F0(X + c) (Fc0, Fw0), f(x)(fc, fw)とする.ただし,fc, Fc0は中心,fw, Fw0 は半径とする.

setround(down);

M =E+ (−R)F0c+ (−|R|)F0w; r = (−R)fc+ (−|R|)fw;

setround(up);

M =E+ (−R)F0c+|R|F0w; r = (−R)fc+|R|fw;

Mmax =max|M|,|M|;

q =Mmaxe;

K =r+q;

setround(down);

K =r−q;

このとき,H = [K, K]で与えられる.

3.3.4 計算量

この計算方法によるクラフチックの方法の計算には逆行列を求めるのにn3+O(n2), M , M の計算にそれぞれ2n3 +O(n2)の計算量を必要とする.その他の計算にはO(n2)の計算量 しか必要としないので,合計してこの精度保証付き数値計算には5n3+O(n2)の計算量がか かる.

(27)

第 4

高速化

(28)

4.1 はじめに

ここでクラフチック作用素の計算量に注目する.非線形項の計算量は与えられた問題に よって異なる.また,現在のところ,非線形項の計算は区間演算による方法が,細かい差異は あっても,ほぼ唯一の方法であるので,これに要する計算量はどんなアルゴリズムであって もほぼ同一であると考える。

前述のHの式を直接用いるアルゴリズムでは,(行列)×(行列)の計算が行われているた め,計算量がO(n3)となる.そこでその計算量を減らすためにHに対して,以下のような作 業をしてやる.

4.2 高速化理論

クラフチック作用素Hに対して,次のような作用素LH を考える.

LH =L(−L−1f(c) + (E−L−1F0(c+X))X) (4.1)

=−f(c) +L(E−L−1F0(c+X))X (4.2)

=−f(c) + (L−F0(c+X))X (4.3)

これより,区間ベクトルV

V =−f(c) + (L−F0(X+c))X (4.4)

とおくと,Hは線形連立方程式

LH =V (4.5)

を解くことにより求められる.上記のV =−f(c) + (L−F0(X+c))Xより,区間ベクトル V を評価するには,まずL−F0(c+X)の評価が必要になる.この部分は,次式の右辺のよう に計算する事により,精度保証付きで評価できる.

L−F0(c+X)⊂[L−Fc0−Fr0, L−Fc0 +Fr0] (4.6)

(29)

これより,M を

M =maxn|L−Fc0−Fr0|,|L−Fc0+Fr0|o (4.7) とおくことにより,

(L−F0(c+X))X [−Me, Me] (4.8)

と評価できる.よって,区間ベクトルV は,

V [−fc−fr−Me,−fc+fr+Me] (4.9) によって精度保証付きで評価される.

区間ベクトルV を求めるアルゴリズムは以下のようになる.

setround(down);

M =L−F0c−F0r; setround(up);

M =L−F0c+F0w; Mmax =max{|M|,|M|};

p=Mmaxe;

q =fw+p;

V =−fc+q;

setround(down);

V =−fc−q;

そして、

V [V , V] (4.10)

が成り立つ.そして,右辺が区間ベクトルである線形連立方程式

LH = [V , V] (4.11)

(30)

の解をすべて含む区間を[H, H]とすると

H [H, H] (4.12)

と評価される.

4.3 計算量

この高速化されたクラフチック法による精度保証付き数値計算では,LH = [V , V]の計算 に 23n3+O(n2)の浮動小数点数乗算でできる.区間V を求めるアルゴリズムではO(n2)回 の浮動小数点数乗算で実行できることから,23n3+O(n2)の計算量でクラフチック作用素H を評価できることが出来る.

よって,クラフチックの方法を普通に計算するときと比較すると、高速に数値計算が可能に なっている.

次章では,具体的な数値例を解いた結果を算出し,高速化理論と普通に計算する場合との比 較を行う.

(31)

第 5

数値シミュレーション

(32)

5.1 はじめに

本章では具体的な数値例を用いて,実際に非線型方程式の解の存在検証をMATLABを用 いて行い,その有効性を検証する.そして,クラフチック法と高速化したプログラムでの実行 時間と解の精度の比較を行う.

5.1.1 MATLAB

MATLABは高品質で用意にプログラムが組める数値計算用語であり,高速に数値計算を

実行する命令が組み込まれており,安定性,高速性に評判がある.

また,INTLABというMATLABで書かれたツールを組み込んでい用いれば,浮動小数点の 丸めモードを制御しながら区間演算や微分計算なども高速に,そして容易に実現してくれる.

非線形方程式の解の精度保証付き数値計算をするときには,非線型方程式の評価が必要と なるので,区間演算は不可避である.MATLABにINTLABを組み込めば,区間演算が容易に なると同時に高速な行列計算も行う.したがって,非線型方程式の解の数値計算には適した ツールであるといえる.

MATLABの計算環境は次の通りである.

Table 5.1: MATLABの実行環境

OS Windows 2000

CPU x86 Family 6 Model 7 Stepping2 Memory 256MB

Version MATLAB version 6

(33)

5.2 数値例

本節では、非線型方程式f(x) = 0に具体的に定め,その解の精度保証付き数値計算を実 行する. ここで,xをnベクトルとしx= (x1, x2,· · ·, xn)で表し,f(x) = 0を

f(x) = 0 ⇐⇒

f1(x) = 0 f2(x) = 0

...

fn(x) = 0

(5.1)

で表される非線型方程式とする.

今回は数値例として,エサキダイオードからなる非線形抵抗回路に関する非線形方程式を 考える.この回路方程式は,

f1(x) = g(x1) +x1+x2+· · ·+xn1 (5.2) f2(x) = g(x2) +x1+x2+· · ·+xn−n (5.3)

... (5.4)

fn(x) = g(xn) +x1+x2+· · ·+xn−n (5.5) で示される.また,エサキダイオードのI−V 特性を

g(x) = 2.5x310.5x2+ 11.8x (5.6) とする.このf(x)のヤコビ行列f0(x)を計算すると,

f0(x) =

g0(x1) + 1 1 · · · · 1 1 g0(x2) + 1 1 · · · 1

...

1 1 · · · · g0(xn) + 1

(5.7)

となる.

(34)

5.3 解の検証

まず,解の存在検証に成功する例を具体的に示す.n = 10の場合について考える. ニュー トン法により,この非線型方程式の近似解cを1つ求めると,

c=

−0.33545308322972

−0.28285123145438

−0.22613660635450

−0.16436462311202

−0.09617922680485

−0.01951290678153 0.06906744069606 2.20298819542304 2.47107520698319 2.61563562075326

(5.8)

となる.この近似解cをもとに,解の存在性を検証する区間X = [−e, e]を計算すると,

X = 10−13

·

−0.00454601242579, 0.00454601242579

¸

·

−0.00488028934477, 0.00488028934477

¸

·

−0.01000685757526, 0.01000685757526

¸

·

−0.00579154161660, 0.00579154161660

¸

·

−0.00644417607327, 0.00644417607327

¸

·

−0.00732881462610, 0.00732881462610

¸

·

−0.02401227947181, 0.02401227947181

¸

·

−0.28409380300438, 0.28409380300438

¸

·

−0.12780338838763, 0.12780338838763

¸

·

−0.32352059743798, 0.32352059743798

¸

(5.9)

(35)

となる.このとき,e= 2|L−1f(c)|として計算している. また,fc, fw, Fc0, Fw0eを元に計算 しておき,これよりHを計算すると,

H = 10−14

·

−0.03937785617337, 0.03841287862725

¸

·

−0.04697745186037, 0.04109864592197

¸

·

−0.04310792343714, 0.04723131363711

¸

·

−0.05006209005331, 0.04883272526193

¸

·

−0.05564246569900, 0.05427456683918

¸

·

−0.06318687745085, 0.06163119724334

¸

·

−0.07378411355387, 0.08050693231758

¸

·

−0.82178034322933, 0.72020895302417

¸

·

−0.46909553122972, 0.38790919297676

¸

·

−0.12659634242161, 0.41732137285859

¸

(5.10)

となり,H ⊂Xが満たされることから区間T 内に解が存在する.

5.4 計算時間の比較

次にnを100から1000まで値を変えながら,クラフチック作用素Hの計算にかかる時間, 解の精度を測定し,以下の表にまとめた.解の精度はeの値を任意で決め,解が包み込まれた 際のeの最大値ノルムを計算した.

(36)

Table 5.2: 数値例のMATLABにおける精度保証付き数値計算の結果 クラフチックの方法 高速化したプログラム

次元 実行時間(sec) 解の精度 実行時間(sec) 解の精度

100 0.090 1.16810−12 0.134 1.16810−12

200 0.50 4.10210−11 0.49 4.10210−11

300 1.35 1.58610−11 1.21 1.58610−11

400 2.84 6.27310−12 2.34 6.27310−12

500 5.14 1.90810−11 4.04 1.90810−11

600 8.54 6.29410−11 6.57 6.29410−11

700 13.4 2.74210−11 10.1 2.74210−11

800 19.6 5.66210−11 14.3 5.66210−11

900 27.7 2.71410−10 19.9 2.71410−10

1000 38.1 4.14210−8 27.7 4.14210−8

(37)

5.5 考察

本論文の結論として,今回実施した高速化プログラムはクラフチック法と比較して速度の 点で有効な手段であるということが言えた.大幅な速度の改善とまではいかなかったが,解 く非線形方程式の解の次元が大きくなればなるほど,理論的に速度の差が大きくなる.

解の精度については両方の場合でほとんど差はない.これは,近似点をニュートン法から 求め,その結果を利用して解の存在範囲を調べる区間を計算している.したがって,精度に差 が見られないのも妥当な結果といえる.

以上の結果から大規模な計算を行う時には今回の方法を利用する価値があると言える.

(38)

第 6

統括と今後の課題

(39)

6.1 統括

本論文では,MATLABによる非線形方程式の精度保証付き数値計算の高速化について述 べた.

第 2 章では,準備として浮動小数点,区間演算について述べた.

第 3 章では,非線形方程式の解法,ニュートン法とクラフチック法について述べた.

第 4 章では,クラフチック法の高速化について述べた.

第 5 章では,数値例と実行結果,また実行結果を元に考察を述べた.

本論文の構成は以上のようであった.

6.2 今後の課題

今回はある近似点を求めて,その周りに任意の区間を与えてその範囲内に解が存在するの かを検証した.そのため,二つの方法には解の精度に違いは見られなかった. 今後の課題と して,近似点を求めず,ある区間のみを与えた場合にどのような差が見られるかを検証でき るようにしたい. また,今回の数値例ではヤコビ行列f0(x)を求める際に,単純な形になった のでn次元のf0(x)を単純なループで作ることが出来た.しかし,複雑な関数が出てきた場 合,全てを手計算で作ることは難しいし,時間の無駄である.そこで,関数を計算するプログ ラムから関数の微分をプログラムを計算するプログラムを自動生成できれば望ましい.これ を自動微分という.この自動微分を用いれば,複雑な関数におけるニュートン法が可能であ り,たくさんの例を実験することが出来たと思う.

(40)

6.3 むすび

本論文では非線形方程式の精度保証数値計算の高速化について論じた.高速化についてあ る程度の結果を出すことに成功した.

(41)

謝辞

(42)

この卒業論文の完成にあたってたくさんの方々から多くの助言や指導を頂きました. ま ず,本研究を進めるに当たり,終始丁寧な御指導及び御激励を賜り,最後まで面倒を見て下さ いました大石 進一教授に深く感謝いたします.

大変お忙しい中でも私の質問に対して熱心に答えて下さいました, 理工学研究科客員講 師,丸山 晃佐氏,中谷 祐介氏,荻田 武史氏に大変感謝いたします.

研究室内や合宿など,日常的な場面でお世話になりました,大石研究室博士課程1年,尾崎 克久氏, 大石研究室修士課程2年,大山 博毅氏,森山 敦史氏, 並びに大石研究室修士課程1 年,坂内 太郎氏,島本 誠氏,関本 竜平氏,徳永 克久氏,福地 健氏,細田 幸裕氏,横山 大輔氏 に深く感謝いたします.

研究内容だけでなくあらゆる場面で意見の交換や協力などをして下さいました, 大石研 究室4年,有滝 貴広氏,岩田 揚平氏,大成 高顕氏,川崎 文裕氏,栗原 崇氏,佐藤 友規氏,ト 詣各氏,水島 裕氏,吉岡 毅氏,吉田 昂央氏には様々な助言をもらい大変感謝しています.

(43)

参考文献

[1] 大石進一,数値計算,裳華房,1999年,

[2] 大石進一,精度保証付き数値計算,コロナ社,2001年, [3] 大石進一,MATLABによる数値計算,培風館,2002年,

[4] 中谷祐介 大石進一,非線形方程式に対する精度保証付き数値,日本シミュレーション学 会 第20回シミュレーションテクノロジーコンファレンス,pp261-264,2001年6月

参照

関連したドキュメント

$t=-2.5$ $t=0$ 図 3 $b$ 実線 : $-\tau_{1}$ から得られる $u$ 破線 : $\tau_{2}$ から得られる $u$ $t=2.5$

 非線形シュレディンガー方程式 (Nonlinear Schr¨ odinger equation)

Kyushu University 1

を考えた場合、 この解は $(x, y)=(10,1)$ となるため、 出力結果の微小変動が、

(26) 積分因子法は線形項を解析的に解いているため,線形項のみなら $\Delta t$ による打切り誤差が生じず,

次に、 表 15 は $C=AB$ の下限 $\underline{C}$ と上限 $\overline{C}$ の差の最大値 $\max_{i,j}\{\overline{C}_{ij}-\underline{C}_{ij}\}$ を表して

Sophia University 1 序 研究会の題目からは離れるが ,

非線形発展方程式のカオス解と定常解の多重性 向大島工学研究科 濡 宝峰 (FENG Bao-Feng) 川原琢治 (KAWAHARA Takuji)