Цитата:
Сообщение от 11Angelav
arcsin(X) = arctan(X/sqrt(1-sqr(X)));
arccos(X) = arctan(sqrt(1-sqr(X))/X);
Не забудьте проверку X на 0.
|
И на 1 при таком задании арксинуса.
В моем модуле дополнительных функций, содержащем много чего всякого-разного, эти оформлены так:
Код:
function ArcSin(X:Extended):Extended;
BEGIN
IF ROUND(X*10000000)=10000000 THEN ArcSin:=Pi/2 ELSE
IF ROUND(X*10000000)=-10000000 THEN ArcSin:=-Pi/2 ELSE
ArcSin:=ArcTan(X/SQRT(1-X*X));
END;
function ArcCos(X:Extended):Extended;
BEGIN
IF ROUND(X*10000000)=10000000 THEN ArcCos:=0 ELSE
IF ROUND(X*10000000)=-10000000 THEN ArcCos:=Pi ELSE
ArcCos:=(Pi/2)-ArcTan(X/SQRT(1-X*X));
END;
И кстати, Анжелика, арккосинус так, как у Вас, задавать нельзя, и вот почему. Область изменения этой функции лежит в диапазоне от 0 до
π, в то время как область изменения арктангенса - от
-π/2 до
π/2. Попробуйте, например, подставить в Вашу формулу Х=-1. Тогда справа получится 0, а должно быть
π.