このディレクトリの索引

% 以下のサイトは # # 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). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/tech/1381909900/89 # # [1] 授業単元: 現象数理 # [2] 問題文(含コード&リンク): # f(x) = cosx - x^2 = 0 の近似解を求めるプログラムを作り、以下の問題を解け。 # なお、二分法を用いること。 # 
a = 0, b = 1 からa, b, c の値を求める。 # 
|b - a| < 10^(−6) の条件を満たすまで実行し、 # もしくはこの条件を満たさない場合は30 回実行し、各回のa, b, cの値をまとめる。 # f(_x,_y) :- cos(_x) - _x ^ 2. '二分法を用いて、 f(x)=cosx - x^2の近似解を求めよ。'(X) :- length(Ln,30), '二分法を用いて、 f(x)=cosx - x^2の近似解を求めよ。'(Ln,0,1,X). '二分法を用いて、 f(x)=cosx - x^2の近似解を求めよ。'(Ln,N1,N2,X) :- f(N1,Y1), f(N2,Y2), N is (N1 + N2) / 2, f(N,Y), '二分法を用いて、 f(x)=cosx - x^2の近似解を求めよ。'(Ln,N1,N2,N,Y1,Y2,Y,X). '二分法を用いて、 f(x)=cosx - x^2の近似解を求めよ。'([],_,_,X,_,_,Y,X) :- !. '二分法を用いて、 f(x)=cosx - x^2の近似解を求めよ。'(_,_,_,X,_,_,Y,X) :- 10 ^ -6 > abs(Y). '二分法を用いて、 f(x)=cosx - x^2の近似解を求めよ。'([_|Ln],N1,N2,N,Y1,Y2,Y,X) :- abs(Y1) < abs(Y2), '二分法を用いて、 f(x)=cosx - x^2の近似解を求めよ。'(Ln,N1,N3,X),!. '二分法を用いて、 f(x)=cosx - x^2の近似解を求めよ。'([_|Ln],N1,N2,N,Y1,Y2,Y,X) :- abs(Y1) > abs(Y2), '二分法を用いて、 f(x)=cosx - x^2の近似解を求めよ。'(Ln,N3,N2,X). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/tech/1357748713/174 # # [1]授業単元:数値シュミレーション演習 # [2]問題文:逐次二分法を用いて、 f(x)=exp(x)-3xの根を求めよ。 # x1=0,x2=1とおいて計算を始める。許容誤差は10^-5、 #       反復回数は30回とする。 #       ・#include "stdafx.h" #        #include <stdio.h> #        #include <math.h>)として始めること。 # [3]環境 # [3.1]OS:windous7 # [3.2]コンパイラ名とバージョン:Visual Studio2010 # [3.3]言語:C++ # [4]期限:1月27日 # [5]その他:プログラミングは全くの素人で、申し訳ありませんがよろしくお願いします。 # # f(_x,_y) :- _y is exp(_x)- 3 * _x. '逐次二分法を用いて、 f(x)=exp(x)-3xの根を求めよ。'(X) :- length(Ln,30), '逐次二分法を用いて、 f(x)=exp(x)-3xの根を求めよ。'(Ln,0,1,X). '逐次二分法を用いて、 f(x)=exp(x)-3xの根を求めよ。'(Ln,N1,N2,X) :- f(N1,Y1), f(N2,Y2), N is (N1 + N2) / 2, f(N,Y), '逐次二分法を用いて、 f(x)=exp(x)-3xの根を求めよ。'(Ln,N1,N2,N,Y1,Y2,Y,X). '逐次二分法を用いて、 f(x)=exp(x)-3xの根を求めよ。'([],_,_,X,_,_,Y,X) :- !. '逐次二分法を用いて、 f(x)=exp(x)-3xの根を求めよ。'(_,_,_,X,_,_,Y,X) :- 0.00001 > abs(Y). '逐次二分法を用いて、 f(x)=exp(x)-3xの根を求めよ。'([_|Ln],N1,N2,N,Y1,Y2,Y,X) :- abs(Y1) < abs(Y2), '逐次二分法を用いて、 f(x)=exp(x)-3xの根を求めよ。'(Ln,N1,N3,X),!. '逐次二分法を用いて、 f(x)=exp(x)-3xの根を求めよ。'([_|Ln],N1,N2,N,Y1,Y2,Y,X) :- abs(Y1) > abs(Y2), '逐次二分法を用いて、 f(x)=exp(x)-3xの根を求めよ。'(Ln,N3,N2,X). % 以下のサイトは # # 与えられた数 x の3乗根を返す cube_root(x)とこれを呼び出して、1から10までの # 3乗根を表示するプログラムを作成せよ # '与えられた数 x の3乗根を返す cube_root(x)とこれを呼び出して、1から10までの3乗根を表示する' :- between(1,10,_x), cube_root(_x,_3乗根), writef('%t: ',[_x]), format('~6f\n',[_3乗根]), _x = 10. cube_root(_x,_3乗根) :- _x_2 is _x / 2, 二分法で3乗根を収束させる(100,_x,_x,_x_2,_3乗根). 二分法で3乗根を収束させる(0,_値,_3乗根,_,_3乗根) :- !. 二分法で3乗根を収束させる(N,_値,_値_1,_値_2,_3乗根) :- _値 >= _値_2 * _値_2 * _値_2, _値_3 is (_値_1 + _値_2) / 2, N_1 is N - 1, 二分法で3乗根を収束させる(N_1,_値,_値_1,_値_3,_3乗根). 二分法で3乗根を収束させる(N,_値,_値_1,_値_2,_3乗根) :- _値 < _値_2 * _値_2 * _値_2, _値_3 is _値_2 / 2, N_1 is N - 1, 二分法で3乗根を収束させる(N_1,_値,_値_2,_値_3,_3乗根). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/tech/1322562648/790 # # 【質問テンプレ】 # [1] 授業単元: C言語アルゴリズム # [2] 問題文(含コード&リンク): # # 【1】.0度<=x<=90度の範囲でf(x)=sin(x)-cos(x)=0の解を求めよ(許容誤差は各自入力) # ヒント:講義中に解説した例:2分法による方程式解法のax+bを上式にする(a,bの読み込みも不要) # 例のコードは、http://ime.nu/codepad.org/ImpygN9S です。 # ヒント2:sinやcosの括弧内の単位はradianであることに注意(pi*x/180.0) # 【2】.0度<=x<=90度の範囲でx,sin(x),cos(x),sin(x)-cos(x)の値を5度刻みで"kadai2.ans"に出力、 # ftpでgetしてExcelの散布図を利用してグラフ化し、【1】の解が正しいか確認せよ。 # 【3】.ax+bとcx+dの交点のx座標を求めよ。(a,b,c,d,許容誤差は自由) # ヒント1:ax+bとcx+dの差が0の所が交点 # f(_x,_y) :- _radian is pi * _x / 180, _y is sin(_radian) - cos(_radian). '0度<=x<=90度の範囲でf(x)=sin(x)-cos(x)=0の解を求めよ(許容誤差は各自入力) '(_x) :- f(0,_y1), f(45,_y2), f(90,_y3), '0度<=x<=90度の範囲でf(x)=sin(x)-cos(x)=0の解を求めよ(許容誤差は各自入力) '(0,45,90,_y1,_y2,_y3,_x). '0度<=x<=90度の範囲でf(x)=sin(x)-cos(x)=0の解を求めよ(許容誤差は各自入力) '(_,_x,_,_,_y2,_,_x) :- _y2 < 0.001,!. '0度<=x<=90度の範囲でf(x)=sin(x)-cos(x)=0の解を求めよ(許容誤差は各自入力) '(_x1,_x2,_x3,_y1,_y2,_y3,_x) :- abs(_y1-_y2) < abs(_y3-_y2), _x2_2 is (_x1 + _x2) / 2, f(_x2_2,_y2_2), '0度<=x<=90度の範囲でf(x)=sin(x)-cos(x)=0の解を求めよ(許容誤差は各自入力) '(_x1,_x2_2,_x2,_y1,_y2_2,_y2,_x). '0度<=x<=90度の範囲でf(x)=sin(x)-cos(x)=0の解を求めよ(許容誤差は各自入力) '(_x1,_x2,_x3,_y1,_y2,_y3,_x) :- abs(_y1-_y2) > abs(_y3-_y2), _x2_2 is (_x3 + _x2) / 2, f(_x2_2,_y2_2), '0度<=x<=90度の範囲でf(x)=sin(x)-cos(x)=0の解を求めよ(許容誤差は各自入力) '(_x2,_x2_2,_x3,_y2,_y2_2,_y3,_x). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/tech/1289913298/314 # # [1] 授業単元:プログラミング演習 # [2] 問題文(含コード&リンク) # 2分法により2の平方根を計算して表示するプログラムを作れ。 # 解の存在範囲|xb-xa|が矛め決めた値より小さくなったら計算を停止(収束判定)するようにせよ。 # *注意 # (1)f(xa)とf(xb)の符号が反対であるか否かの判定法を考えよ。 # (2)f(xa)とf(xb)が共に同符号になるようなxa,xbが入力された場合に対処すること。 # 2の平方根を2分法により計算して表示する :- 2分法により平方根を計算して(0,2,2,2,_平方根), write_formatted('2分法によって得られた2の平方根は %t です。\n',[_平方根]). 2分法により平方根を計算して(A,B,C,_値,_平方根) :- 0.00000001 > abs(A-C),!. 2分法により平方根を計算して(A,B,C,_値,_平方根) :- _値 < B * B, D is (A + B) / 2, 2分法により平方根を計算して(A,D,B,_値,_平方根),!. 2分法により平方根を計算して(A,B,C,_値,_平方根) :- _値 > B * B, D is (B + C) / 2, 2分法により平方根を計算して(B,D,C,_値,_平方根),!. % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/tech/1284632294/947 # # [1] 授業単元:C言語基礎実習 # [2] 問題文(含コード&リンク): 入力された実数の平方根を"二分法"で求めて表示するプログラムを作成すること。 # 精度は小数点第六位まで。ただし、入力された値が1未満の場合は何もしないこと。 # # '入力された実数の平方根を"二分法"で求めて表示する。精度は小数点第六位まで。ただし、入力された値が1未満の場合は何もしないこと。' :- 実数を得る(_実数), _実数 > 1.0, 二分法による平方根の計算。精度は小数点第六位まで。(_実数,_平方根), write_formatted('%t の平方根は %t です\n',[_実数,_平方根]). 二分法による平方根の計算。精度は小数点第六位まで。(X,Y) :- S1 is X / 2, 精度は小数点第N位まで(6,V), 二分法による平方根の計算。精度は小数点第六位まで。(1,X,S1,V,Y). 二分法による平方根の計算。精度は小数点第六位まで。(N,X,S1,V,Y) :- Y is X / 2 + S1, V > abs(Y - S1),!. 二分法による平方根の計算。精度は小数点第六位まで。(N1,X,S1,V,Y) :- S2 is S / 2 + S1, N2 is N1 + 1, 二分法による平方根の計算。精度は小数点第六位まで。(N2,X,S2,V,Y). 精度は小数点第N位まで(N,V) :- V is 0.1 ^ N,!. % 以下のサイトは # 出典:: http://pc12.2ch.net/test/read.cgi/tech/1200175247/863 # # 【質問テンプレ】 # [1] 授業単元:プログラミング # [2] 問題文: # 二分法による平方根の計算。但し、求めたい平方根(自 # 然数)を入力できるようにした上で、プログラムの実行時 # の計算回数を計算・表示できるように、プログラムを作成 # すること。 # 二分法による平方根の計算(X,Y) :- S1 is X / 2, 二分法による平方根の計算(1,X,S1,Y). 二分法による平方根の計算(N,X,S1,Y) :- Y is X / 2 + S1, write_formattd('%t %10.4f\n',[N,Y]), 0.0001 > abs(Y - S1),!. 二分法による平方根の計算(N1,X,S1,Y) :- S2 is X / 2 + S1, N2 is N1 + 1, 二分法による平方根の計算(N2,X,S2,Y). % 以下のサイトは # 出典:: http://pc12.2ch.net/test/read.cgi/tech/1258158172/858 # # ../test/read.cgi/tech/1258158172/857 # # [1] 授業単元: forとかwhileとか # [2] 問題文(含コード&リンク): # ycm2の面積を有する円の半径xを,2分法を用いて近似解を求める. # (a) 区間を10分割してどの区間に解があるかを求めるプログラムを作成しなさい. # (b) 解がある区間が見つかったら,さらにその区間を10分割してどの区間に解があるかを求めるという作業を5回繰り返すプログラムを作成しなさい. # # (補足)2分法 # 2分法とは,中間値の定理に根拠をおいて,数式的に解くことのできない方程式の解を求める方法である. # 下図に示すように,xの値を少しずつ変化させた場合に,隣り合う二つのf(x)の値の符号が異なる区間が存在すると,その方程式の解はその区間内に存在する. # 区間を少しずつ狭めていくことにより,その方程式の近似解を求めることができる.方程式の近時解法として代表的なものには2分法の他に,ニュートン法もある. # ycm2の面積を有する円の半径xを,2分法を用いて近似解を求める(Y,X) :- Z is Y / 2, ycm2の面積を有する円の半径xを,2分法を用いて近似解を求める(Y,0,Z,Y,X). ycm2の面積を有する円の半径xを,2分法を用いて近似解を求める(Y,P,X,A,X) :- abs((pi * X * X) - Y) < 0.01,!. ycm2の面積を有する円の半径xを,2分法を用いて近似解を求める(Y,P,Z,A,X) :- (pi * Z * Z) < Y, Z2 is (P + Z) / 2, ycm2の面積を有する円の半径xを,2分法を用いて近似解を求める(Y,P,Z2,Z,X),!. ycm2の面積を有する円の半径xを,2分法を用いて近似解を求める(Y,P,Z,A,X) :- Z2 is (A + Z) / 2, ycm2の面積を有する円の半径xを,2分法を用いて近似解を求める(Y,Z,Z2,A,X). % 以下のサイトは # 出典:: 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).