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

【お詫び】「Schemeで数値計算」 中断します

Scheme

なにも考えずに、Scheme数値計算する主旨のブログを勢いで書き始めたことを、私は後悔し始めています。このままでは、明らかに非実用的なプログラムができる。
申し訳ありませんが、この計画、中断させて頂きます。もっと他のことも勉強してから、数値計算プログラムに戻ろうと思っています。
どうして、中断しようと思ったか理由を書きます。
Schemeで数値は、正確数(exact number) と不正確数(inexact number) に分類されます。

現実的に、全ての数値計算の問題に対して、正確数を使うのは不可能

計算機は有限のメモリしか持たない。だから計算機は、全ての正確数を扱えるわけではない。計算途中に数値が発散的に大きくなることや、問題の解自体が非常に大きい数であることもある。特に行列のサイズと条件数が大きくなったとき、問題が深刻になる。

なにより、メモリを監視しないと、いつメモリを消費し尽くすかわからない。正確数を使ったプログラムは、恐る恐る使わざるを得ない。

Lispは本当に最強か?(小飼弾氏 404 Blog Not Found )
http://blog.livedoor.jp/dankogai/archives/51040709.html

リンク先は、数値だけでなく、もっと一般的に、Lispについて議論されてます。

現在、Scheme の不正確数は、浮動小数点数の精度を選択できないようだ

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

しかしSchemeの美しさは捨て難い

メモリ無限大を仮定した理想的な状況では、Scheme 最強だと思う。
現実はメモリ有限なので、ジレンマが発生する。
メモリ管理に、手をつけようとすると、SchemeSchemeでなくなってしまう気がするし、何より今の私の能力をはるかに越えた問題。

MATLABでは、メモリ不足をアラートしてくれるらしい。よく考えられた仕様だと思う。
「メモリ不足」エラーの解決 MathWorks 日本
http://jp.mathworks.com/help/matlab/matlab_prog/resolving-out-of-memory-errors.html?requestedDomain=jp.mathworks.com

ちょっと、Scheme以外の言語も勉強しようと思います。