pf-5. 計算誤差
(Python 入門)
URL: https://www.kkaneko.jp/pro/pf/index.html
1
金子邦彦
① コンピュータの実践的な理解
② 批判的思考
2
コンピュータでの数値の扱い
• コンピュータは、整数だけでなく、小数点以下の値を含む
数値(浮動小数点数)を扱うことができる。
• 浮動小数点数は、通常、コンピュータが、10進数で約15-16
桁の精度まで数値を保持できるものである。
• 有限の精度であるため、この範囲を超える数値( 10進数で
17桁以上の数値)を計算しようとする微小な誤差が発生す
る。
• 精密な計算を行う場合などは、精度について理解しておく
ことが重要となる。
3
コンピュータによる「1÷3」 の計算
コンピュータを使って「1 ÷ 3」を計算してみるとどうなる
でしょうか?
• コンピュータは「0.3333333333333333」などと表示
• しかし,「無限に続く」数値を表現することはできない
• つまり、「1 ÷ 3」の正確な値を計算できない
コンピュータが表示する結果には小さな誤差が含まれている
(精度に限界がある)と理解してください.
コンピュータを使った計算に注意してください.
4
trinket
• Trinket はオンラインの Python、HTML 等の学習サイト
• 有料の機能と無料の機能がある
• 自分が作成した Python プログラムを公開し、他の人に実
行してもらうことが可能(そのとき、書き替えて実行も可
能)
• Python の標準機能を登載、その他、次のモジュールや
パッケージがインストール済み
math, matplotlib.pyplot, numpy, operator, processing, pygal,
random, re, string, time, turtle, urllib.request
5
• trinket は Python, HTML などのプログラムを書き実行できる
サイト
• https://trinket.strivemath.org/python/0fd59392c8
のように、違うプログラムには違う URL が割り当てられる
• 実行が開始しないときは、「実行ボタン」で実行
• ソースコードを書き替えて再度実行することも可能
trinket でのプログラム実行
6
ソースコードの
メイン画面
実行結果
実行、STOP ボタン
演習
資料:8, 9
【トピックス】
• 計算誤差
7
8
① trinket の次のページを開く
https://trinket.strivemath.org/python/8d555705c1
② 実行結果が,次のように表示されることを確認
1/3, 1/6, 1/9 を計算
計算誤差がある
9
③ trinket の次のページを開く
https://trinket.strivemath.org/python/8a180f7d80
④ 実行結果が,次のように表示されることを確認
0.3333333333333 の 3 倍を計算
計算誤差がある
コンピュータ計算と誤差
• 「コンピュータを使えば計算は完璧に正確」- この思い込
みは避けましょう。
• 例えば,「1 ÷ 3」の計算結果は,完全な精度では表示で
きません.少ないながらも誤差が含まれます.
• しかしこの微小な誤差は、多くの場合、私たちの作業には
十分な精度
• 少しの誤差を許容すれば、多くの計算が効率的に処理でき
るという考え方も.
10
① コンピュータの実践的な理解
コンピュータがどのように数値を処理するかを理解することで、
技術に対する洞察が深まります。これは、プログラミング、
データ分析、AI など、コンピュータを用いた様々な活動での基
礎になります。
② 批判的思考
「コンピュータを使えば計算は完璧に正確」という一般的な思
い込みを覆すことで、常に批判的に見ることや、根拠を確認す
ることが重要である。このような批判的な視点は、学習への意
欲を刺激し、より深く物事を理解するための道筋を開くことが
できます。
11
全体まとめ
1.コンピュータでは、整数や、小数点以下の値を含む数値
(浮動小数点数)を扱う
2.浮動小数点数の精度は有限で、通常10進数で約15-16桁
までとなる。この範囲を超えると微小な誤差が発生する可
能性がある。
3.「1 ÷ 3」のような簡単な計算でも、コンピュータは結果
を完全に正確に表示することができない。
「0.3333333333333333」のように表示され、微小な誤
差が含まれている。
4.「コンピュータを使えば計算は完璧に正確」という一般的
な思い込みを覆すことが大切である
5.微小な誤差があったとしても、多くの場合、実際の作業で
は十分な精度である。微小な誤差を許容することで、多く
の計算が効率的に処理できる。この考え方は実用的な視点
から重要である。
12