高校数学をプログラミングで解く(数学II編)「4-1 指数の拡張」
マガジンリスト > 数学Ⅱ編 4.指数関数と対数関数 > 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のように、コンソールに各問題の値が出力されます。
(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)
この記事が気に入ったらサポートをしてみませんか?