見出し画像

高校数学をプログラミングで解く(数学II編)「3-2 三角関数」

マガジンリスト > 数学Ⅱ編 3.三角関数 > 3-2 三角関数


はじめに

今回は、数学IIで学ぶ「三角関数」について、三角関数の3つの相互関係についてそれらが成り立っているかどうかを確かめるプログラムを作成します。

三角関数

まず、三角関数について解説しておきます。

一般角の三角関数

$${\mathrm{P}(x,y)}$$、$${\mathrm{OP}=r}$$、動径$${\mathrm{OP}}$$と始線$${\mathrm{O}x}$$のなす角の1つを$${\alpha}$$、動径$${\mathrm{OP}}$$の表す角を$${\theta}$$とします。このとき、一般角

$$
\theta = \alpha + 2 n \pi \ \ \ \ \mathrm{ただし、}n\mathrm{は整数}
$$

について、

$$
\sin \theta = \frac{y}{r}, \ \cos \theta = \frac{x}{r}, \ \tan \theta = \frac{y}{x}
$$

図1 一般角の三角関数

三角関数の相互関係

$$
\tan \theta = \frac{ \sin \theta}{ \cos \theta }
$$

$$
\sin^2 \theta + \cos^2 \theta = 1
$$

$$
1+\tan^2 \theta = \frac{1}{\cos^2 \theta}
$$

三角関数の相互関係を確かめる

三角関数の相互関係は、記事『高校数学をプログラミングで解く(数学I編)「2-2 三角比の相互関係」』で解説した「三角比の相互関係」を一般角に拡張したものとなります。そこで今回は、これらの相互関係が一般角についても成り立っていることをプログラムを書いて確かめてみます。
記事『高校数学をプログラミングで解く(数学I編)「2-2 三角比の相互関係」』では、$${\theta}$$の値を$${10^{\circ}}$$から$${80^{\circ}}$$まで$${10^{\circ}}$$ずつ動かしていき、左辺の値と右辺の値をそれぞれ出力することで一致しているかどうか確かめました。今回は、これらの角度をさらに$${2n\pi}$$だけ増やしたときにも左辺の値と右辺の値が一致しているかを確かめます。

では、順にプログラムを書いて確かめていきます。

三角関数の相互関係1

まず、

$$
\tan \theta = \frac{ \sin \theta}{ \cos \theta }
$$

を見ていきます。

// 三角関数の相互関係 tanθ=sinθ/cosθ の確認
void setup(){
  int n = 1; // 任意の整数
  float theta; // 角度(°)
  float lhs, rhs; // 左辺と右辺の値
  for(int i=1; i<=8; i++){ // 10°から80°まで動かす
    theta = 10.0 * i + 360.0 * n;
    lhs = tan( radians(theta) );
    rhs = sin( radians(theta) )/cos( radians(theta) );
    println( theta, lhs, rhs );
  }
}

ソースコード1 三角関数の相互関係(1つ目)を確かめるプログラム

ソースコード1を、Processingの開発環境ウィンドウを開いて(スケッチ名を「relation_trigonometric_function1」としています)、テキストエディタ部分に書いて実行します。

図2 スケッチ「relation_trigonometric_function1」の実行結果

図2のように、コンソールに角度($${\theta}$$)の値(単位は「°」)、左辺($${\tan \theta}$$)の値、右辺($${\sin \theta / \cos \theta}$$)の値、の順で$${\theta}$$の値を$${10^{\circ}+360^{\circ}\times n}$$から$${80^{\circ}+360^{\circ}\times n}$$まで$${10^{\circ}}$$ずつの間隔で出力しています。今回は$${n=1}$$としているので、出力は以下のようになります。

370.0 0.17632712 0.17632712
380.0 0.36397034 0.36397037
390.0 0.5773504 0.5773504
400.0 0.8390997 0.83909965
410.0 1.1917536 1.1917535
420.0 1.7320507 1.7320505
430.0 2.7474768 2.7474768
440.0 5.6712785 5.6712785

この結果を見ると、左辺の値と右辺の値は丸め誤差の範囲内で一致していることがわかります。つまり、

$$
\tan \theta = \frac{ \sin \theta}{ \cos \theta }
$$

は一般角の場合も成り立っているだろうということが確認できます。

三角関数の相互関係2

次に、

$$
\sin^2 \theta + \cos^2 \theta = 1
$$

を見ていきます。

// 三角関数の相互関係 sin^2θ+cos^2θ=1 の確認
void setup(){
  int n = -1; // 任意の整数
  float theta; // 角度(°)
  float lhs; // 左辺の値
  for(int i=1; i<=8; i++){ // 10°から80°まで動かす
    theta = 10.0 * i + 360.0 * n;
    lhs = sin( radians(theta) ) * sin( radians(theta) );
    lhs += cos( radians(theta) ) * cos( radians(theta) );
    println( theta, lhs );
  }
}

ソースコード2 三角関数の相互関係(2つ目)を確かめるプログラム

ソースコード2を、Processingの開発環境ウィンドウを開いて(スケッチ名を「relation_trigonometric_function2」としています)、テキストエディタ部分に書いて実行します。

図3 スケッチ「relation_trigonometric_function2」の実行結果

図3のように、コンソールに角度($${\theta}$$)の値(単位は「°」)、左辺($${\sin^2 \theta + \cos^2 \theta}$$)の値、の順で$${\theta}$$の値を$${10^{\circ}+360^{\circ}\times n}$$から$${80^{\circ}+360^{\circ}\times n}$$まで$${10^{\circ}}$$ずつの間隔で出力しています。なお、右辺の値は常に1であるため、出力は省略しています。今回は$${n=-1}$$としているので、出力は以下のようになります。

-350.0 1.0
-340.0 1.0
-330.0 1.0
-320.0 1.0
-310.0 1.0
-300.0 1.0
-290.0 0.99999994
-280.0 0.99999994

この結果を見ると、左辺の値は丸め誤差の範囲内で「1」と一致していることがわかります。つまり、

$$
\sin^2 \theta + \cos^2 \theta = 1
$$

は成り立っているだろうということが確認できます。

三角関数の相互関係3

最後に、

$$
1+\tan^2 \theta = \frac{1}{\cos^2 \theta}
$$

を見ていきます。

// 三角関数の相互関係 1+tan^2θ=1/cos^2θ の確認
void setup(){
  int n = 2; // 任意の整数
  float theta; // 角度(°)
  float lhs, rhs; // 左辺と右辺の値
  for(int i=1; i<=8; i++){ // 10°から80°まで動かす
    theta = 10.0 * i + 360.0 * n;
    lhs = 1.0 + tan( radians(theta) ) * tan( radians(theta) );
    rhs = 1.0 / cos( radians(theta) ) / cos( radians(theta) );
    println( theta, lhs, rhs );
  }
}

ソースコード3 三角関数の相互関係(3つ目)を確かめるプログラム

ソースコード3を、Processingの開発環境ウィンドウを開いて(スケッチ名を「relation_trigonometric_function3」としています)、テキストエディタ部分に書いて実行します。

図4 スケッチ「relation_trigonometric_function3」の実行結果

図4のように、コンソールに角度($${\theta}$$)の値(単位は「°」)、左辺($${1 + \tan^2 \theta}$$)の値、右辺($${1 / \cos^2 \theta}$$)の値、の順で$${\theta}$$の値を$${10^{\circ}+360^{\circ}\times n}$$から$${80^{\circ}+360^{\circ}\times n}$$まで$${10^{\circ}}$$ずつの間隔で出力しています。今回は$${n=2}$$としているので、出力は以下のようになります。

730.0 1.0310913 1.0310915
740.0 1.1324745 1.1324745
750.0 1.3333337 1.3333338
760.0 1.7040888 1.7040888
770.0 2.4202776 2.4202776
780.0 4.000002 4.000002
790.0 8.548637 8.548637
800.0 33.163464 33.163464

この結果を見ると、左辺の値と右辺の値は丸め誤差の範囲内で一致していることがわかります。つまり、

$$
1+\tan^2 \theta = \frac{1}{\cos^2 \theta}
$$

は成り立っているだろうということが確認できます。

まとめ

今回は、数学IIで学ぶ「三角関数」について、三角関数の3つの相互関係についてそれらが成り立っているかどうかを確かめるプログラムを作成しました。
記事『高校数学をプログラミングで解く(数学I編)「2-2 三角比の相互関係」』のまとめでも解説したように、各節の最後で「成り立っているだろうということが確認できます。」としたのは、今回プログラムを書いて各式が成り立っていることを証明したわけではなく、単に成り立っていそうであることを確かめただけだからです。三角関数の相互関係の証明はそんなに難しくないので一度やってみてください。

参考文献

改訂版 教科書傍用 スタンダード 数学II(数研出版、ISBN9784410209369)

この記事が気に入ったらサポートをしてみませんか?