ホームC言語Tips集数学 ≫ ベクトルの内積を計算する

C言語Tips集 - ベクトルの内積を計算する

一般に 2 つのベクトルの内積は以下の式で求められます.

内積

上記の式を C言語で実装すると以下のようになります.なお,以下はベクトルを配列で実装しています.

/**
 * ベクトルの内積を計算する
 * @param[in] vec1 ベクトル1
 * @param[in] vec2 ベクトル2
 * @param[in] n ベクトルの次元数
 * @return vec1 と vec2 の内積
 */
double InnerProduct(double *vec1, double *vec2, int n) {
    int i;
    double s = 0.0;

    for ( i = 0; i < n; i++ ) {
        s += vec1[i] * vec2[i];
    }

    return s;
}

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

以下に内積を計算するサンプルプログラムを示します.

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

/* functions */
double InnerProduct(double *, double *, int);

/* main */
int main(void) {
    double inner_product;
    double vec1[] = {1.0, 2.0, 3.0};
    double vec2[] = {2.0, 1.0, 3.0};

    /* 内積を求める */
    inner_product = InnerProduct(vec1, vec2, 3);
    printf("内積: %.2f\n", inner_product);

    return EXIT_SUCCESS;
}

/**
 * ベクトルの内積を計算する
 * @param[in] vec1 ベクトル1
 * @param[in] vec2 ベクトル2
 * @param[in] n ベクトルの次元数
 * @return vec1 と vec2 の内積
 */
double InnerProduct(double *vec1, double *vec2, int n) {
    int i;
    double s = 0.0;

    for ( i = 0; i < n; i++ ) {
        s += vec1[i] * vec2[i];
    }

    return s;
}

実行例

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

内積: 13.00