このディレクトリの索引

http://pc12.2ch.net/test/read.cgi/tech/1255709298/38
# [1] 授業単元: 数値計測演習
# [2] 問題文(含コード&リンク):
# http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9989.txt
#
# 問題文
# fx = exp(x)- 3x において 区間{0,1}の根を二分法で求めよ
# ただし、収束判定条件には|b-a|εを用いて ε=10^-5
# また根の収束の様子を見るために反復ごとにc、fc の値の変化を調べよ
# 

func(X,FX) :- FX is exp(X)- 3 * X.

'fx = exp(x)- 3x において 区間{0,1}の根を二分法で求めよ
ただし、収束判定条件には|b-a|εを用いて ε=10^-5
また根の収束の様子を見るために反復ごとにc、fc の値の変化を調べよ'(X) :-
        二分法(0.0,1.0,X).

二分法(S,E,X) :-
        H is ( S + E) / 2,
        func(S,FX1),
        func(H,FX2),
        func(E,FX3),
        二分法(S,H,E,FX1,FX2,FX3,X).

二分法(S,X,E,FX1,FX2,FX3,X) :-
        FX2 < 1.0e-05,!.
二分法(S,H,E,FX1,FX2,FX3,X) :-
        こちらの区間に解はある(FX1,FX2),!,
        二分法を前半区間に適用(S,H,H2,FX1,FX2,FX4,X).
二分法(S,H,E,FX1,FX2,FX3,X) :-
        こちらの区間に解はある(FX2,FX3),!,
        二分法を後半区間に適用(H,E,H2,FX2,FX3,FX4,X).

こちらの区間に解はある(A,B) :-
        A1 is abs(A),
        B1 is abs(B),
        こちらの区間に解はある(A,B,A1,B1).

こちらの区間に解はある(A,A,B,B1) :- \+(B=B1).
こちらの区間に解はある(A,A1,B,B) :- \+(A=A1).

二分法を前半区間に適用(S,H,H2,FX1,FX2,FX4,X) :-
        H2 is ( S + H ) / 2,
        func(H2,FX4),
        二分法(S,H2,H,FX1,FX4,FX2,X).

二分法を後半区間に適用(H,E,H2,FX2,FX3,FX4,X) :-
        H2 is ( H + E ) / 2,
        func(H2,FX4),
        二分法(H,H2,E,FX2,FX4,FX3,X).