Julia(SymPy)で三角関数の加法定理、倍角の公式、和積の公式、合成を求める方法

どうも、木村(@kimu3_slime)です。

今回は、Julia(SymPy)で三角関数の加法定理、倍角の公式、和積の公式、合成を求める方法を紹介します。

 

準備

SymPyを使うので、持っていなければインストールしておきましょう。

準備として、以下のコードを実行しておきます。

 

三角関数の公式を求める方法

まず、変数記号として、\(\theta, \alpha ,\beta\)を用意しましょう。

Jupyter notebookでは、「\theta」と打ってtabキーを押すことで、ギリシャ文字を変換することができます。\(\alpha,\beta\)は「\alpha, \beta」です(TeX記法)。

 

加法定理

まず、加法定理を求めてみましょう。「expand(三角関数, trig= true)」で、三角関数に対応した展開ができます。

\[\sin{\left(α \right)} \cos{\left(β \right)} + \sin{\left(β \right)} \cos{\left(α \right)}\]

\[- \sin{\left(α \right)} \sin{\left(β \right)} + \cos{\left(α \right)} \cos{\left(β \right)}\]

\[\frac{\tan{\left(α \right)}}{- \tan{\left(α \right)} \tan{\left(β \right)} + 1}\\ + \frac{\tan{\left(β \right)}}{- \tan{\left(α \right)} \tan{\left(β \right)} + 1}\]

 

タンジェントの公式は、分母が共通しているのにまとめてくれないのは、微妙な仕様ですね。「simplify(数式, trig= true)」で、三角関数に適した単純化を試みます。

\[- \frac{\tan{\left(α \right)} + \tan{\left(β \right)}}{\tan{\left(α \right)} \tan{\left(β \right)} – 1}\]

 

倍角、半角の公式

2倍角の公式、3倍角の公式も簡単に求められます。

\[2 \sin{\left(θ \right)} \cos{\left(θ \right)}\]

\[2 \cos^{2}{\left(θ \right)} – 1\]

\[\frac{2 \tan{\left(θ \right)}}{1 – \tan^{2}{\left(θ \right)}}\]

\[- 4 \sin^{3}{\left(θ \right)} + 3 \sin{\left(θ \right)}\]

\[4 \cos^{3}{\left(θ \right)} – 3 \cos{\left(θ \right)}\]

\[- \frac{\tan^{3}{\left(θ \right)}}{1 – 3 \tan^{2}{\left(θ \right)}}\\ + \frac{3 \tan{\left(θ \right)}}{1 – 3 \tan^{2}{\left(θ \right)}}\]

 

同様の方法で半角の公式を求められないか試しましたが、うまくいきませんでした。

\[\sin{\left(\frac{θ}{2} \right)}\]

 

半角の公式は、コサインの2倍角の公式において、\( \theta\)を\(\frac{\theta}{2}\)に置き換えることで得られます。これをプログラム上で行ってみましょう。

「Eq(左辺,右辺)」で等式を作り、「数式.subs(変数,代入する数)」で代入します。

\[\cos{\left(2 θ \right)} = 2 \cos^{2}{\left(θ \right)} – 1\]

\[\cos{\left(θ \right)} = 2 \cos^{2}{\left(\frac{θ}{2} \right)} – 1\]

これを\(\cos^{2}{\left(\frac{θ}{2} \right)}\)について整理したのが、コサインの半角の公式です。\(\cos^{2}{\left(\frac{θ}{2} \right)} =1- \sin^{2}{\left(\frac{θ}{2} \right)}\)を使えば、サインの半角の公式が得られます。タンジェントの半角の公式は、これらを組み合わせたものです。

 

半角の公式は、\((\sin (\theta))^2\)の展開としても見ることができます。単純に展開しようとしても、うまくいきません。

\[\sin^{2}{\left(θ \right)}\]

しかし、「三角関数.rewrite(tan)」によってタンジェントに書き換えてから展開すると、なぜかうまくいきます。

\[\frac{1}{2} – \frac{\cos{\left(2 θ \right)}}{2}\]

\[\frac{\cos{\left(2 θ \right)}}{2} + \frac{1}{2}\]

 

タンジェントの2乗も、そのままではうまく展開してくれません。しかし、\(1+(\tan \theta)^2\)の単純化を試みると、

\[\frac{1}{\cos^{2}{\left(θ \right)}}\]

という関係式は導いてくれます。

 

和積の公式、積和の公式

積和の公式を導いてみましょう。

単に積のまま展開しようとしても、うまくいきません。一旦タンジェントに変換すると、導くことができます。

\[\frac{\cos{\left(α – β \right)}}{2} – \frac{\cos{\left(α + β \right)}}{2}\]

\[\frac{\cos{\left(α – β \right)}}{2} + \frac{\cos{\left(α + β \right)}}{2}\]

\[\frac{\sin{\left(α – β \right)}}{2} + \frac{\sin{\left(α + β \right)}}{2}\]

 

和積の公式は、三角関数の和が既にシンプルな形なので、うまく導くことができませんでした。そこで、積和の公式において、

\[A=\alpha +\beta \]

\[B=\alpha -\beta \]

と置き換えることで導くことにします。やや複雑なコードになりますが、導くことはできます。

\[\sin{\left(\frac{A}{2} – \frac{B}{2} \right)} \sin{\left(\frac{A}{2} + \frac{B}{2} \right)}\\ = – \frac{\cos{\left(A \right)}}{2} + \frac{\cos{\left(B \right)}}{2}\]

\[\cos{\left(\frac{A}{2} – \frac{B}{2} \right)} \cos{\left(\frac{A}{2} + \frac{B}{2} \right)} \\= \frac{\cos{\left(A \right)}}{2} + \frac{\cos{\left(B \right)}}{2}\]

\[\sin{\left(\frac{A}{2} + \frac{B}{2} \right)} \cos{\left(\frac{A}{2} – \frac{B}{2} \right)} \\= \frac{\sin{\left(A \right)}}{2} + \frac{\sin{\left(B \right)}}{2}\]

 

三角関数の合成

三角関数の合成を求めるために、単純化を試みますが、そのままでは思う形になってくれません。

\[\sin{\left(θ \right)} + \cos{\left(θ \right)}\]

「三角関数.rewrite(sin)」でサインに変換してから単純化すると、期待する結果が得られます。

\[\sqrt{2} \sin{\left(θ + \frac{\pi}{4} \right)}\]

この数式を、コサインとして表示し直すこともできます。

\[\sqrt{2} \cos{\left(θ – \frac{\pi}{4} \right)}\]

 

ド・モアブルの定理

複素数との関連で、ド・モアブルの定理\(\cos k\theta + i \sin k \theta = (\cos \theta + i \sin \theta )^k\)を確かめることもできます。Juliaでは、虚数単位\(i\)は「im」です。

\[e^{2 i θ}\]

\[e^{2 i θ}\]

参考:オイラーの公式、極形式、ド・モアブルの定理とは:複素指数関数、三角関数の性質

 

双曲線関数の加法定理

双曲線関数に対しても、三角関数と同じ方法で公式を導くことができます。

\[\sinh{\left(α \right)} \cosh{\left(β \right)} + \sinh{\left(β \right)} \cosh{\left(α \right)}\]

\[\sinh{\left(α \right)} \sinh{\left(β \right)} + \cosh{\left(α \right)} \cosh{\left(β \right)}\]

\[\frac{\tanh{\left(α \right)}}{\tanh{\left(α \right)} \tanh{\left(β \right)} + 1}\\ + \frac{\tanh{\left(β \right)}}{\tanh{\left(α \right)} \tanh{\left(β \right)} + 1}\]

 

以上、Julia(SymPy)で三角関数の加法定理、倍角の公式、和積の公式、合成を求める方法を紹介してきました。

三角関数の公式は覚えるのが大変なので、手計算だけでなく、コンピュータでも導いてみると良いでしょう。

木村すらいむ(@kimu3_slime)でした。ではでは。

 

1から始める Juliaプログラミング
進藤 裕之(著), 佐藤 建太(著)
コロナ社 (2020-03-26T00:00:01Z)
5つ星のうち4.5
¥7,353 (コレクター商品)

 

こちらもおすすめ

Julia(SymPy)による三角関数の特殊な値の計算方法

Julia(SymPy)によるテイラー級数展開の求め方(指数対数、三角、双曲線)

Julia(SymPy)で1変数関数の極限を求める方法

Julia(SymPy)で1変数関数を積分する方法(多項式、指数対数、三角関数)

Julia(SymPy)で1変数関数を微分する方法(多項式、指数対数、三角関数)

.Julia(SymPy)で有理関数を部分分数分解、通分する方法

Julia(SymPy)で多項式の展開・因数分解、方程式を解く方法

Juliaで1変数関数のグラフを描く方法(多項式、指数対数、三角関数)