2016前期 - 森倉 悠介(yusuke...

29
数値解析特 2016前期

Upload: others

Post on 02-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

  • 数値解析特論論2016年年度度前期

  • 本授業について•  精度度保証付き数値計算について授業

    •  浮動⼩小数点数•  区間演算•  ノルムの公理理•  連⽴立立⼀一次⽅方程式•  ⾼高精度度計算•  バナッハ空間・バナッハの不不動点定理理•  ニュートン法,簡易易ニュートン法•  平均値の定理理•  クラフチック法•  ⾃自動微分•  全解探索索

  • 本⽇日•  ガイダンス•  数値計算浮動⼩小数点数概要誤差

    •  精度度保証付き数値計算

  • 数値計算とは•  問題(何らかの⽅方程式)を有限精度度で近似的に解く計算法

    •  例例:https://www.youtube.com/watch?v=gGs8vJu0if8•  雲のシミュレーション•  ⼼心臓のシミュレーション•  津波のシミュレーション•  地域の気象のシミュレーション•  ⾃自動⾞車車の空気の流流れのシミュレーション

  • 数値計算とは•  実際に,実験できないものでも仮想的に実験できる.

    しかし..•  あくまで近似解.•  数値計算には誤差がつきもの.•  ⇒有限桁2進数で計算しているため,丸め誤差(四捨五⼊入の誤差)が発⽣生

  • •  10進数0.1を2進数で表すと??

    •  0.1=•  2-‐‑‒4  +  2-‐‑‒5  +  2-‐‑‒8  +  2-‐‑‒9  +  2-‐‑‒12+2-‐‑‒13+...•  =(0.0001100110011001100110...)2のように無限⼩小数になり2  進数で表すことができない.

    例例えば

  • 例例えば•  3桁に固定して計算をしてみる.•  丸めのルールは四捨五⼊入•  1.234  ⇒  1.23    56.789  ⇒  56.8        (丸め)            (丸め)1.23+45.6=46.83  ⇒  46.9                                                  (丸め)•  ⼀一回⼀一回の計算に誤差が発⽣生

  • 丸め誤差の原因•  有限桁に近似している•  浮動⼩小数点数の利利⽤用•  IEEE  754  標準規格(浮動⼩小数点数のルール)整数  int(32bit)単精度度  float  (32bit)倍精度度  double  (64bit)

  • •  計算機内部での倍精度度(64bit)浮動⼩小数点数の形式(特に正規化数)

    •  ±:符号部(1bit)•  2e:指数部(11bit:0〜~2047-‐‑‒1023)•  d1,  d2,  ...,  dr-‐‑‒1:仮数部(52bit:0か1)•  最初の1は固定,そのため⼀一桁得する

    浮動⼩小数点数

  • •  計算機内部での倍精度度(64bit)浮動⼩小数点数の形式

    •  メモリモデル

    浮動⼩小数点数

  • 浮動⼩小数点数

    floa$ng'point+numbers(binary+64,+double)

    0

    underflow+(0)

    overflow+(∞)

    2^'1074

    2^'1022

    (2'2^'53)*2^1023

  • 浮動⼩小数点数

    floa$ng'point+numbers(binary+64,+double)+normalized+numbers >1

    1+ (2'2^'53)*2^10234+2+ 8+

    52bit2 +

    52

    •  1 2 52 2 4 52 4 8 52 +• 

  • 浮動⼩小数点数

    •  a=1.5の場合

    • ピッタリ  1.5で表現できる•  1.5=+(1+1/2)*2^0

    1  

    ・・・・・・・

    2  1.5  

    a=1.5

  • 浮動⼩小数点数

    • 適当な実数a

    • ピッタリ合う値がない...•  a=+(1+1/4+...)*2^0

    1.5  

  • 浮動⼩小数点数

    • 適当な実数a

    •  ピッタリ合う値がないと近い⽅方へ丸める•  ここでは1.5が近いので1.5に丸められる•  最近点丸め

    1.5  

    丸め

  • 浮動⼩小数点数(⾜足し算)

    • 適当な実数a,  b

    •  ⾜足し算の結果もピッタリ表せないと近い⽅方へ丸められる

    •  ここでは1.5が近いので1.5に丸められる

    1.5  

    丸め

    a+b

  • •  実際0.1はどんな数字で⼊入ってる?•  for⽂文のカウンターに使うと?

    誤差の例例

  • その他数値計算の誤差•  モデル(実際の現象など)⇓•  数理理モデル(⽅方程式)⇓•  計算機モデル(多項式,漸化式など)⇓•  プログラムモデル⇓•  計算結果(可視化)

  • その他数値計算の誤差•  モデル(実際の現象など)⇓(モデル化誤差)•  数理理モデル(⽅方程式)⇓(離離散化誤差)•  計算機モデル(多項式,漸化式など)⇓(打切切り誤差)•  プログラムモデル⇓(計算誤差)⇒丸め誤差など•  計算結果(可視化)

  • 精度度保証付き数値計算•  問題に対する解の存在(⼀一意性)と誤差限界を数学的に保証するような数値計算法

    •  解の存在(⼀一意性)例例:連⽴立立⼀一次⽅方程式Ax=bにおける

      ⾏行行列列Aの正則性の検証•  誤差限界  ||(真の解)ー(近似解)||≦ε

  • 精度度保証付き数値計算では?•  モデル(実際の現象など)⇓(モデル化誤差)⇒範囲外•  数理理モデル(⽅方程式)⇓(離離散化誤差)⇒誤差上限を計算•  計算機モデル(多項式,漸化式など)⇓(打切切り誤差)⇒誤差上限を計算•  プログラムモデル⇓(計算誤差)⇒丸め誤差など⇒誤差上限を計算•  計算結果(可視化)

  • 精度度保証付き数値計算•  理理論論的に証明することが困難な問題に対する数値的解決⼿手法へと進展

    •  ツール:•  区間演算•  Newton型作⽤用素•  不不動点定理理

  • •  例例えば:円周率率率  π •  π = 3.141592653589793... •  計算機では丸められて近似値になってしまう.

    •  そのため,πを区間で挟み込んでしまう. π ∈ [3.1415, 3.1416]

    ⇅ 3.1415 ≦ π ≦ 3.1416

    区間演算

  • •  πを区間で挟み込んでしまう. π ∈ [3.1415, 3.1416] ⇔3.1415 ≦ π ≦ 3.1416 •  ネイピア数 e =2.71828182845904523536… を区間にしてみよう. 各⾃自書いてみてください.  

    区間演算

  • •  πを区間で挟み込んでしまう. π ∈ [3.1415, 3.1416] ⇔ 3.1415 ≦ π ≦ 3.1416 •  ネイピア数を区間で挟み込んでしまう. e ∈ [2.7182, 2.7183] ⇔ 2.7182 ≦ π ≦ 2.7183 では? π と e の⾜足し算の結果:

    π+e  は??

    区間演算

  • 精度度保証付き数値計算の書籍

    •  ⼤大⽯石進⼀一,精度度保証付き数値計算,コロナ社

  • 精度度保証付き数値計算の書籍

    •  中尾充宏・渡辺善隆,別冊数理理科学  実例例で学ぶ精度度保証付き数値計算,サイエンス社

  • 精度度保証付き数値計算のツール(アプリケーション)

    •  kvライブラリ:http://verifiedby.me/kv/  精度度保証付き数値計算を⾏行行うためにC++で作    成した  ライブラリ群  (柏⽊木先⽣生HPより)•  INTLAB:http://www.ti3.tu-‐‑‒harburg.de/rump/intlab/  Matlab・Octave⽤用精度度保証付き数値計算ツールボックス

  • 問題演習(残り時間)

    •  調べる:スマホ・パソコンなどを使って.  ・浮動⼩小数点数と固定⼩小数点数の違い.  ・数値計算と数式処理理の違い.  ・IEEE  754標準規格で定められた    倍精度度浮動⼩小数点数について.  ・計算誤差が引き起こした事故例例.