このディレクトリの索引
#  
#  sinの近似解
#  
#  初出 http://nojiriko.asia/prolog/t615.html
#  

sinの近似解(_ラジアン角度,X) :-
        sin_degree(1,20,_ラジアン角度,1.0,0.0,X).        

sin_radian(_ラジアン角度,X) :-
        sin_degree(1,20,_ラジアン角度,1.0,0.0,X).

sin_degree(_角度,X) :-
        R is (_角度 / 180) * 3.14159,
        sin_degree(1,20,R,1.0,0.0,X).

sin_degree(M,N,_,_,X,X) :- M > N,!.
sin_degree(M,N,R,K,Y,X) :-
        sin_degree(M,R,1,U),
        Y2 is Y + U * K,
        K2 is K * (-1),
        M2 is M + 2,
        sin_degree(M2,N,R,K2,Y2,X).

sin_degree(0,R,X,X) :- !.
sin_degree(N,R,Y,X) :-
        Y2 is (Y * R) / N,
        N2 is N - 1,
        sin_degree(N2,R,Y2,X).

cos_radian(_ラジアン角度,X) :-
        sin_radian(_ラジアン角度,Y),
        X is sqrt(1 - Y * Y).

cos_degree(_角度,X) :-
        R is (_角度 / 180) * 3.14159,
        cos_radian(R,X).