C++
 Computer >> コンピューター >  >> プログラミング >> C++

【C++】算術平均と幾何平均から調和平均を求める方法

本記事では、算術平均と幾何平均の値から調和平均(Harmonic Mean)を求める方法を、C++のコード例とともに解説します。まず、3つの平均それぞれの定義式を確認しておきましょう。

  • 算術平均(AM):(a + b) / 2
  • 幾何平均(GM):√(a × b)
  • 調和平均(HM):2ab / (a + b)

調和平均は、算術平均と幾何平均を用いて次の関係式で表すことができます。

HM = GM² / AM

この関係を利用すると、調和平均を直接計算するのではなく、算術平均と幾何平均の2つの値を経由して求めることが可能です。

サンプルコード

#include <iostream>
#include <cmath>
using namespace std;

double getHarmonicMean(int a, int b) {
    double AM, GM, HM;
    AM = (a + b) / 2;
    GM = sqrt(a * b);
    HM = (GM * GM) / AM;
    return HM;
}

int main() {
    int a = 5, b = 15;
    double res = getHarmonicMean(a, b);
    cout << "Harmonic Mean of " << a << " and " << b << " is " << res;
}

実行結果

Harmonic Mean of 5 and 15 is 7.5

コードの解説

関数 getHarmonicMean では、まず2つの数値 a と b から算術平均 AM を計算し、次に sqrt() 関数を使って幾何平均 GM を求めています。最後に「HM = GM² / AM」という関係式に代入することで、調和平均を算出しています。

例えば a = 5、b = 15 の場合、算術平均は 10、幾何平均は √75 ≒ 8.66 となります。これらの値から調和平均は 8.66² / 10 = 7.5 と計算され、直接公式「2ab / (a + b) = 150 / 20 = 7.5」で求めた結果と一致することが確認できます。

  1. C++で方程式 n = x + n⊕x の解の個数を求める方法

    本記事では、方程式 n = x + n ⊕ x の解の個数を求める方法を解説します。つまり、与えられた n に対して、この等式を満たす x の値がいくつ存在するかを求める問題です。ここで「⊕」はXOR(排他的論理和)演算を表します。 それでは、具体例を挙げながら、n = x + n ⊕ x の解の個数について詳しく見ていきましょう。 全探索(ブルートフォース)による解法 最もシンプルなのが全探索(ブルートフォース)のアプローチです。与えられた n に対して、x の候補として 0 から順に整数を代入し、等式が成り立つかどうかを1つずつ確認していきます。なお、x の範囲は 0 以上 n 以下に限定

  2. C++とオイラー特性でサッカーボールの五角形・六角形の数を求める方法

    サッカーボールをよく見ると、黒い五角形と白い六角形がパズルのように組み合わさり、完璧な球体を形作っていることがわかります。本記事では、オイラー特性(Euler characteristic)という数学的手法を用いて、サッカーボール上に存在する五角形と六角形の数を求める方法を解説し、最後にC++での実装例も紹介します。 オイラー特性とは オイラー特性とは、位相空間における図形や構造の特徴を表す数値です。球面の場合、オイラー特性は常に2になることが知られており、この性質を利用することで、サッカーボール上の五角形と六角形の数を計算できます。 オイラー特性では、以下の要素を使用します。 χ(S) —