このディレクトリの索引

http://pc12.2ch.net/test/read.cgi/tech/1250204272/443
#  [1] 授業単元:統計プログラミング 
#  [2] 問題文(含コード&リンク): 
#  1.適当な方程式 y = a x + b を定め、n 個の x に対してランダムな誤差を
#    持つ y のサンプルデータを生成するプログラムを作成せよ。 
#   出力形式は、例えば改行で区切られた1行ごとにスペース区切りで x, y の値を
#    標準出力に書き出す。 
#   ランダムな誤差に関しては、適当な範囲内の乱数を単純に各々の値に
#    適用すればよい。 
#   (本来は正規分布に従った乱数を用いる方が望ましい) 
#  2.前問で作成したプログラムの出力から、最小二乗法により、逆に a, b を
#    求めるプログラムを作成し、 
#   求めた値に関して、前問のプログラムで設定した a, b に対する考察をせよ。 
#  3.以上を二次方程式(y = a x^2 + b x + c)に対して繰り返し、
#    a, b, c に関して考察せよ。 

t695_1(_標本座標ならび) :-
    findall([_X座標,_Y座標],一次関数に誤差を生じさせる(40,-20,0.5,2,3,_X座標,_Y座標),_標本座標ならび).

一次関数に誤差を生じさせる(_標本数,_初期X座標,_サンプルX座標間隔,A,B,_X座標,_Y座標) :-
    乱数値とYの決定(_標本数限界,_サンプルX座標間隔,_初期X座標,_X座標,R),
    _誤差係数 is (1 - (R - 0.5) ^ 2),
    _Y座標 is ( A * _X座標 + B ) * _誤差係数.

乱数値とYの決定(_標本数限界,_サンプルX座標間隔,_初期X座標,_X座標,_乱数値) :-
    A is time,
    B is A mod 65535,
    乱数値とYの決定(1,_標本数限界,_サンプルX座標間隔,_初期X座標,_X座標,16087,B,65535,Y,_乱数値).

乱数値とYの決定(K,Max,_,_,_,_,_,_,_,_) :- K > Max,!,fail.
乱数値とYの決定(K,Max,_サンプルX座標間隔,_X座標,_X座標,A,N,_法,N,_乱数値) :-
    _乱数値 is N / _法.
乱数値とYの決定(K,Max,_サンプルX座標間隔,_X座標1,_X座標,A,N,_法,Y,_乱数値) :-
    乗算合同法演算(A,N,_法,M),
    _X座標2 is _X座標 + _サンプルX座標間隔,
    K2 is K + 1,
    乱数値とYの決定(K2,Max,_サンプルX座標間隔,_X座標2,_X座標,A,M,_法,Y,_乱数値).

乗算合同法演算(A,N,_法,M) :-
    M is (A * N) mod _法.