本リポジトリは、北尾早霧・砂川武貴・山田知明『定量的マクロ経済学と数値計算』(日本評論社)の第1章に対応するサポートコードを収録しています。
chapter1/
└── Julia/
└── 1_7_computational_error/
├── quantmacro_chapter1.ipynb # Jupyter Notebook(実行可能)
└── quantmacro_chapter1.html # 実行結果を埋め込んだHTMLファイル
現時点では Julia のコードのみ提供しています。
Julia/1_7_computational_error/quantmacro_chapter1.ipynb- Juliaの簡単な使い方と「1.7節 計算誤差は必ず存在する」について説明をしたJupyter Notebookです。
Julia/1_7_computational_error/quantmacro_chapter1.html- 拡張子が
.ipynbのファイルはJupyter Notebook(あるいはJupyter Lab)から開く必要があるため、htmlファイルも同梱しています。ダブルクリックすると普段使っているウェブブラウザから開くことが出来ます。ただし、こちらは計算結果が埋め込まれていて、結果を眺めるだけで、自力で計算結果を確かめることは出来ません。コードを実行したい場合、Juliaの環境設定マニュアルを読みながら、JuliaとJupyter Notebookをインストールしてください。
- 拡張子が
本 Notebook では、Julia の基本的な使い方を学びながら、数値計算における誤差の概念を解説しています。以下のトピックを扱っています。
Julia は動的型付けの言語であり、変数の型を意識せずにプログラムを書けます。ただし、整数(Integer)と浮動小数点数(Float)の区別はコンピュータ内部の処理に影響します。型を確認する typeof() の使い方も紹介しています。
整数の指数(例:5^2)と浮動小数点の指数(例:5^2.0)では、コンピュータ上の計算処理が異なるため、計算速度に差が生じます。@time マクロを使ってループ計算の速度を計測し、型の選択が実用上のパフォーマンスに影響することを確認します。
すべての数値型には表現できる上限・下限があります(例:Int64 の最大値は約 typemax() と typemin() でその範囲を確認し、上限を超えた場合(オーバーフロー)に何が起こるかを Julia で検証します。
コンピュータ上では Rational)も紹介しています。
非常に大きな数と非常に小さな数を混在させた計算では、数値の情報の一部が失われ、誤差が生じます(桁落ち)。教科書 1.7 節の例として、
$$
\frac{(1+x)-1}{x}
$$
を
本 Notebook を作成した際の環境は以下の通りです。お使いの環境によって計算速度などに差が生じることがあります。また、Julia のバージョンによっては一部のコマンドに違いが生じる可能性があります(よほど古いバージョンでなければ問題ありません)。
詳しいバージョン情報は Notebook 冒頭の versioninfo() の出力を参照してください。
Julia と Jupyter Notebook のインストール・環境設定については、インストールと環境構築のガイド を参照してください。
- A. クアルテローニ / F. サレリ / P. ジェルヴァシオ(2014)『MATLAB と Octave による科学技術計算』丸善出版
- 石井一夫(2021)『基礎から学ぶ Julia』SCC