どうも、木村(@kimu3_slime)です。
今回は、Julia(SymPy)で複素数の絶対値、偏角、初等関数を計算する方法を紹介します。
準備
SymPyを使うので、持っていなければインストールしておきましょう。
1 2 | using Pkg Pkg.add("SymPy") |
準備として、以下のコードを実行しておきます。
1 | using SymPy |
複素数の絶対値、偏角
まず、SymPyにおいて虚数単位\(i)を「I」と表すことにします。
1 | const I=sympy.I |
簡単な計算をしてみると、
1 2 | I^2 1+I |
\[ \begin{aligned}-1\end{aligned} \]
\[ \begin{aligned}1+i\end{aligned} \]
虚数単位の2乗が-1になり、記号として扱えていることがわかります。
「sympy.re(z)」で実部、「sympy.im(z)」で虚部、「sympy.conjugate(z)」で共役な複素数が表示されます。
1 2 3 | sympy.re(1+I) sympy.im(1+I) sympy.conjugate(1+I) |
\[ \begin{aligned}1\end{aligned} \]
\[ \begin{aligned}1\end{aligned} \]
\[ \begin{aligned}1-i\end{aligned} \]
絶対値は「abs(z)」、偏角は「sympy.arg(z)」です。
1 2 | abs(1+I) sympy.arg(1+I) |
\[ \begin{aligned}\sqrt{2}\end{aligned} \]
\[ \begin{aligned}\frac{\pi}{4}\end{aligned} \]
極形式\(z= re^{i \theta}\)が成り立っているかどうかチェックしてみましょう。
1 | abs(1+I) * exp(I *sympy.arg(1+I)) |
\[ \begin{aligned}\sqrt{2} e^{\frac{i \pi}{4}}\end{aligned} \]
そのまま書いてみると、表示が単純になりません。「数式.as_real_imag()」で、複素数の数式の実部、虚部をまとめて表示させられます。
1 | (abs(1+I) * exp(I *sympy.arg(1+I))).as_real_imag() |
1 | (1, 1) |
こうして、実部1、虚部1の複素数を表していることがわかりました。
初等関数
複素変数の平方根やべき乗根、対数関数、べき乗関数について調べてみましょう。
1 | sqrt(I) |
\[ \begin{aligned}\sqrt{i}\end{aligned} \]
こちらもこれ以上に単純な表示になりません。実部や虚部を計算してみましょう。
1 | sqrt(I).as_real_imag() |
1 | (sqrt(2)/2, sqrt(2)/2) |
\(\sqrt{i} = \frac{1}{\sqrt{2}}(1+i)\)がわかりました。これは平方根の主値
\[ \begin{aligned}\sqrt{z} : = w = \sqrt{r} (\cos \frac{\theta}{2} +i \sin \frac{\theta}{2})\end{aligned} \]
として計算されていますね。
3乗根も代数的に求められます。
1 | (I^(1//3)).as_real_imag() |
1 | (sqrt(3)/2, 1/2) |
「log(z)」で、複素対数関数の主値
\[ \begin{aligned}\mathrm{Log\,} z := \log |z| + \theta i\end{aligned} \]
が求められます。
1 | log(I) |
\[ \begin{aligned}\frac{i \pi}{2}\end{aligned} \]
複素べき乗関数は、そのままだとなぜかうまく計算してくれません。
1 2 | I^(sympy.E) (I^(sympy.E)).as_real_imag() |
\[ \begin{aligned}i^e\end{aligned} \]
1 | (re(I^E), im(I^E)) |
べき乗関数の主値の定義
\[ \begin{aligned}a^{z}:= e^{(\log_e a) z}\end{aligned} \]
にしたがって計算できる関数を用意しましょう。
1 2 3 | function pow_c(a,z) return exp(log(a)*z) end |
1 2 | pow_c(I, sympy.E) (pow_c(I, sympy.E)).as_real_imag() |
\[ \begin{aligned}e^{\frac{e i \pi}{2}}\end{aligned} \]
1 | (cos(E*pi/2), sin(E*pi/2)) |
\(1^i\)や\(i^i\)も計算できます。
1 2 | pow_c(1,I) pow_c(I,I) |
\[ \begin{aligned}1\end{aligned} \]
\[ \begin{aligned}e^{- \frac{\pi}{2}}\end{aligned} \]
以上、Julia(SymPy)で複素数の絶対値、偏角、初等関数を計算する方法を紹介してきました。
木村すらいむ(@kimu3_slime)でした。ではでは。
コロナ社 (2020-03-26T00:00:01Z)
¥7,353 (コレクター商品)
こちらもおすすめ
オイラーの公式、極形式、ド・モアブルの定理とは:複素指数関数、三角関数の性質
複素関数の主値、多価関数・一価関数とは:平方根、ルートを例に