このディレクトリの索引

# # fx = exp(x)- 3x において、区間{0,1}の根を二分法で求める。 # ただし、収束判定条件には|b-a|εを用いて ε=10^-5 # func(X,FX) :- FX is exp(X) - 3 * X. 収束判定条件(FX) :- abs(FX) < 1.0e-05. 'fx = exp(x)- 3x において、区間{0,1}の根を二分法で求める。ただし、収束判定条件には|b-a|ε を用いてε=10^-5'(X) :- 二分法(0.0,1.0,X). 二分法(S,E,X) :- 二分法の初期値(S,H,E,FX1,FX2,FX3), 二分法(S,H,E,FX1,FX2,FX3,X). 二分法の初期値(S,H,E,FX1,FX2,FX3) :- func(S,FX1), func(E,FX3), 二分して関数に適用する(S,E,H,FX2). 二分して関数に適用する(S,E,H,FX) :- H is ( S + E ) / 2, func(H,FX). 二分法(S,X,E,FX1,FX2,FX3,X) :- 収束判定条件(FX3),!. 二分法(S,H,E,FX1,FX2,FX3,X) :- '前半区間、後半区間の解のある方に二分法を適用する'(S,H,E,FX1,FX2,FX3,X). '前半区間、後半区間の解のある方に二分法を適用する'(S,H,E,FX1,FX2,FX3,X) :- 二分法を前半区間に適用(S,H,FX1,FX2,FX4,X). '前半区間、後半区間の解のある方に二分法を適用する'(S,H,E,FX1,FX2,FX3,X) :- 二分法を後半区間に適用(H,E,FX2,FX3,FX4,X). 二分法を前半区間に適用(S,H,FX1,FX2,FX4,X) :- こちらの区間に解はある(FX1,FX2), 二分法を適用する(S,H,FX1,FX2,FX4,X). 二分法を後半区間に適用(H,E,FX2,FX3,FX4,X) :- こちらの区間に解はある(FX2,FX3), 二分法を適用する(H,E,FX2,FX3,FX4,X). 二分法を適用する(S,H,FX1,FX2,FX4,X) :- 二分して関数に適用する(S,H,H2,FX4), 二分法(S,H2,H,FX1,FX4,FX2,X). こちらの区間に解はある(A,B) :- ふたつの値の絶対値が異なれば0を跨ぐことになるからこちらの区間に解がある(A,B). ふたつの値の絶対値が異なれば0を跨ぐことになるからこちらの区間に解がある(A,B) :- 絶対値が異なる(A,B). 絶対値が異なる(A,B) :- 'AとBの絶対値を取る'(A,B,A1,B1), 絶対値が異なる(A,A1,B,B1). 'AとBの絶対値を取る'(A,B,A1,B1) :- A1 is abs(A), B1 is abs(B). 絶対値が異なる(A,A,B,B1) :- 'BとB1が異なる'(B,B1). 絶対値が異なる(A,A1,B,B) :- 'AとA1が異なる'(A,A1). 'BとB1が異なる'(B,B1) :- \+(B=B1). 'AとA1が異なる'(A,A1) :- \+(A=A1).