我在java中使用天文方程。我需要用sin和cos函数做一些编程。我得到错误的值和舍入错误导致结果出现问题。
一个具体的例子:
Dec=Math.atan(Math.tan(Eps)*Math.sin(RA));
表示值,使用度,Eps = 23.440& RA = 312.5175,我应该得到答案-17.7223 但是,相反,我得到
Dec=0.6587619787704015
有人可以为这些数学函数建议一个变通方法或一个好的数学库吗?我应该在C中这样做并传递结果吗?实际上,C也给我一些准确的错误。
我正在使用学位。
由于
答案 0 :(得分:7)
这些数学方法需要弧度,而不是度数。
我猜RA=312.5175
被视为312.5175 % (2*Pi)
弧度。
答案 1 :(得分:2)
Java和许多其他语言中的三角函数基于弧度而不是度。你可能知道
180 degrees = PI = 3.1415... radians.
因此,如果我们将所有方面除以180,我们将得到
1 degree = (3.1415.../180) radians
^^^^^^^^
如果我们将它除以3.1415 ......我们将得到
(180/3.1415...) degrees = 1 radian
^^^^^^^^
但你不必自己做计算。您可以使用内置方法
Math.toRadians(degrees)
Math.toDegrees(radians)
像
double Eps = 23.440;
double RA = 312.5175;
double EpsRad = Math.toRadians(Eps);
double RARad = Math.toRadians(RA);
double tmp1 = Math.tan(EpsRad);
double tmp2 = Math.sin(RARad);
double result = Math.atan(tmp1 * tmp2);
System.out.println("in radians: " + result); //-0.30931302106018527
System.out.println("in degrees: " + Math.toDegrees(result));//-17.722330655189765
或内联他们
System.out.println(Math.toDegrees(Math.atan(Math.tan(Math
.toRadians(Eps))) * Math.sin(Math.toRadians(RA))));//-17.722330655189765