3

一部の関数をExcelスプレッドシートからPythonに変換しています。numpyのドキュメントによるとarctan2であるatan2を使用する必要があります: arctan2。問題は、2つの結果が近くないことです。

oc = 23.4384863405
sal = 89.7814630647
sra = np.arctan2(np.cos(np.deg2rad(sal)),
         np.cos(np.deg2rad(oc))*np.sin(np.deg2rad(sal)))
results: Excel = 1.566714757 Numpy = 0.00415720646  ??

正しいので、Excelの結果を信頼します。間違っているのはしつこいです。

現在、arctan2を正しく使用していないか、atan2がnumpyでarctan2でないか、numpyにバグがあるか、ここで完全に失われています。

私はPythonバージョン2.7.2とNumpy1.6.2を使用しています

何かアイデアはありますか?ありがとう

4

1 に答える 1

14

Excelドキュメントから:

ATAN2関数の構文は次のとおりです。

ATAN2(x座標、y座標)

numpyドキュメントから:

numpy.arctan2(x1、x2 [、out])

象限を正しく選択するx1/x2の要素ごとのアークタンジェント。

象限(つまり、分岐)は、arctan2(x1、x2)が、原点で終了して点(1,0)を通過する光線と、原点で終了して通過する光線との間のラジアン単位の符号付き角度になるように選択されます。ポイント(x2、x1)を通ります。(役割の反転に注意してください。「y座標」が最初の関数パラメーターであり、「x座標」が2番目です。)

彼らは反対の順序で議論をします。したがって:

In [31]: arctan2(cos(deg2rad(sal)), cos(deg2rad(oc))*sin(deg2rad(sal)))
Out[31]: 0.0041572064598812417

In [32]: arctan2(cos(deg2rad(oc))*sin(deg2rad(sal)), cos(deg2rad(sal)))
Out[32]: 1.5666391203350154
于 2012-11-09T13:18:06.353 に答える