ホームC言語Tips集数学 ≫ シグモイド関数を計算する

C言語Tips集 - シグモイド関数を計算する

C言語にはシグモイド関数を計算する関数やマクロはありません.したがってプログラマが自らシグモイド関数を求める必要があります.

シグモイド関数は以下の式で求められます.

シグモイド関数

ここでα(アルファ)はゲイン(sigmoid gain)です.

上記の式を C言語で実装すると以下のようになります.

/**
 * シグモイド関数を計算する
 * @param[in] gain ゲイン(標準シグモイド関数の場合は1を指定)
 * @param[in] x 値
 * @return シグモイド関数の計算値
 */
double sigmoid(double gain, double x) {
    return 1.0 / (1.0 + exp(-gain * x));
}

C言語サンプルプログラム

以下にシグモイド関数を計算するサンプルプログラムを示します.

/* header files */
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

/* functions */
double sigmoid(double gain, double x);

/* main */
int main(void) {
    double x = -10.0;

    while (x <= 10.0) {
        printf("%.2f\t%10.8f\n", x, sigmoid(1.0, x));
        x = x + 1.0;
    }

    return EXIT_SUCCESS;
}

/**
 * シグモイド関数を計算する
 * @param[in] gain ゲイン(標準シグモイド関数の場合は1を指定)
 * @param[in] x 値
 * @return シグモイド関数の計算値
 */
double sigmoid(double gain, double x) {
    return 1.0 / (1.0 + exp(-gain * x));
}

実行例

サンプルプログラムの実行結果は以下のようになります.

-10.00  0.00004540
-9.00   0.00012339
-8.00   0.00033535
-7.00   0.00091105
-6.00   0.00247262
-5.00   0.00669285
-4.00   0.01798621
-3.00   0.04742587
-2.00   0.11920292
-1.00   0.26894142
0.00    0.50000000
1.00    0.73105858
2.00    0.88079708
3.00    0.95257413
4.00    0.98201379
5.00    0.99330715
6.00    0.99752738
7.00    0.99908895
8.00    0.99966465
9.00    0.99987661
10.00   0.99995460

上記の結果をgnuplotで表示すると以下のようになります.

シグモイド関数

Cプログラマの必読書

たくさんあるC言語関連の書籍の中でも特に役に立った本です.よかったら参考にしてみてください.

C実践プログラミング 第3版

C言語の実践的参考書.少々値段は張りますが初心者を脱しようとしている人は絶対に読むべきです.
文法だけでなく,コーディングスタイルやデバッグなど文字通り「実践的」なことが書かれているので非常にためになります. オライリーの本は,読みにくい本が多いのですが本書はとても読みやすくオススメです.


C言語ポインタ完全制覇 (標準プログラマーズライブラリ)

ポインタの解説書としては最高の書籍です.
この1冊でポインタを完全に理解することができます.全くの初学者が読むには敷居が高いですが,入門書を読み終えた後に読むと非常に有益です.

その他・未分類