どうも、木村(@kimu3_slime)です。
今回は、Julia(SymPy)による三角関数の特殊な値の計算方法を紹介します。
準備
SymPyを使うので、持っていなければインストールしておきましょう。
1 2 | using Pkg Pkg.add("SymPy") |
準備として、以下のコードを実行しておきます。
1 | using SymPy |
三角関数の特殊な値の計算方法
まず、\(\sin (\frac{\pi}{6})\)を求めてみます。
1 | sin(pi/6) |
\[ \begin{aligned}0.49999999999999994\end{aligned} \]
この書き方だと、小数として\(\frac{\pi}{6}\)を計算しているので、誤差が出てしまっています。記号的に\(\pi\)を表すために、SymPyでは「PI」を使います。
1 | sin(PI/6) |
\[ \begin{aligned}\frac{1}{2}\end{aligned} \]
さらに、三角関数のより特殊な角度についても記号的に計算できます。
1 | sin(PI/12) |
\[ \begin{aligned}- \frac{\sqrt{2}}{4} + \frac{\sqrt{6}}{4}\end{aligned} \]
なお、三角関数の入力はラジアンで計算されています。もし度で計算したいならば、次のような変換をすると良いでしょう。
1 2 3 4 5 | function dsin(x) return sin(PI/180 *x) end dsin(15) |
\[ \begin{aligned}- \frac{\sqrt{2}}{4} + \frac{\sqrt{6}}{4}\end{aligned} \]
結果を代数的にでなく、小数で表したいならば「数式.evalf()」を用います。
1 | dsin(15).evalf() |
\[ \begin{aligned}0.258819045102521\end{aligned} \]
特殊な角\(x=0,\frac{\pi}{24},\frac{2}{24}\pi,\dots\)でのサインの値を求め、一覧にしてみましょう。
1 | [sin(PI/24*i) for i in 0:24] |
\[ \begin{aligned}\left[ \begin{array}{r}0\\- \frac{\sqrt{3} \sqrt{\frac{1}{2} – \frac{\sqrt{2}}{4}}}{2} + \frac{\sqrt{\frac{\sqrt{2}}{4} + \frac{1}{2}}}{2}\\- \frac{\sqrt{2}}{4} + \frac{\sqrt{6}}{4}\\\sqrt{\frac{1}{2} – \frac{\sqrt{2}}{4}}\\\frac{1}{2}\\- \frac{\sqrt{\frac{1}{2} – \frac{\sqrt{2}}{4}}}{2} + \frac{\sqrt{3} \sqrt{\frac{\sqrt{2}}{4} + \frac{1}{2}}}{2}\\\frac{\sqrt{2}}{2}\\\frac{\sqrt{3} \sqrt{\frac{1}{2} – \frac{\sqrt{2}}{4}}}{2} + \frac{\sqrt{\frac{\sqrt{2}}{4} + \frac{1}{2}}}{2}\\\frac{\sqrt{3}}{2}\\\sqrt{\frac{\sqrt{2}}{4} + \frac{1}{2}}\\\frac{\sqrt{2}}{4} + \frac{\sqrt{6}}{4}\\\frac{\sqrt{\frac{1}{2} – \frac{\sqrt{2}}{4}}}{2} + \frac{\sqrt{3} \sqrt{\frac{\sqrt{2}}{4} + \frac{1}{2}}}{2}\\1\\\frac{\sqrt{\frac{1}{2} – \frac{\sqrt{2}}{4}}}{2} + \frac{\sqrt{3} \sqrt{\frac{\sqrt{2}}{4} + \frac{1}{2}}}{2}\\\frac{\sqrt{2}}{4} + \frac{\sqrt{6}}{4}\\\sqrt{\frac{\sqrt{2}}{4} + \frac{1}{2}}\\\frac{\sqrt{3}}{2}\\\frac{\sqrt{3} \sqrt{\frac{1}{2} – \frac{\sqrt{2}}{4}}}{2} + \frac{\sqrt{\frac{\sqrt{2}}{4} + \frac{1}{2}}}{2}\\\frac{\sqrt{2}}{2}\\- \frac{\sqrt{\frac{1}{2} – \frac{\sqrt{2}}{4}}}{2} + \frac{\sqrt{3} \sqrt{\frac{\sqrt{2}}{4} + \frac{1}{2}}}{2}\\\frac{1}{2}\\\sqrt{\frac{1}{2} – \frac{\sqrt{2}}{4}}\\- \frac{\sqrt{2}}{4} + \frac{\sqrt{6}}{4}\\- \frac{\sqrt{3} \sqrt{\frac{1}{2} – \frac{\sqrt{2}}{4}}}{2} + \frac{\sqrt{\frac{\sqrt{2}}{4} + \frac{1}{2}}}{2}\\0\end{array} \right]\end{aligned} \]
二重根号はありますが、比較的シンプルに表せています。
三角関数の数表を作りたいならば、この結果を「sin(PI/24*i).evalf()」と置き換えれば良いでしょう。
代数的に表すのにも限界はあり、\(\pi\)を整数で割った角の値を、すべて表してくれるわけではありません。
1 2 | sin(PI/18) sin(PI/18).evalf() |
\[ \begin{aligned}\sin{\left(\frac{\pi}{18} \right)}\end{aligned} \]
\[ \begin{aligned}0.17364817766693\end{aligned} \]
シンプルに表せない場合は、そのままの表示で返ってきます。
今回はサインを主な題材としてましたが、コサインやタンジェントでも同様の方法で計算できます。
1 2 | cos(PI/12) tan(PI/12) |
\[ \begin{aligned}\frac{\sqrt{2}}{4} + \frac{\sqrt{6}}{4}\end{aligned} \]
\[ \begin{aligned}2 – \sqrt{3}\end{aligned} \]
以上、Julia(SymPy)による三角関数の特殊な値の計算方法を紹介してきました。
\(x= \frac{\pi}{12}\)のときの値は、加法定理(半角の公式)から導けるものですが、それがコンピュータで簡単に導けるのは嬉しいですね。
木村すらいむ(@kimu3_slime)でした。ではでは。
コロナ社 (2020-03-26T00:00:01Z)
¥7,353 (コレクター商品)
こちらもおすすめ
Julia(SymPy)によるテイラー級数展開の求め方(指数対数、三角、双曲線)
Julia(SymPy)で1変数関数を積分する方法(多項式、指数対数、三角関数)
Julia(SymPy)で1変数関数を微分する方法(多項式、指数対数、三角関数)
.Julia(SymPy)で有理関数を部分分数分解、通分する方法
Julia(SymPy)で多項式の展開・因数分解、方程式を解く方法
Juliaで1変数関数のグラフを描く方法(多項式、指数対数、三角関数)