-3

我正在使用天文方程在 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 也给了我一些准确的错误。

我正在使用度数。

谢谢

4

2 回答 2

7

这些数学方法采用弧度,而不是度数。

我想这RA=312.5175被解释为312.5175 % (2*Pi)弧度。

于 2013-09-09T13:14:25.430 回答
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
于 2013-09-09T13:43:12.763 回答