计算反正切函数
这段代码是在网上找到的,谁知道这段代码的原理是什么非常感谢!!
- Java code
public static double actTan(double radian) { // System.out.println("radian="+radian); double retval = 0d; if (Math.abs(radian) <= 1.0d) { retval = radian / (1.0D + 0.28d * sqr(radian)); } else { retval = -radian / (sqr(radian) + 0.28d); if (radian < -1.0d) { retval = retval - Math.PI / 2; } else { retval = retval + Math.PI / 2; } } return retval; }[解决办法]
看不懂。。。
似乎是这样的。
原理1:arctan(x)+arctan(1/x)=pi/2(x>0) arctan(x)+arctan(1/x)=-pi/2(x<0)
所以首先将值缩小到绝对值1之内;
原理2:泰勒展式。参看arctan(x)的泰勒展式;
舍去高次方的值。
以供参考。
[解决办法]
是在一定精度范围内的Pade分数数值逼近。
|x|<1:
atan(x) = x - (1/3)x^3 + (1/5)x^5 - ...
x / ( 1 + ax^2 ) = x - ax^3 + a^2x^3 - ...
那个0.28应该是根据pade分数逼近得来的,只是精度可能比较低,