Giả sử chúng ta có hai chuỗi số A1 và A2 có kích thước lần lượt là b và a. Chúng ta cần tìm trung bình và phương sai của chuỗi kết hợp.
Ví dụ: A1 = [24, 46, 35, 79, 13, 77, 35] và A2 = [66, 68, 35, 24, 46], thì đầu ra sẽ là: Mean = [44.1429, 47.8], sd = [548.694, 294.56], combined mean = 45.6667, d1_square = 2.322, d2_square = 4.5511, combined_var = 446.056.
Giải thuật
Các bước thực hiện:
- Định nghĩa hàm
mean(arr)trả về trung bình của mảng. - Định nghĩa hàm
sd(arr, n)tính phương sai (variance) của mảng. - Tính mean1, mean2 của A1, A2.
- Tính sd1, sd2 của A1, A2.
- Tính combinedMean = (n*mean1 + m*mean2) / (n + m).
- Tính d1_square = (mean1 - combinedMean)^2, d2_square = (mean2 - combinedMean)^2.
- Tính combined_var = (n*(sd1 + d1_square) + m*(sd2 + d2_square)) / (n + m).
Ví dụ
def mean(arr):
return sum(arr)/len(arr)
def sd(arr, n):
sum = 0
for i in range(n):
sum += (arr[i] - mean(arr)) * (arr[i] - mean(arr))
sdd = sum / n
return sdd
def combinedVariance(A1, A2):
n = len(A1)
m = len(A2)
mean1 = mean(A1)
mean2 = mean(A2)
print("mean_1:", round(mean1, 2), "mean_2:", round(mean2, 2))
sd1 = sd(A1, n)
sd2 = sd(A2, m)
print("sd_1:", round(sd1, 2), "sd_2:", round(sd2, 2))
combinedMean = (n * mean1 + m * mean2) / (n + m)
print("Combined Mean:", round(combinedMean, 2))
d1_square = (mean1 - combinedMean) ** 2
d2_square = (mean2 - combinedMean) ** 2
print("d1_square:", round(d1_square, 2), "d2_square:", round(d2_square, 2))
comb_var = (n * (sd1 + d1_square) + m * (sd2 + d2_square)) / (n + m)
print("Combined Variance:", round(comb_var, 2))
A1 = [24, 46, 35, 79, 13, 77, 35]
A2 = [66, 68, 35, 24, 46]
combinedVariance(A1, A2)Đầu vào
[24, 46, 35, 79, 13, 77, 35], [66, 68, 35, 24, 46]
Đầu ra
mean_1: 44.14 mean_2: 47.8 sd_1: 548.69 sd_2: 294.56 Combined Mean: 45.67 d1_square: 2.32 d2_square: 4.55 Combined Variance: 446.06