このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1276810079/212
#  [1] 授業単元: 数値解析 
#  [2] 問題文(含コード&リンク): http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10745.txt 
#  ニュートン・ラフソン法についての問題です。教科書に例題として載っていたプログラミングに今回問題となっている方程式の当てはめ方がわかりません(おそらく初歩的な事だと思われます) 
#  
# 問題
# 適当な数字a,b,cを用いてax^3+bx^2-cx=0なる3次方程式をニュートン・ラフソン法を用いて解く為のプログラムを作成せよ。
# 
# 以下は教科書に載っていたx^3-1=0を解く為の参考とするプログラムです。これを今回の問題に当てはめて解くようです。
# 
# /* 《  ニュートン・ラフソン法の関数  》 */
# void S_NEWT(int *n,double *x0,double e,int NMAX,double (*FUNC)())
# /*      n      : スカラー   反復回数                (Out)
#         x0     : スカラー   初期値(解)              (In/Out)
#         e      : スカラー   収束判定定数            (In)
#         NMAX   : スカラー   最大反復回数            (In)
#         FUNC   :            ユーザー定義関数        (In)   */

'適当な数字a,b,cを用いてax^3+bx^2-cx=0なる3次方程式をニュートン・ラフソン法を用いて解く'(_最大反復回数,_収束判定定数,A,B,C,X0,X) :-
        Y0 is A * X0 ^ 3 + B * X0 ^ 2 + C * X0,        
        '3次曲線上の(X0,Y0)が接点となる直線がX座標と交差する(X1,0)は'(1,_最大反復回数,_収束判定定数,A,B,C,X0,Y0,X).

'3次曲線上の(X0,Y0)が接点となる直線がX座標と交差する(X1,0)は'(N,_最大反復回数,_,_,_,X,_,X) :- N > _最大反復回数,!.
'3次曲線上の(X0,Y0)が接点となる直線がX座標と交差する(X1,0)は'(_,_,_収束判定定数,_,_,_,X,_,X) :-
        Y =< _収束判定定数,!.        
'3次曲線上の(X0,Y0)が接点となる直線がX座標と交差する(X1,0)は'(N,_最大反復回数,_収束判定定数,A,B,C,X0,Y0,X) :-
        次のXはX軸との交点のX座標(A,B,C,X0,Y0,_X軸との交点のX座標,Y1),
        N2 is N + 1,
        '3次曲線上の(X0,Y0)が接点となる直線がX座標と交差する(X1,0)は'(N2,_最大反復回数,_収束判定定数,A,B,C,_X軸との交点のX座標,Y1,X).

次のXはX軸との交点のX座標(A,B,C,X0,Y0,_X軸との交点のX座標,Y1) :-
        _傾き is 3 * A * (X0 ^ 2) + 2 * B * X0 + C,
        _Y軸との交点のY座標 is Y0 - _傾き * X0,
        _X軸との交点のX座標 is (-1) * (_Y軸との交点のY座標) / _傾き,
        Y1 is A * _X軸との交点のX座標 ^ 3 + B * _X軸との交点のX座標 ^ 2 + C * _X軸との交点のX座標,!.