Avatar billede shadowdude165 Nybegynder
27. november 2008 - 16:17 Der er 10 kommentarer og
1 løsning

Lineær regression

hejsa - siden jeg fik så god hjælp sidste gang, kunne jeg godt tænke mig at spørge om noget andet :)

Jeg er i igang med at lave en program i c++ der kan udregne simple lineær funktioner vha numerisk regression. Det gøres ved nogen punkter man selv vælger (også antallet af dem).
Til det skal man lave en værdi der ganger det ene x koordinat med den ene y kordinat og plusser med de andre .. altså således

x_1*y_1+x_2*y_2+x_3*y_3+x_4*y_4 ..... dog kan jeg slet ikke få det til at virke. Nedenfor kan i se det kode jeg har nu, jeg har ikke indtastet mit forsøg for at lave det jeg spørger om, da det failede totalt :)

#include <cstdlib>
#include <iostream>
#include <sstream>

using namespace std;

int kontrol(string);

int main(int argc, char *argv[])
{
    int antalPunkter = kontrol("Indtast antallet af punkter");
   
    float punkter[antalPunkter*2];

    for(int i = 0; i < antalPunkter*2; i++)
    {
            char type;
            if(i % 2 == 0)
            {
                type = 'x';
            }
            else
            {
                type = 'y';
            }
            cout << "Indtast " << i/2+1 << ". koordinats " << type << "-vaerdi";
            punkter[i] = kontrol("");
           
    }

    system("PAUSE");

    float middelvaerdix = 0;
    float middelvaerdiy = 0;
   
    for(int i = 0; i < antalPunkter*2; i++)
    {
        if(i % 2 == 0)
        {
              middelvaerdix += punkter[i];
        }
        if(i % 2 != 0)
        {
            middelværdiy += punkter[i];
        }
    }

    cout << "middelværdi for x'erne = " << middelvaerdix/(antalPunkter) << endl;
cout << "middelværdi for y'erne = " << middelvaerdiy/(antalPunkter) << endl;
   
    system("PAUSE");
    return EXIT_SUCCESS;
}

int kontrol(string opgave) {
  bool fejl;
  int tal = 0;
  string input;
  do {
  fejl = false;
  cout << opgave << endl;
  cin >> input;
  stringstream ss(input);

  if((ss >> tal).fail()) // Hvis strengen ikke er et gyldigt tal.
  {
    cout << endl << "Det indtastede er ikke gyldigt. Proev venligst igen." << endl;
    fejl = true;
  }
  if(tal < 2) // Hvis tallet er for lille.
  {
    cout << endl << "Det indtastede tal er for hoejt. Proev venligst igen." << endl;
    fejl = true;
  }
  } while(fejl);
  return tal;
}
Avatar billede arne_v Ekspert
27. november 2008 - 16:28 #1
det lyder som om du skal bruge:

sum = 0;
for(int i = 0; i < antalPunkter; i++)
{
  sum += punkter[2*i]*punkter[2*i+1];
}
Avatar billede arne_v Ekspert
27. november 2008 - 16:30 #2
Når du bruger udtryk som lineær regression for jeg iøvrigt associationer til:

http://en.wikipedia.org/wiki/Linear_regression
http://en.wikipedia.org/wiki/Linear_least_squares
Avatar billede mbulow Nybegynder
27. november 2008 - 16:31 #3
float vaerdi = 0.0f;

for(int i = 0; i < antalPunkter; i++)
{
  vaerdi += (punkter[2*i] * punkter[(2*i)+1]);
}
Avatar billede mbulow Nybegynder
27. november 2008 - 16:33 #4
@arne_v

Hahaha :D
Vi har vidst været temmeligt enige et par gange hva' :)
Avatar billede shadowdude165 Nybegynder
27. november 2008 - 20:51 #5
takker igen ..
dog kan jeg ikke rigtig finde ud af at give de points jeg har udlovet væk, jeg ved man skal acceptere eller afvise, men boksen ser ikke ud til at gøre noget .. lidt weird.
Avatar billede arne_v Ekspert
27. november 2008 - 21:02 #6
Vi skal først lægge nogle svar. Her er fra mig.
Avatar billede mbulow Nybegynder
27. november 2008 - 21:04 #7
Og fra mig.
Avatar billede arne_v Ekspert
27. november 2008 - 21:20 #8
Øh - var det med vilje at jeg fik alle point ??
Avatar billede mbulow Nybegynder
27. november 2008 - 21:24 #9
Det er helt iorden med mig :)

Det var trods alt dig som kom først med svaret :)
Avatar billede shadowdude165 Nybegynder
28. november 2008 - 21:57 #10
ah okay, vidste ikke at man kunne dele pointene, så jeg tænkte siden du svarede først måtte det være fair.
Avatar billede arne_v Ekspert
28. november 2008 - 22:09 #11
Det kan man godt.

Men vi korrigerer lige.

http://www.eksperten.dk/spm/854592
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester