Διακύμανση και τυπική απόκλιση δείγματος στη C++

Αν x είναι διάνυσμα τιμών τότε η διακύμανση ορίζεται ως

$$ s^2 = \frac{1}{N-1} \sum_{i=1}^N (x_i - \bar{x} )^ 2 $$

Ενώ η τυπική απόκλιση ως:

$$ s = \sqrt{\frac{1}{N-1} \sum_{i=1}^N (x_i - \overline{x})^2 $$

Παρακάτω δίνεται ένα απλό πρόγραμμα υπολογισμού διακύμανσης και τυπικής απόκλισης (του δείγματος με άγνωστες τις αντίστοιχες ποσότητες του πληθυσμού):

#include <iostream>
#include <math.h>

#define N 5

using namespace std;

int main()
{
    int i;
    double x[N] = {1.3, 2.2, 3.4, 4.3, 5.0};

    
    double sumx=0, avex, std, var;
 
    for (i=0; i < N; i++)
    {
        sumx  += x[i];
    }
    avex = sumx / N;

    for (i=0; i < N; i++)
    {
        var += (x[i]-avex) * (x[i]-avex);
    }
    var *= (1.0/(N-1));
    std  = sqrt(var);
             
    cout << "var = " << var << endl;
    cout << "std = " << std << endl;
          
    return 0;
}

Μεταγλώτιση και εκτέλεση:

astavrak@apollonia:~$ g++ progra.cpp
astavrak@apollonia:~$ ./a.out 
var = 2.273
std = 1.50765

Συνδεθείτε για περισσότερες δυνατότητες αλληλεπίδρασης,
σχολιασμοί, εξωτερικοί σύνδεσμοι, βοήθεια, ψηφοφορίες, αρχεία, κτλ.

Creative Commons License
Εκπαιδευτικό υλικό από τον Αθανάσιο Σταυρακούδη σας παρέχετε κάτω από την άδεια Creative Commons Attribution-NonCommercial-ShareAlike 4.0 License.
Σας παρακαλώ να ενημερωθείτε για κάποιους επιπλέον περιορισμούς
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=401.