ここではmaximaでニュートン法のプログラムを書いてみます。 ニュートン法は近似的に解を求めるためのアルゴリズムの一つです。 ニュートン法自体についてはwikipedia に譲るとして、一般にプログラムでニュートン法を使う場合 求める関数の微分はあらかじめ求めておく必要があります。 しかしmaximaには微分を行う関数があるため、 この箇所を自動化することができます。 以下f(x)は入力となる式です。 以下のt(f)をそのまま使ってもよいのですが g(x,k)のようにすれば2や3の平方根が計算出来ます。ここでは自分でニュートン法のアルゴリズム通りに計算しましたが ニュートン法を使って特定の関数の値を求めたい場合は mnewtonパッケージが利用できます これについては方程式を解く、の項で使い方を説明しています。ニュートン法
f(x):=x^2-a$ t(f):=block([fd,h],fd:diff(f(x),x),h:x-f(x)/fd,return(rat(h)))$ t(f); g(x,k):=if x=1 then (1+k)/2 else (g(x-1,k)^2+k)/(2*g(x-1,k)); bfloat(g(10,2)); /* sqrt(2) */ bfloat(g(10,3)); /* sqrt(3) */