ニュートンラプソン法による解法のプログラムを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
この記事が気に入ったらサポートをしてみませんか?