Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Metod najmanjih kvadrata...problem!

[es] :: C/C++ programiranje :: Metod najmanjih kvadrata...problem!

[ Pregleda: 2076 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Igor_022
Ruma

Član broj: 90096
Poruke: 5
*.smin.sezampro.yu.

Sajt: s2.bitefight.ba/c.php?uid..


Profil

icon Metod najmanjih kvadrata...problem!25.01.2007. u 22:37 - pre 189 meseci
Pozdrav!
Imam problem - treba da napravim klasu koja ce uzeti neke podatke [tacnije stepen trazenog polinoma i dva niza, koja su rezulata nekog ispitivanja] i da na te podatke primenim, u klasi, metod najmanjih kvadrata - polinomalna varijanta. E sada, kod nije kompletan - odradjen je do tacke kada se formiraju matrice MatS [matrica stepena], MatX i MatY [odnosno red rezultata]. Do sada sredjen program odradi posao, ali samo u slucaju da je stepen trazenog polinoma veci ili jednak 3, inace, ako se stavi 1 ili 2 prijavljuje gresku. Gde gresim?
BTW, tek sam poceo da se "igram" sa C++, tako da...sve grdnje, korekcije, savete velikodusno ocekujem

Code:

// MNK.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream.h>
#include <math.h>
#include <stdio.h>
#include <cstdlib>
//using namespace std;


class MetNK
{
private:
    int n; //stepen trazenog polinoma
    int X, Y; //ulazni podaci
    int **elMatS; //pokazivac na int za smestanje elemenata matrice stepena
    int redMatS, kolMatS;
    int **elMatX;//pokazivac na int za smestanje elemenata matrice MatX
    int redMatX, kolMatX;
    int *elMatY;//pokazivac na int za smestanje elemenata matrice MatY, koja je red!
    int redMatY;
    int *elNizX;
    int *elNizY;
    int ulNizX, ulNizY;
    int *uNizX;
    int *uNizY;
    int *nizX, *nizY;
    int brojIsp;
public:
    MetNK(int n,/* int X, int Y,*/ int brIsp);//konstruktor sa: n
    ~MetNK(); //destruktor
    
//    int &elemMatS(int redMatS, int kolMatS);//vraca referencu na trazeni element matrice stepena
    void UzmiUlPod(int brIsp, int *nizX, int *nizY); //uzima podatke ulazne podatke
    void FormMatS();
    void VratiPodatak();

};

MetNK::MetNK(int n,/* int X, int Y*/ int brIsp)
{
    // dinamicki niz pokazivaca u koji se smeste adrese dinamickih nizova
    // od kojih svaki predstavlja po jedan red elemenata matrice 
    redMatS = redMatX = n; 
    kolMatS = kolMatX = n;
    redMatY = brojIsp = brIsp;
    elMatS = new int*[redMatS];
    elMatX = new int*[redMatX];
    elMatY = new int[redMatY];

    elNizX = new int[brojIsp];
    uNizX = new int[brojIsp];
//    nizX = new int[brojIsp];
    uNizY = new int[brojIsp];
//    nizY = new int[brojIsp];

    for (int i(0); i < n; i++)
    {
        elMatS[i] = new int[redMatS];
        elMatX[i] = new int[redMatX];
    }
    this->redMatS = redMatS;
    this->kolMatS = kolMatS;
    this->redMatX = redMatX;
    this->kolMatX = kolMatX;
    this->brojIsp = brojIsp;
    this->redMatY = redMatY;



}

MetNK::~MetNK()
{
    for (int i(0); i < redMatS; i++)
        delete[] elMatS[i];
        delete[] elMatX[i]; // brisanje svih nizova za redove elemenata
    delete[] elMatS; // brisanje niza koji je cuvao adrese tih redova
    
    elMatS = 0; // postavljanje na NULL pokazivac
    elMatX = 0;
    redMatS = kolMatS = 0;
    redMatX = kolMatX = 0;
}

void MetNK::UzmiUlPod(int brIsp, int *nizX, int *nizY)
{
//    brojIsp = brIsp;
    int index (0);
    for (int i(0); i < brojIsp; i++)
    {
        uNizX[i]=nizX[i];
        uNizY[i]=nizY[i];
    }
}

void MetNK::VratiPodatak()
{
    cout << elMatX[3][3]+1;
}

void MetNK::FormMatS()
{
    // formiranje matrice stepena:
    for (int red(0); red < redMatS; red++)
    {
        int suma = red;
        int rezsuma = suma;
        for (int kol(0); kol < kolMatS; kol++)
        {
            suma = suma + kol;
            elMatS[red][kol] = suma;
            suma = rezsuma;
            cout << elMatS[red][kol] << "\n"; //visak
        }
    }

    // formiranje matrice MatX:
    for (int red1(0); red1 < redMatX; red1++)
    {
        for (int kol1(0); kol1 < kolMatS; kol1++)
        {
            int suma = 0;
            int stepen = elMatS[red1][kol1];
            for (int redx(0); redx < brojIsp; redx++)
            {
                suma = suma + pow(uNizX[redx],stepen);
            }
            elMatX[red1][kol1] = suma;
            cout << elMatX[red1][kol1] << "\n"; //visak
        }
    }

    //formiranje matrice MatY:

    for (int red2(0); red2 < redMatY; red2++)
    {
        int sumY = 0;
        for (int kol2(0); kol2 < brojIsp; kol2++)
        {
            sumY = sumY + uNizY[kol2]*pow(uNizX[kol2],red2);
        }
        elMatY[red2] = sumY;
        cout << elMatY[red2] << "\n"; //visak
    } 
}


int main()//int argc, char* argv[])
{    
    int step;
    int DNizX, DNizY;
    int UlazX[]={1,2,3,4,5,6};
    int UlazY[]={2,6,8,15,28,50};
    DNizX = sizeof(UlazX)/sizeof(UlazX[0]);
    DNizY = sizeof(UlazY)/sizeof(UlazY[0]);

    if (DNizX != DNizY) //kontrola broja ispitivanja
    {
        cout << "Nije isti broj ispitivanja i rezulata! \n";
        return 0;
    };
    

     cout << "Unesi stepen aproksimacionog polinoma: ";
    cin >> step;
    step = step + 1;
    MetNK *M = new MetNK(step, DNizX);
    M->UzmiUlPod(DNizX, UlazX, UlazY);
    M->FormMatS();
    M->VratiPodatak();
    return 0;
}


If you hate a person, you hate something in him that is part of yourself. What isn't part of ourselves doesn't disturb us.
 
Odgovor na temu

Igor_022
Ruma

Član broj: 90096
Poruke: 5
*.smin.sezampro.yu.

Sajt: s2.bitefight.ba/c.php?uid..


Profil

icon Re: Metod najmanjih kvadrata...problem!27.01.2007. u 17:51 - pre 189 meseci
Reseno

If you hate a person, you hate something in him that is part of yourself. What isn't part of ourselves doesn't disturb us.
 
Odgovor na temu

Devious

Član broj: 30352
Poruke: 15
*.sava.sczg.hr.



Profil

icon Re: Metod najmanjih kvadrata...problem!29.01.2007. u 13:01 - pre 189 meseci
super :D
 
Odgovor na temu

[es] :: C/C++ programiranje :: Metod najmanjih kvadrata...problem!

[ Pregleda: 2076 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.