見出し画像

ニュートンラプソン法による解法のプログラムをLISPで作ってみました

実行環境
OS:Windows11
LISP:xyzzy0.2.2.253(現在の最新バージョンです)

f(x)=X^2-2の関数の解を初期値5で設定して求めています。
while(< x 6)としているのは無限ループにしたかったからでloopを使ってもよいと思います。x1を求める関数をdefunで定義した方がスマートですが、何分にも素人なので、動いただけで満足してしまいました。clispの方が使いやすいと思うのですが、実行環境をダウンロードできませんでした。
 LISPは関数型言語だということで、科学技術計算に挑戦してみましたが、一般に出回っている言語より癖が強くて、また、一口にLISPと言っても処理系によって若干方言があるようで、試行錯誤で慣れるのに時間がかかりました。でも、動いた喜びは最高ですね。

'ニュートンラプソン法による解法
(let ((x 5))
 (while(< x 6)
   (setq x1 (- x (/ (- (* x x) 2)(* 2 x))))
   (print (* x1 1.0d0))
   (if (< (- x x1) 0.0001)(return (* x1 1.0d0)))
   (setq x x1)
   )
 )

2.7d0 
1.72037037037037d0 
1.44145536817765d0 
1.414470981367771d0 
1.414213585796884d0 
1.414213562373095d0 
1.414213562373095d0

この記事が気に入ったらサポートをしてみませんか?