なにも考えずに、Scheme で数値計算する主旨のブログを勢いで書き始めたことを、私は後悔し始めています。このままでは、明らかに非実用的なプログラムができる。

申し訳ありませんが、この計画、中断させて頂きます。もっと他のことも勉強してから、数値計算プログラムに戻ろうと思っています。

どうして、中断しようと思ったか理由を書きます。

Schemeで数値は、正確数(exact number) と不正確数(inexact number) に分類されます。

現実的に、全ての数値計算の問題に対して、正確数を使うのは不可能 計算機は有限のメモリしか持たない。だから計算機は、全ての正確数を扱えるわけではない。計算途中に数値が発散的に大きくなることや、問題の解自体が非常に大きい数であることもある。特に行列のサイズと条件数が大きくなったとき、問題が深刻になる。 なにより、メモリを監視しないと、いつメモリを消費し尽くすかわからない。正確数を使ったプログラムは、恐る恐る使わざるを得ない。 Lispは本当に最強か？(小飼弾氏 404 Blog Not Found )

http://blog.livedoor.jp/dankogai/archives/51040709.html リンク先は、数値だけでなく、もっと一般的に、Lispについて議論されてます。





現在、Scheme の不正確数は、浮動小数点数の精度を選択できないようだ 調べた限りでは、不正確数についても、Cなどの浮動小数点数のように、float やdouble の選択肢がない。数値計算の精度について実験する際、これはかなり不満。