このページでは、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 関数については下記ページで解説していますので、こちらも是非読んでみてください!

