読者です 読者をやめる 読者になる 読者になる

あのねノート

せんせいあのね、パソコンで字が書けるようになったよ

コンピュータ計算、誤差が出がち(工業数学A2の前フリ)

復習も兼ねて1回目だけでも講義内容をまとめておきたいと思いました。すでに挫折の予感。

それは違うよってところとか、こう言った方が分かりやすいよっていうところがたぶんたくさんわんさかあるのでそういうのはコメントで言ってもらえたら大喜びしますね…おべんきょむずかしい

コンピュータで計算をするのは便利なのですが、どうしても誤差が出てしまうのだそうです。大きく分けると5種類あって

  1. 丸め誤差
  2. 情報落ち
  3. 桁落ち
  4. オーバーフロー
  5. アンダーフロー

丸め誤差と情報落ちは、反復を増やしたりアルゴリズムを改良したりすることである程度少なくはできますが発生を防ぐことはできません。あとどうやら比較的誤差が小さく済む?のかな?というわけでやむを得ないかなという気持ちになります。

桁落ちは計算の仕方を変えれば排除できる、というか排除できないなら方法を変えなくてはならないそうです。桁落ちを排除できるような計算の仕方をしているソフトウェアを選ぼうということみたい。要するに桁落ちは許せません。

オーバーフロー、アンダーフローはコンピュータで扱える桁数の限界の話なので、どうしても防ぎたいときはなんだかんだ工夫をしなくてはなりません。ほかの誤差とは別格という感じがあります。

 

収束性にも2種類あります。数式を書くのが面倒なので見にくくてすみません。

従来習ってきた収束性は絶対精度で、x(k)がaに収束するとき、x(k)-aの絶対値がεより小さくなれば収束という感じでしたが、これだとaがもともと小さいときに精度が悪くなります。x(k)もaも小さかったらその差自体誤差みたいなものという感じなのかなあ。

というわけで出てくるのが相対精度で、これはx(k)-aをaで割ったものの絶対値で考えます。aとの比になるからどれだけx(k)とaとの差が小さいかがわかりやすい。

てことで、小さい数を扱うときに理想なのは相対精度が高いアルゴリズムなのだそうです。

 

ここで前フリが終わって行列の固有値問題について考えることになりました。固有値問題を考えるのにはいろいろ方法があるのだけど、結論としては行列の中身がごちゃごちゃで詰まっていて大きいほど固有値問題を解くのは絶望的になるということのようです。すかすかで対称で小さいと短い時間ですんなり解けます。

 

まとめ

  • コンピュータで計算しようとするとある程度の誤差は仕方ない。しかし桁落ち、お前は許さない。
  • ある程度大きい数なら絶対精度、0に近いなら相対精度
  • 行列の中身がごちゃごちゃで大きいと計算しにくくて困る

 

数学が苦手な人がざっくり理解しようとするとこんな感じになります。細かいことはあとあと考えよう…ああ教科書…