Использование тригонометрических функций в eclipse clp
Я новичок в затмении CLP и хочу реализовать предикат, который получает все углы, эквивалентные определенной синусоидальной функции, что-то вроде
:- lib(ic).
solve(L) :-
L = [X,Y,Z],
L::[-180..180],
cos(X) #= sin(Y) + sin(Z),
labeling(L).
Я знаю, что эта схема, вероятно, работает для целочисленных значений переменных; поэтому мне нужно альтернативное решение, которое также использует CLP.
2 ответа
Решение
Хорошо, я понял это,
:-lib(ic).
solve(V):-
V = [X,Y,Z],
V::[0 .. 180],
cos(X*pi/180) $= sin(Y*pi/180) + sin(Z*pi/180),
labeling(V).
Примечание: предикаты cos и sin работают с радианами
Аргументы тригонометрических функций приведены в радианах.
Используйте формулу Rad = Degree * pi / 180
преобразовать.