タイガー計算機のページで、開平法について解説したところ、多くの反響を頂いた。
反響は嬉しいのだが、数学談義には答えられない。数学は好きだけど、詳しくは無いから。
しかし先日、このような意見が書き込まれていた。
【べあー】 いくらやっても計算が合わないので、√2を30桁までやってもらえませんか? (2010-11-01 17:19:19)
こういうのは数学談義ではないので、答えてあげられる。
計算手順がよくわからない、という質問は多いので(文章をよく読んでくれ、としか言いようの無いものがほとんどだが)、サンプルを提示するのはよいだろう。
もちろん、単に計算結果が知りたいということではなく、計算の途中経過を詳細に教えて欲しい、と言う意味である。
足し算、引き算が非常に多用されるので、手で書くよりもプログラムで生成したほうが正確かつ詳細な内容が書けるだろう。
…というわけで、JavaScript で、平方根を求めるプログラムを作ってみた。
求めるだけでなく、その途中経過を詳細に報告する。
で、これを使って作ったページがこちら。
「√2を30桁計算する」経過が書かれているが、非常に長いページである。
一見、普通に記述されたページに見えるが、実は JavaScript で内容を生成している。
√2の結果を表示するために長大なページを生成するとは、なんと役立たずな計算機であろうか。
計算の構造自体はたいして難しくないのだが、30桁も求めなくてはならないので、普通の変数だと有効桁数が問題となった。
javascript の変数自体には型が無いが、変数に入れられる値には当然型がある。
double で値を格納しても、10進数での有効桁数はせいぜい15桁だ。
そこで、数値は文字列として持つことにして、8桁ごとに区切って計算をするルーチンを用意した。
タイガー計算機の機能が満足できれば十分なので、足し算引き算しかできないが、「多倍長整数演算」だ。
8桁ごとに区切って数値化する際、先頭が 0 だと8進数として認識してしまうため、ゼロサプレスするためのルーチンなども必要となった。
今のところ、整数値の平方根しか計算できない。(結果は小数点以下まで表示される)
バージョンアップする機会があれば、小数点を含んでも計算できるようにしたいところ。
多倍長整数演算なので、固定小数点として扱うだけの話であるが。
同じテーマの日記(最近の一覧)
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |