このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1286978599/228
#  【質問テンプレ】  
#  [1] 授業単元:  
#  [2] 問題文(含コード&リンク):  
#  
# 角度thetaを媒介変数として,(x,y)を計算してください.
# thetaは0度から360度まで変化させた場合の(x,y)を出力せよ。
# 
# x=acosθ 
# y=bsin(θ+α)
# 
# ともうひとつ。
# 
# 「個体群動態で N(t+dt) - N(t) = (r - hN(t)) N(t) として,rを増 殖率,hをこみあいの効果とする。
# 適当な,N(0) r, h を与えて, N(t) の変化を示しなさい。
# 

'「個体群動態で N(t+dt) - N(t) = (r - hN(t)) N(t) として,rを増殖率,hをこみあいの効果とする。適当な,N(0) r, h を与えて,N(t) の変化を示しなさい。' :-
        '適当なN(0),r,h,tmax'(_N_0,_r,_h,_tmax),
        'N(t) の変化'(_N,0,_tmax,_r,_h,X),
        write_formatted('(t:%t) : (N(t):%t)\n',[_N,X]),

'N(t) の変化'(_N,_t1,_tmax,_r,_h,_N) :- _t1 < _tmax.
'N(t) の変化'(_N1,_t1,_tmax,_r,_h,X) :-
        _t1 < tmax,
        _N2 is _N1 + ((_r - _h * _N1) * _N1),
        _t2 is _t1 + 1,
        'N(t) の変化'(_N2,_t2,_tmax,_r,_h,X).


'適当なN(0),r,h,tmax'(_N_0,_r,_h,_tmax) :-
        write('N(0)の値を入力してください : '),
        数値入力(_N_0),
        write('増殖率 _r を入力してください : '),
        数値入力(_r),
        write('こみあいの効果 _h を入力してください : '),
        数値入力(_h),
        write('時間 _t の max値 を入力したください : '),
        数値入力(_tmax),!.

数値入力(I) :-
        get_line(Line),
        数値入力診断(Line,I),!.
数値入力(I) :- 数値入力(I).

数値入力診断(Line,I) :- atom_to_term(Line,I,_),number(I),!.
数値入力診断(Line,I) :-
        write_formatted('入力された %t から適切な数が得られませんでした\n再入力をお願いします\n',[Line]),fail.