সমস্যা বিবরণ
দুটি র্যান্ডম ভেরিয়েবল সেট দেওয়া থাকলে, তাদের কোভ্যারিয়েন্স বের করুন। কোভ্যারিয়েন্স বোঝায় দুটি ভেরিয়েবল কতটুকু একসাথে পরিবর্তন होता है।
সূত্র: Cov(X,Y) = Σ(xi - mean_x)(yi - mean_y) / (n-1)
সমাধানের পদ্ধতি
- দুটি অ্যারের মিন বের করুন।
- প্রতিটি জোড়ার জন্য (xi - mean_x) × (yi - mean_y) যোগ করুন।
- (n-1) দিয়ে ভাগ করুন (স্যাম্পল কোভ্যারিয়েন্স)۔
C++ কোড উদাহরণ
#include <bits/stdc++.h>
using namespace std;
float mean(float arr[], int n) {
float sum = 0;
for (int i = 0; i < n; i++) sum += arr[i];
return sum / n;
}
float covariance(float arr1[], float arr2[], int n) {
float sum = 0;
float mean1 = mean(arr1, n);
float mean2 = mean(arr2, n);
for (int i = 0; i < n; i++)
sum += (arr1[i] - mean1) * (arr2[i] - mean2);
return sum / (n - 1);
}
int main() {
float arr1[] = {65.21, 64.75, 65.26, 65.76, 65.96};
int n = sizeof(arr1) / sizeof(arr1[0]);
float arr2[] = {67.25, 66.39, 66.12, 65.70, 66.64};
int m = sizeof(arr2) / sizeof(arr2[0]);
if (m == n)
cout << covariance(arr1, arr2, m);
return 0;
}
আউটপুট
-0.0580511
ব্যাখ্যা
নেগেটিভ কোভ্যারিয়েন্স মানে একটি বেড়লে অন্যটি কমতে রয়েছে (উল্টা সম্পর্ক)।
জটিলতা
- সময়: O(n)
- স্থান: O(1)