ガイダンス/計算機における数の表現齊藤 宣一(さいとう のりかず)
数理科学研究科 (321室) [email protected]
計算数理 I (数学科 3年) 計算数理 (統合自然科学科 3年)第 0回:2020年 4月 17, 24日
[email protected] 計算数理 I・計算数理 2020.04.17 & 24 1 / 25
動機 1例(方程式)代数方程式 zn + an−1z
n−1 + · · ·+ a1z + a0 = 0の根の数値を求めたい.• カルダーノ (Cardano)の公式: x3 + px + q = 0の根の一つは,
x =3
√−q
2+
√q2
4+
p3
27+
3
√−q
2−√
q2
4+
p3
27.
• f (x) = x3 − 3x − 1 = 0 相異なる 3つの実根
→ x = 3
√12 + i
√34 + 3
√12 − i
√34 .
具体的な数値(近似解)が知りたい.← 構成的な解法としての反復解法
xk+1 = φ(xk), xk → 根 (k →∞).
Newton法が有名
[email protected] 計算数理 I・計算数理 2020.04.17 & 24 3 / 25
動機 2
例(定積分)
有界閉区間 [a, b]上の連続関数 f (x)に対して,∫ b
a
f (x) dx の値を求めたい.
x
y
0
y = sinx
π2x
y
0
y = e−(x/2)2
1 2
• 原始関数がわからない場合どうするか?(← ほとんどの場合!)• 素朴な方法 ← 複合中点則,複合台形則,複合 Simpson則• 標本点を戦略的にとる方法 ← Gauss型積分公式 ← 直交多項式
xa b
xa b
xa b
[email protected] 計算数理 I・計算数理 2020.04.17 & 24 4 / 25
動機 3
例(Lotoka-Volterra微分方程式系)競合の関係下にある 2種類の生物の増殖の数理モデル
du1dt
= c1u1(1− b1u1 − d2u2),
du2dt
= −c2u2(1− b2u2 − d1u1)
の解について,u1(t)と u2(t)の時間変化が知りたい.u1(t)と u2(t)は 2種類の生物の個体密度,c1, c2 はそれぞれの生物の増殖係数,さらに,b1, b2, d1, d2 は,互いの競合の関係や,環境の影響を表現する定数.
• 逐次近似による解の一意存在の証明は,構成的・実用的
• しかし,もっと実用的・効率性の高い解法がある← Runge-Kutta法....
[email protected] 計算数理 I・計算数理 2020.04.17 & 24 5 / 25
要点数学的問題の解を具体的に計算する(=数値を得る)方法を研究する
• 数値解析 (numerical analysis)
• 数値計算 (numerical computation)
• 計算数理 (computational mathematics)
• 科学計算 (scientific computing)
もう少し大きな分類では,応用数学の一部になる.この機に,応用数学を勉強する意義を考えて欲しい.
[email protected] 計算数理 I・計算数理 2020.04.17 & 24 6 / 25
具体的な内容• 計算機における数の表現
• 非線形方程式: Newton法,縮小写像の原理と反復法の収束,収束の速さ,ノルム,多次元 Newton法,....
• 行列のノルム
• 固有値問題: Gershgorinの定理,Rayleigh商,冪乗法,....
• 補間と積分: Lagrange補間多項式と複合積分公式 (中点則,台形則,Simpson則など),直交多項式と Gauss型積分公式
• 常微分方程式: Euler法,Heun法,Runge–Kutta法,刻み幅の自動調節
• 関数近似: Weierstrassの多項式近似,最良近似,....
• 無制約最適化: 関数の最小化,応用:Deep Neural Networksに基づく最適化
[email protected] 計算数理 I・計算数理 2020.04.17 & 24 7 / 25
連絡 (1/2)
• 成績評価: レポート (詳細は,追って連絡します)(当初は,“試験”とアナウンスしましたが変更します.)
• 講義の方法: ITC-LMSを利用したオンライン講義の形で行います.具体的には,オンデマンド方式(非同期オンライン型)で行います.
1 次ページの講義日程にあわせて,講義ノート,講義を録画した動画ファイルと講義を録音した音声ファイルを ITC-LMSの 教材 にアップロードする(これらは,第 n回につき一つずつである.動画ファイルなどは,そのものをアップロードするのではなく,視聴できる URLを示す).
2 受講生は,それらを用いて学習し,終わったら ITC-LMSの アンケート にすすみ,アンケートに答える.アンケートへの回答は,単位認定のための条件ではないが,各受講者の学習の進捗を把握したいので,是非協力して下さい.(単位認定は,レポートのみによる.)
なお,リアルタイムの streamingは行いません.(当初,UTASで streaming配信を行うというアナウンスをしてしまいました.申し訳ありません.)
[email protected] 計算数理 I・計算数理 2020.04.17 & 24 8 / 25
連絡 (2/2)
• 日程:
4月 10日 休講 第 5回 6月 5日第 0回 4月 17日 , 4月 24日 第 6回 6月 12日第 1回 5月 1日 第 7回 6月 19日第 2回 5月 8日 第 8回 6月 26日第 3回 5月 15日 第 9回 7月 3日第 4回 5月 29日 第 10回 7月 10日• 4/17と 4/24の内容は同じです.オンライン講義に慣れてもらう趣旨で,2回分の講義の時間を取りました.
• 上の日程は,ペース配分のための目安であり,各受講生の環境に応じて,スケジュールは臨機応変に設定して下さい(4/17と 4/24に同じことを 2回する必要はありません).しかし,なるべく,第 n回の題材を一週分と考えて学習して下さい.特に,すべての受講生がオンライン講義を受ける環境が整ったことを確認してから,最終的なレポートの締め切りを設定します.
• 「計算数理演習」も併せて履修することが望ましい.
[email protected] 計算数理 I・計算数理 2020.04.17 & 24 9 / 25
重要な注意
オンライン授業クイックガイドのクイックガイド(学生用)https://2eee5c2b-e22e-47e7-a900-9661a112dfcf.filesusr.com/ugd/
eebf3c_f62aaeb452b043c2982d9c8c4c5d15da.pdf
3. UTAS で Zoom の URL を確認する(主にオンラインの初回)この URL は絶対に学外者には漏らさないこと。漏らした場合は、試験の不正行為と同等の違反行為とみなし、該当科目だけでなくセメスター中に獲得予定の全単位を無効とする。
この講義で利用する講義動画や音声にアクセスするための URLの取り扱いについても,このルールが適用されます.十分注意して下さい.
[email protected] 計算数理 I・計算数理 2020.04.17 & 24 10 / 25
教科書・参考書
教科書: 特に指定しない
参考書:
1 [S12] 齊藤宣一:数値解析入門 (大学数学の入門 9),東京大学出版会,2012年
2 [S17] 齊藤宣一:数値解析(共立講座数学探求),共立出版,2017年.
3 [Q14] A. Quarteroni, F. Saleri, P. Gervasio: Scientific Computing withMATLAB and Octave, 4th edit., Springer, 2014 (加古孝,千葉文浩訳,MATLABと Octaveによる科学技術計算,丸善出版,2014年)
4 A. Quarteroni, R. Sacco, F. Saleri: Numerical Mathematics, 2nd edit., 2007.
講義で扱うことの多くは,[S12]か [S17]に書いてあります.講義では,詳細を省略せざるを得ないこともあるので,適宜参照することを前提としています.
[email protected] 計算数理 I・計算数理 2020.04.17 & 24 11 / 25
はじめの例題
問題次の式の値をコンピュータで計算せよ:
1050 + 812− 1050 + 1035 + 511− 1035
次で試してみよう.• MATLAB
• Maxima
[email protected] 計算数理 I・計算数理 2020.04.17 & 24 13 / 25
浮動小数点数• β ≥ 2: 偶数, x ∈ R (x = 0)
x = ±(d0.d1d2 · · · )× βm = ±(d0β0
+d1β1
+d2β2
+ · · ·)× βm
m, di ∈ Z, 0 ≤ di ≤ β − 1 (i = 0, 1, 2, . . .), d0 = 0.
• β 進 n + 1桁浮動小数点数
x ≈ x = ±(d0β0
+d1β1
+d2β2
+ · · ·+ dnβn
)︸ ︷︷ ︸
仮数部
× βm︸︷︷︸指数部
(−L ≤ m ≤ U)
• 4つのパラメータ β: 基数,n: 桁数,L: 最小指数,U: 最大指数• β 進 n + 1桁浮動小数点系 F = {0} ∪ {上のような x}
• x → x : 丸める (“四捨五入”,切捨,.....) |x − x |: 丸め誤差
[email protected] 計算数理 I・計算数理 2020.04.17 & 24 14 / 25
ミニ浮動小数点系例β = 2, n = 2, L = 2, U = 1
(m = −2,−1, 0, 1, d0 = 1, d1, d2 = 0, 1)
仮数部 = 11 + 0
2 + 04 = 4
4
= 11 + 0
2 + 14 = 5
4
= 11 + 1
2 + 04 = 6
4
= 11 + 1
2 + 14 = 7
4
指数部 2−2
2−1
20
21
• (絶対値)最小の数の近くは密,外に向かって疎• 0の両側は空白が広い• [ 14 ,
12 ),[ 12 , 1),[1, 2),[2, 4)を等分割
1 20 3 41/4 1/2 7/2
m = -2 m = -1 m = 0 m = [email protected] 計算数理 I・計算数理 2020.04.17 & 24 15 / 25
浮動小数点数の規格• 浮動小数点数の規格にはいろいろなものがある.• 「普通」のコンピュータでは,IEEE754が採用されている
• IEEE = Institute of Electrical and Electronics Engineers/電気電子技術者協会
• 単精度実数型 (binary32) β = 2,n = 23,L = 126,U = 127このために,符号に 1 bit,指数に 8 bit, 仮数部 23 bitの合計 32bit (8B)を用いる.
• 倍精度実数型 (binary 64) β = 2,n = 52,L = 1022,U = 1023このために,符号に 1 bit,指数に 11 bit, 仮数部 52 bitの合計 64 bit(16B)を用いる.
• 最大正数 xmax は,d1 = · · · = d52 = 1,m = 1023 のとき
xmax =
(1
20+
1
2+ · · ·+ 1
252
)× 21023 = 1.7976 · · · × 10308
• “最小正数”xmin は,d1 = · · · = d52 = 0,m = −1022のとき
xmin =
(1
20+
0
21+ · · ·+ 0
252
)× 2−1022 = 2.2250 · · · × 10−308
[email protected] 計算数理 I・計算数理 2020.04.17 & 24 16 / 25
計算機イプシロンβ 進 n + 1桁の浮動小数点系で実数 x = 0を x と表したとき,
∣∣∣∣x − x
x
∣∣∣∣ ≤
1
2β−n (“四捨五入”; (β/2− 1)捨 (β/2)入)
β−n (切捨).
すなわち,相対誤差は β と nを固定すると一定値以下となる.εM = β−n を計算機イプシロンと呼ぶ.これは,Fの規格のみで定まる数で,
εM = “1より大きな最小の Fの要素と 1との差”
で特徴づけられる.
例:倍精度における εM
εM =
(1
20+
0
21+ · · ·+ 0
251+
1
252
)· 20 −
(1
20+
0
21+ · · ·+ 0
251+
0
252
)· 20
= 2−52
= 2.22044604925031308 · · · × 10−16
[email protected] 計算数理 I・計算数理 2020.04.17 & 24 17 / 25
浮動小数点数演算の問題点:桁落ち 1• 10進 5桁,切り捨て• x = 1.2345× 10−3 のとき
√1 + x − 1 =?(= 6.170596187 · · · × 10−4)
1 + x (= 1.0012345) = 1.0012,√1 + x (= 1.0005998 · · · ) = 1.0005
なので,√1 + x − 1 = 1.0005− 1.0000 = 0.0005
= 5× 10−4. (5.0000× 10−4??)
• 5桁あった有効桁が 1桁に → 5− 1 = 4桁の桁落ち (5.0000× 10−4 NO!)
• 浮動小数点演算では,値の近い 2数の減算には十分な注意を要する.• 今の場合は,計算法を工夫することで回避できる.実際,
√1 + x − 1 =
(√1 + x − 1)(
√1 + x + 1)√
1 + x + 1=
x√1 + x + 1
(= 6.17095× 10−4) = 6.1709× 10−4.
[email protected] 計算数理 I・計算数理 2020.04.17 & 24 18 / 25
浮動小数点数演算の問題点:桁落ち 2
• 2次方程式 x2 + bx + c = 0 根の公式 x =−b ±
√b2 − 4c
2
• x2 − 20x + 14 = 0 x1 = 19.98749 · · ·,x2 = 0.01250782 · · ·
• 10進 5桁切り捨てで計算• x1 =
20 +√399
2=
20 + 19.974
2= 19.987
• x2 =20−
√399
2=
20− 19.974
2= 0.012999
• −b −√b2 − 4c = 20−
√399を計算する際の桁落ちが原因
• 回避方法:根と係数の関係 x1x2 = c
x2 =1
4x1= 0.12508.
[email protected] 計算数理 I・計算数理 2020.04.17 & 24 19 / 25
浮動小数点数演算の問題点:情報落ち 1
• 10進 5桁切り捨てで,x = 0.12345,y = 0.51234× 10−7 について,x + y =?
x + y = 0.12345 + 0.0000051234 = 0.12345 = x .
• 大きさが極端に違う 2数の加減算を行った時,小さいほうの数値の下位の桁が失われてしまう現象を,情報落ち(積み残し)と呼ぶ.
• a = 3.8765× 10−4,b = 1.2345に対して,(a+ b)− b =?
(a+ b)− b = 1.2348− 1.2345 = 3× 10−4.
これは,情報落ちと桁落ちが同時に影響している.
• |a| = 0が |b|に対して十分に小さい場合,(a+ b)− b = 0 = aと成り得る.
[email protected] 計算数理 I・計算数理 2020.04.17 & 24 20 / 25
浮動小数点数演算の問題点:情報落ち 2
• 無限級数∞∑n=1
1
n2=
π2
6= 1.64493406684822 · · · の部分和 Sn =
n∑k=1
1
k2
• Sn = ((1 + 122 ) +
132 ) + · · ·+
1n2 の順で足すと (単精度),
n Sn4100 1.64472510000 1.64472520000 1.644725
(注意:1
41002= 5.948839 · · · × 10−8)
• Sn = (( 1n2 +
1(n−1)2 ) + · · ·+
112 の順で足すと,
n Sn10000 1.64472520000 1.64488430000 1.644900
• 数学的に等価な式でも,処理の順序によって値が大きく変わってしまい,正確でない値を算出してしまう可能性がある.[email protected] 計算数理 I・計算数理 2020.04.17 & 24 21 / 25
ここまでのまとめ
• どうして計算できなかったのだろう?
1050 + 812− 1050 + 1035 + 511− 1035.
• 多くの数学的問題(整数論でさえも!)は,本質的に実数を用いて定式化されたり,解析されたりする.したがって,それを浮動小数点数で近似することに付随する問題は避けて通れない.
• コンピュータの性能が向上し,より多くの桁を扱えるようになったとしても,無限の桁が扱えない以上,問題を先送りにするだけで,本質的な解決にはならない.ただし,できるだけ多くの桁を扱える技術(ソフト・ハード)を開発する事には,大きな意味があり,真に役立つ研究である.
• もちろん,整数(あるいは有理数)しか出てこない問題であれば,すべての計算を整数演算(あるいは有理数演算)で実行する事が技術的に可能ならば,このような問題は発生しない.
[email protected] 計算数理 I・計算数理 2020.04.17 & 24 22 / 25
計算量の問題:クラメールの公式
n元の連立一次方程式 Ax = bの解
x1 =detA1
detA, x2 =
detA2
detA, . . . , , xn =
detAn
detA.
ただし,Ai = [a1, . . . , ai−1,b, ai+1, . . . , an].
これは “実用的”な方法ではない.
必要な乗除算の回数は,nが十分大なら,約 2(n + 1)!
[email protected] 計算数理 I・計算数理 2020.04.17 & 24 23 / 25
計算量の問題:クラメールの公式n元の連立一次方程式 Ax = bの解
x1 =detA1
detA, x2 =
detA2
detA, . . . , , xn =
detAn
detA.
ただし,Ai = [a1, . . . , ai−1,b, ai+1, . . . , an].
これは “実用的”な方法ではない.
必要な乗除算の回数は,nが十分大なら,約 2(n + 1)!
n 2(n + 1)! 秒 年20 1.02× 1020 1.02× 108 3.2430 1.65× 1034 1.65× 1022 5.21× 1014
100 2.56× 10160 2.56× 10148 5.98× 10140
• 並列計算機は,1秒間に 1012回の浮動小数点演算を行える (=テラフロップ(teraflops)のスピード).
• 高性能のWSや PCでも,109(回/秒)=ギガフロップ (gigaflops).• ビックバン:12.5(±3)× 109 年前
[email protected] 計算数理 I・計算数理 2020.04.17 & 24 23 / 25
計算量の問題:クラメールの公式
n元の連立一次方程式 Ax = bの解
x1 =detA1
detA, x2 =
detA2
detA, . . . , , xn =
detAn
detA.
ただし,Ai = [a1, . . . , ai−1,b, ai+1, . . . , an].
これは “実用的”な方法ではない.
必要な乗除算の回数は,nが十分大なら,約 2(n + 1)!
n 2(n + 1)! 秒 年20 1.02× 1020 1.02× 104 3.24× 10−4(= 2.83h)30 1.65× 1034 1.65× 1018 5.21× 1010
100 2.56× 10160 2.56× 10144 5.98× 10136
• 1016(回/秒)=ペタフロップ (petaflops)の計算性能京 http://www.aics.riken.jp/
• 数学的に解けるということと,現実的に解くことの間にはギャップがある.
[email protected] 計算数理 I・計算数理 2020.04.17 & 24 23 / 25
計算量の問題:Gaussの消去法• LU分解 (多くの)行列 Aは,A = LU の形に分解できる.Lは単位下三角行列,U は上三角行列
• 連立一次方程式の解法への応用
Ax = b ⇔ LUx = b ⇔
{Ux = cLc = b
nが十分大きい時の乗除算回数の概算1
3n3 +
1
2n2 +
1
2n2 ∼ 1
3n3
n 乗除算回 秒10 4.33 · 102 4.33 · 10−7
100 3.43 · 105 3.43 · 10−5
1000 3.34 · 108 3.34 · 10−1
(109 FLOPSの演算能力のあるコンピュータ)
詳しくは,[S17]の第 6章を参照せよ.[email protected] 計算数理 I・計算数理 2020.04.17 & 24 24 / 25
補足
しかし、浮動小数点数演算については、これ以上深入りはしません.興味のある人は,次を参照してください.
• 応用数理ハンドブック,朝倉書店,2013年
• U. W. Kulisch and W. L. Miranker: The arithmetic of the digital computer: anew approach, SIAM Review 28 (1986) 1–40.
• [S17] 齊藤宣一,数値解析(共立講座数学探求),共立出版,2017年
さらに,[S17]の第 6章を読むことをすすめます.
[email protected] 計算数理 I・計算数理 2020.04.17 & 24 25 / 25