cmathを使用して1.47のasinを計算した後、ラジアンで測定された複素数の角度を返します。Pythonで複雑な値の角度をラジアンから角度に変換するには?
cmath.asin(1.47)
(1.5707963267948966 + 0.9350931316301407j)
私は度にこの値を変換することができる方法はありますか?複雑な値を計算することができないため、math.degreesは機能しません。
ありがとうございます!
cmathを使用して1.47のasinを計算した後、ラジアンで測定された複素数の角度を返します。Pythonで複雑な値の角度をラジアンから角度に変換するには?
cmath.asin(1.47)
(1.5707963267948966 + 0.9350931316301407j)
私は度にこの値を変換することができる方法はありますか?複雑な値を計算することができないため、math.degreesは機能しません。
ありがとうございます!
度数は複素数でほとんど意味をなさない。あなたがそれらを使用する必要がある場合でも、ちょうど実数と同じ数学の公式を使用します。
cmath.asin(1.47) * 180/math.pi
あなたは本当の一部に結果に
(90+53.576889894078214j)
注90度を取得します。
これの有用性は、文脈によって異なります。例えば、複素対数をとるとき、結果の虚数部分だけが角度であるため、度で表すことができます。実数部はパラメータのモジュラスの対数であり、角度とは関係ありません。その場合、上記の変換は虚数部に対してのみ使用してください。あなたのアークサインの例では、通常、実数部分のみが角度とみなされます。なぜなら、実数部分は単純な90
ですが、虚数部分は混乱してしまいます。
これで何をやっているのかわかりました。私たちはあなたが度を使うための最良の方法を決めるのを手助けすることができます。
math.degrees()を使用するには、まず複素数の実数部を取得する必要があります。
import cmath
import math
rad = cmath.asin(1.47)
math.degrees(rad.real)
お返事ありがとうございました!私がやっていることは次のように要約できます。 1)。宇宙起源の到来する電波に電離層干渉をシミュレートするための屈折率のKolmogorov Phase画面をシミュレートします。 2)。スネルの法則を用いて屈折率を屈折度に変換する。 n1sin(theta1)= n2sin(theta2) ここで、n1は1であり、theta1は90度であり、n2はコルモゴロフ位相スクリーンを介して与えられる屈折率である。 (n1sin(theta1))/ n2のアークサインをとることで、theta2を計算することができます。シータ2は、無線干渉計のシミュレーションのために度で入力する必要があります。 – JBorg
上記の計算の問題は、実際にはn2が1よりも小さく、つまり(n1sin(theta1))/ n2が常に1より大きくなることを意味します。この値が1より大きい場合、arcsinは常に負値。 もちろん、Kolmogorov Phase Screenの屈折率は誤っている可能性があります。その値は実際には1より大きくなる必要があります。しかし、干渉計シミュレーションソフトウェアのドキュメントには、程度のオフセットが複雑であることが示されています。 – JBorg
私は「arcsinは常に負の値ではなく複雑な値を返す」という意味です – JBorg