Cho mảng số. Nhiệm vụ: tính Harmonic Mean.
Harmonic Mean là gì?
Trung bình điều hòa là nghịch đảo của trung bình cộng các nghịch đảo:
$$H = \frac{n}{\sum_{i=1}^n \frac{1}{x_i}}$$
Áp dụng cho các tỷ lệ, tốc độ, giá cả... Khi các giá trị > 0.
Ví dụ 1
Input – {2.0, 3.4, 5.3, 2.1}
Output – Harmonic mean: 2.74163
Ví dụ 2
Input – {13.5, 14.5, 14.8, 15.2, 16.1}
Output – Harmonic mean: 14.7707
Ví dụ code
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
double harmonicMean(const vector<double>& arr) {
double sumReciprocal = 0;
for (double x : arr) {
if (x == 0) return 0; // Tránh chia cho 0
sumReciprocal += 1.0 / x;
}
return arr.size() / sumReciprocal;
}
int main() {
vector<double> arr = {2.0, 3.4, 5.3, 2.1};
cout << "Harmonic Mean: " << harmonicMean(arr) << endl;
return 0;
}
Kết quả
Harmonic Mean: 2.74163
Mối quan hệ: Harmonic Mean ≤ Geometric Mean ≤ Arithmetic Mean (bất đẳng thức HM-GM-AM). Bằng nhau khi tất cả giá trị bằng nhau.
Ứng dụng: Tính tốc độ trung bình khi đi cùng quãng đường tốc độ khác nhau, điện trở song song, tỷ lệ P/E trung bình...