Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

Lineaarisessa

...

regressiossa

...

sovitetaan

...

suora

...

pistejoukkoon.

...

Monesti

...

mitattava

...

data

...

on

...

kohinaista

...

ja

...

tapahtumaa

...

kuvaava

...

suora

...

on

...

"haettava"

...

pisteiden

...

seasta.

{
Code Block
}
double Statistic::LineFit(const double *const x, const double *const y, const size_t n, double *m, double *b)
{
    int error = 0;
    double sumx = 0, sumy = 0, sumx2 = 0, sumxy = 0;
    double dn = (double) n;
    size_t i;
    if (n <= 1)
    {
        *m = 0;
        *b = 0;
        error = 1;
    }
    else
    {
        double divisor;
        error = 0;
        for (i = 0; i < n; i++)
        {
            sumx += x[i];
            sumy += y[i];
            sumx2 += (x[i] * x[i]);
            sumxy += (x[i] * y[i]);
        }
        divisor = (sumx2 - ((sumx * sumx) / dn));
        if (divisor != 0)
        {
            *m = (sumxy - ((sumx * sumy) / dn)) / divisor;
            *b = (sumy - ((*m) * sumx)) / dn;
        }
        else
        {
            *m = 0;
            *b = 0;
            error = 2;
        }
    }
    return *m;
};

Code Block
{code}
{code}
 int main()
{
// exact line:
double          x0[] =
{-1, 0, 1, 2, 3};
double          y0[] =
{-1, 0, 1, 2, 3};

// noisy line:
double          x1[] =
{-1.1, 0.01, .9999, 1.99998, 3.01};
double          y1[] =
{-1.02, -.00001, 1.002, 1.99872, 2.999973};
    size_t          length = sizeof x0 / sizeof x0[0];
    double          m;
    double          b;
    linfit(x0, y0, length, &m, &b);
    printf("Slope is %f, intercept is %f\n", m, b);
    linfit(x1, y1, length, &m, &b);
    printf("Slope is %f, intercept is %f\n", m, b);
    cin.get();
    return 0;
}
{code}