このページでは、C言語での「ネイピア数の扱い方」や「\( e ^ x \) を求める方法」について解説していきます。
ネイピア数とは自然対数の底のことで、要は下記の式における \( e \) のことです。
$$ y = \log_e x $$
また、ネイピア数 \( e \) 自体は下記のような値になります。
$$ e = 2.71828… $$
もちろん、上記の値を直接ソースコードに指定してやればネイピア数を用いることができることになるのですが、C言語では exp
関数が用意されており、これを利用することで簡単にネイピア数を利用することができます。
exp
関数
この exp
関数は下記のような関数になります。
#include <math.h>
double exp(double x);
exp
関数を使用する際には math.h
をインクルードする必要があります。
exp
関数は引数 x
に対し、\( e ^ x \) の計算結果を返却する関数になります。
ネイピア数を扱う
ネイピア数とはすなわち、\( x \) が \( 1 \) の時の \( e ^ x \) の計算結果です。
したがって、単純にネイピア数を扱いたいのであれば、exp
関数を用いて下記を実行すれば良いだけです(e
にネイピア数が代入される)。
double e = exp(1);
printf("%f\n", e);
実行結果は下記のようになり、e
がネイピア数になっていることが確認できると思います。
2.718282
スポンサーリンク
\( e ^ x \) を求める
また、前述の通り exp
関数は引数 x
に対し、\( e ^ x \) の計算結果を返却する関数になりますので、\( e ^ x \) を求めたい場合は単純に exp(x)
を実行すれば良いだけです。
例えば下記は、x
を 0 ≦ x < 5
の範囲で 0.1
ずつ変化させながら \( e ^ x \) を計算して表示する例になります。
for (int i = 0; i < 50; i++) {
double x = (double)i / (double)10;
printf("%f\n", exp(x));
}
実行結果は省略しますが、結果をグラフ化すれば下記のようになります。
また、自然対数は log
関数で求められますので、log(exp(x))
の結果が x
になることも下記のソースコードから確認することができます。
for (int i = 0; i < 50; i++) {
double x = (double)i / (double)10;
printf("%f\n", log(exp(x)));
}
参考:expf
関数と expl
関数
exp
関数同様に \( e ^ x \) を求める関数として、下記の expf
関数と expl
関数が存在します。
#include <math.h>
float expf(float x);
long double expl(long double x);
exp
関数との違いは引数と返却値の “型” です。例えば、\( e ^ x \) の計算結果の精度を exp
関数よりも高くしたい、もっと誤差を減らしたいというような場合は、expl
関数を利用するのが良いと思います。
まとめ
このページでは、C言語での「ネイピア数の扱い方」と「\( e ^ x \) の求め方」について解説しました!
どちらも exp
関数を使用すれば簡単に実現することができ、exp(1)
によりネイピア数を取得できますし、exp(x)
により \( e ^ x \) を求めることができます。
数学関連のプログラムを扱うような場合は exp(x)
を使用する機会も多いと思いますので、是非 exp
関数については覚えておいてください!
また、\(x ^ n \) のようなもっと一般的な冪乗の計算には pow
関数を利用します。pow
関数については下記ページで解説していますので、こちらも是非読んでみてください!