見出し画像

高校数学をプログラミングで解く(数学II編)「4-1 指数の拡張」


はじめに

今回は、数学IIで学ぶ「指数の拡張」について、累乗根を計算する問題を解くプログラムを作成します。

指数の拡張

まず、指数の拡張について解説しておきます。

指数の拡張

$${a>0, b>0}$$、$${m, n}$$は正の整数、$${r, s}$$は有理数とします。

定義

$$
a^0=1, \ \ a^{\frac{m}{n}}=\sqrt[n]{a^m}=( \sqrt[n]{a} )^m, \ \ a^{-r}=\frac{1}{a^r}
$$

指数法則

$$
a^ra^s=a^{r+s}, \ \ (a^r)^s=a^{rs}, \ \ (ab)^r=a^rb^r
$$

累乗根の性質

$${a>0, b>0}$$、$${m, n, p}$$は正の整数とします。

$$
\begin{array}{lll}
(\sqrt[n]{a})^n = a & \sqrt[n]{a} \sqrt[n]{b} = \sqrt[n]{ab} & \frac{ \sqrt[n]{a} }{ \sqrt[n]{b} } = \sqrt[n]{\frac{a}{b}} \\
(\sqrt[n]{a})^m=\sqrt[n]{a^m} & \sqrt[m]{ \sqrt[n]{a} }=\sqrt[mn]{a} & \sqrt[n]{a^m}=\sqrt[np]{a^{mp}}
\end{array}
$$

-1の3乗根

$$
-1, \ \ \frac{1 \pm \sqrt{3}i}{2} ; \sqrt[3]{-1} = -1
$$

1の4乗根

$$
\pm 1, \pm i ; \sqrt[4]{1} = 1
$$

累乗根を計算する

今回は、以下の累乗根を計算する問題を解くプログラムを作成してみます。

問題
以下の式を計算せよ。

$$
\begin{array}{llll}
(1)  \sqrt[3]{125} & (2)  \sqrt[4]{256} & (3)  \sqrt[3]{1000000} & (4)  \sqrt[5]{0.00001} \\
(5)  \sqrt[3]{4} \sqrt[3]{54} & (6)  \frac{ \sqrt[4]{48} }{ \sqrt[4]{3} } & (7)  \sqrt[3]{ \sqrt{64} } & (8)  \sqrt[6]{4^3} \\
(9)  49^{\frac{1}{2}} & (10)  8^{\frac{4}{3}} & (11)  16^{-\frac{3}{4}} & (12)  100^{-\frac{3}{2}}
\end{array}
$$

アルゴリズム設計

累乗根は、記事『高校数学をプログラミングで解く(数学A編)「1-7 反復試行の確率」』でも解説した、pow 関数を利用して計算することができます。

pow(p, r);

p:べき乗の底 float型
r:べき指数 float型
返り値:$${p^r}$$の値 float型

たとえば、問題(1)の$${\sqrt[3]{125}}$$は、

$$
\sqrt[3]{125} = 125^{\frac{1}{3}}
$$

と指数の形に変形できるので、プログラムでは

pow(125.0, 1.0/3.0);

と記述することで計算することができます。

プログラム

それでは、累乗根を計算する問題を解くプログラムを作成します。

// 累乗根を計算する
void setup(){

  // (1) 
  float a01 = pow(125.0, 1.0/3.0);
  println("(1):", a01);
  
  // (2)
  float a02 = pow(256.0, 1.0/4.0);
  println("(2):", a02);

  // (3)
  float a03 = pow(1000000.0, 1.0/3.0);
  println("(3):", a03);
  
  // (4)
  float a04 = pow(0.00001, 1.0/5.0);
  println("(4):", a04);

  // (5)
  float a05 = pow(4.0, 1.0/3.0) * pow(54.0, 1.0/3.0);
  println("(5):", a05);
  
  // (6)
  float a06 = pow(48.0, 1.0/4.0) / pow(3.0, 1.0/4.0);
  println("(6):", a06);
  
  // (7)
  float a07 = pow(pow(64.0, 1.0/2.0), 1.0/3.0);
  println("(7):", a07);

  // (8)
  float a08 = pow(pow(4.0, 3.0), 1.0/6.0);
  println("(8):", a08);
  
  // (9)
  float a09 = pow(49.0, 3.0/2.0);
  println("(9):", a09);
  
  // (10)
  float a10 = pow(8.0, 4.0/3.0);
  println("(10):", a10);
  
  // (11)
  float a11 = pow(16.0, -3.0/4.0);
  println("(11):", a11);
  
  // (12)
  float a12 = pow(100.0, -3.0/2.0);
  println("(12):", a12);

}

ソースコード1 累乗根を計算する問題を解くプログラム

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

図1 スケッチ「calc_exponents」の実行結果

図1のように、コンソールに各問題の値が出力されます。

(1): 5.0000005
(2): 4.0
(3): 100.000015
(4): 0.099999994
(5): 6.0
(6): 2.0
(7): 2.0
(8): 2.0
(9): 343.0
(10): 16.000002
(11): 0.125
(12): 0.001

これらの結果が丸め誤差の範囲内で正しいことは、各問題を解析的に計算することでわかりますので、確認しておいてください。

まとめ

今回は、数学IIで学ぶ「指数の拡張」について、累乗根を計算する問題を解くプログラムを作成しました。
累乗根をプログラムで計算するために、pow 関数を利用することができます。今後もべき乗や累乗根を計算するためによく出てきますので、こういう関数があることを記憶にとどめておいてください。

参考文献

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

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