Perl:将公式转换为Perl代码,它应该是什么样子?

3

我有以下公式:

Formula

我试图将它转换成Perl代码,看起来像这样:
$stuck = (360 / $pi2);
$stuck2 = sin($stuck * $Eccent * $M);

其中$Eccent = 0.016713,$M = 202.065469250756,$pi2 = 3.1415927

我得到了-0.542630163200668

答案应该是:-0.719461

如果能帮忙解决问题将不胜感激,因为我不知道它应该是什么样子!


4
那应该是说 (360/pi) * e * sin M 吗?因为你的 Perl 代码并不是这样写的,它是这样写的: sin( (360/pi) * e * M) - TLP
为什么存储π的变量被命名为“$pi2”?我本来以为它应该包含2π。 - ikegami
因为$pi被使用了更多的数字。这本书只要求使用pi的前8位数字。因此,$pi2是$pi的一个较短版本。这里只是在书中举例演示,而不是生产代码。 - Misfit
1个回答

3
这个公式只需要对M取正弦,没有别的要求。
use Math::Trig qw( pi );

my $Ec = 360 / pi * $e * sin($M);

有一个问题:你的M的值是以度为单位,而sin函数需要弧度单位。

use Math::Trig qw( pi deg2rad );

my $Ec = 360 / pi * $e * sin(deg2rad($M));

这相当于

use Math::Trig qw( deg2rad rad2deg );

my $Ec = rad2deg(2 * $e * sin(deg2rad($M)));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接