以下は目次です。
要素が数値の配列があるとき、その分散を求めたいとします。
分散は、偏差平方和(「逆引き 偏差平方和を求める」を参照)を求められれば、 それを、要素の個数で割れば得られます。
偏差平方和は、「逆引き 偏差平方和を求める」の方法で得られるので、 後は、要素の個数で割るだけです。
#include <assert.h>
#include <stdio.h>
#define SIZE_OF_ARRAY(array) (sizeof(array)/sizeof(array[0]))
double sum(const double* array, size_t size)
{
double result = 0.0;
for (size_t i = 0; i < size; ++i) {
+= array[i];
result }
return result;
}
double average(const double* array, size_t size)
{
(size > 0);
assertreturn sum(array, size) / size;
}
/* 偏差平方和を求める */
double sum_of_squares(const double* array, size_t size)
{
double result = 0.0;
// 平均値を求める
double avg = average(array, size);
// 各要素の値と平均値との差の2乗を合計する
for (size_t i = 0; i < size; ++i) {
+= (array[i] - avg) * (array[i] - avg);
result }
return result;
}
/* 分散を求める */
double variance(const double* array, size_t size)
{
(size > 0);
assertreturn sum_of_squares(array, size) / size;
}
int main(void)
{
const double array[] = {5, 5, 2, 14, 4};
("%lf\n", variance(array, SIZE_OF_ARRAY(array)));
printf}
実行結果:
17.200000
新規作成。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |