【C言語】3乗根を求める方法を解説【cbrt()関数】

この記事では、3乗根とは何か、その定義や性質について説明します。

さらに、C言語で3乗根を求める方法についても解説します。

cbrt関数を使った方法や数学的な手法であるニュートン法や二分法について学びましょう。

目次から探す

3乗根とは

3乗根とは、ある数の3乗が与えられたときに、その数を求める操作です。

具体的には、数xの3乗がyとなるとき、xを求める操作を3乗根といいます。

3乗根の定義

数xの3乗がyとなるとき、xを求める操作を3乗根といいます。

数学的には、以下のように表されます。

x^3 = y

この式を解くことで、3乗根を求めることができます。

3乗根の性質

3乗根にはいくつかの性質があります。

  1. 3乗根は実数である場合と複素数である場合があります。

例えば、-8の3乗根は-2ですが、これは実数です。

一方、8の3乗根は2ですが、これは複素数です。

複素数はcomplex.hをインクルードすることでカンタンに使用できます。

  1. 3乗根は一意に定まるわけではありません。

例えば、8の3乗根は2ですが、-1+√3iや-1-√3iも3乗すると8になります。

つまり、8の3乗根は2だけでなく、複素数の組み合わせで表すこともできます。

  1. 3乗根は、実数の場合は正の数と負の数の2つの解を持ちます。

例えば、8の3乗根は2ですが、-2も3乗すると8になります。

一方、複素数の場合は、共役な複素数の組み合わせで表すことができます。

以上が、3乗根の定義と性質についての説明です。

次に、具体的な3乗根の求め方について説明します。

3乗根を求める方法

3乗根を求める方法にはいくつかのアプローチがあります。

ここでは、C言語で3乗根を求める方法について説明します。

cbrt関数を使った方法

C言語には、3乗根を求めるための組み込み関数であるcbrt()があります。

この関数を使うと、簡単に3乗根を求めることができます。


#include <stdio.h>
#include <math.h>
int main() {
    double x = 27.0;
    double result = cbrt(x);
    
    printf("3乗根: %f\n", result);
    
    return 0;
}

上記のコードでは、cbrt()関数を使用して27の3乗根を求めています。

結果は変数resultに格納され、printf()関数を使って表示されます。

3乗根: 3.000000

cbrt()関数は、math.hヘッダーファイルに含まれているため、プログラムの先頭で#includeディレクティブを使用してインクルードする必要があります。

数学的な方法

cbrt()関数を使う方法以外にも、数学的な手法を使って3乗根を求めることもできます。

ここでは、ニュートン法と二分法について説明します。

ニュートン法

ニュートン法は、関数の根を求めるための反復的な手法です。

3乗根を求める場合には、以下のような式を用います。

x = x - (x * x * x - n) / (3 * x * x)

この式を使って、初期値から始めて反復的に計算を行うことで、3乗根を求めることができます。


#include <stdio.h>
double cbrt_newton(double n) {
    double x = n;
    double epsilon = 0.00001; // 許容誤差
    
    while (1) {
        double next_x = x - (x * x * x - n) / (3 * x * x);
        
        if (next_x - x < epsilon && x - next_x < epsilon) {
            break;
        }
        
        x = next_x;
    }
    
    return x;
}
int main() {
    double x = 27.0;
    double result = cbrt_newton(x);
    
    printf("3乗根: %f\n", result);
    
    return 0;
}

上記のコードでは、cbrt_newton()関数を使って27の3乗根を求めています。

ニュートン法を使って反復的に計算を行い、許容誤差を満たすまで繰り返します。

3乗根: 3.000000

二分法

二分法は、関数の根を求めるための手法の一つです。

3乗根を求める場合には、以下のような式を用います。

x = (a + b) / 2

この式を使って、初期値の範囲を狭めながら計算を行うことで、3乗根を求めることができます。


#include <stdio.h>
double cbrt_bisection(double n) {
    double a = 0.0; // 初期値の範囲の下限
    double b = n; // 初期値の範囲の上限
    double epsilon = 0.00001; // 許容誤差
    
    while (1) {
        double x = (a + b) / 2;
        double fx = x * x * x - n;
        
        if (fx < epsilon && fx > -epsilon) {
            break;
        }
        
        if (fx > 0) {
            b = x;
        } else {
            a = x;
        }
    }
    
    return (a + b) / 2;
}
int main() {
    double x = 27.0;
    double result = cbrt_bisection(x);
    
    printf("3乗根: %f\n", result);
    
    return 0;
}

上記のコードでは、cbrt_bisection()関数を使って27の3乗根を求めています。

二分法を使って初期値の範囲を狭めながら計算を行い、許容誤差を満たすまで繰り返します。

3乗根: 3.000000

ニュートン法や二分法は、数学的な手法を使って3乗根を求める方法です。

cbrt()関数と比べると、より高度な計算が必要ですが、特定の状況や要件に応じて使い分けることができます。

目次から探す