このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 129代目 #448 # [1] 授業単元:数値情報解析 # [2] 問題文:ニュートン法により代数方程式を解くプログラムを作りなさい。 #       適当な初期値を自分で設定し、3つの真解すべてを求めなさい。 #       ただし、結果画面には(1)収束解(2)初期値(3)反復回数が表示されて #       いること。 #       このとき、1回の実行で3つの真解すべてを求める必要はない。 #       初期値を与え直しながら実行した結果画面が3枚示されていれば #       よいものとする。 # ・ 解くべき代数方程式 : x^3 - 6x^2 + 7x +2 = 0 # ・収束条件 : ε < 10^-10 #       ・微分は自分で計算した結果(3x^2 - 12x + 7 = 0)をソースファイルに #        直接入力してよいものとする。 f(X,Y) :- Y is X^3 - 6 * X^2 + 7 * X + 2. df(X,Y) :- Y is 3 * X^2 - 12 * X + 7. t545 :- write('初期値を入れてください : '), get_line(Line), atom_to_term(Line,_初期値,_), ニュートン法(_初期値,_反復回数,_収束解), writef('(1) 収束解 = %w\n',[_収束解]), writef('(2) 初期値 = %w\n',[_初期値]), writef('(3) 反復回数 = %w\n',[_反復回数]),!. t545 :- write('収束しませんでした\n'). ニュートン法(_初期値,_反復回数,_収束解) :- f(_初期値,Y1), df(_初期値,Y2), B is _初期値 - Y1 / Y2, ニュートン法(1,_反復回数,1000,B,_収束解). ニュートン法(M,_,N,_,_) :- M > N,!,fail. ニュートン法(M,M,N,X,X) :- Y is abs(X), Y < 1.0e-09,!. ニュートン法(M,MX,N,A,X) :- f(A,Y1), df(A,Y2), B is A - Y1 / Y2, M2 is M + 1, ニュートン法(M2,MX,N,B,X).