fixedpoint.jp - 常微分方程式を Scheme でモデル化するには




常微分方程式を Scheme でモデル化するには

R6RS では Appendix D として、数値解析の4次 Runge-Kutta 法が実装されています。

この例は R5RS のときからお馴染みのものです。標準ライブラリを含まない言語のコアだけで

ということを簡潔なコードで示す楽しいものです。R5RS のときには deleyforce を使っていましたが、これがなくても済むことも分かります。

この例に似たテーマのプレゼンテーションが LispNYC.org での "10 Nov 2009 - Simple Scheme for Tricky Differentials" で紹介されています。これもやはり常微分方程式を高階関数で表し、遅延で解いています。

確認してみたところ、splines.ss 中の

(define (diff xs) (map * xs (countFromTo 1 (length xs))))
(define (diff xs) (map * (cdr xs) (countFromTo 1 (- (length xs) 1))))
が正しいのではないかと思います。


© 2006-2010 Takeshi Abe