Skocz do zawartości

[BCB6] Wykres w TChart


barti82

Polecane posty

Witam, tym razem mam problem z wrysowaniem do TChart linii regresji liniowej, mam ja policzona jak to bedzie pokazane w kodzie ponizej tylko problem jest taki ze wykres nie jest linia prosta a polaczeniem kolejnych pktow, ktore nie wiem czemu nei leza na linii prostej, jesli ktos wie dlaczego i co poprawic bede wdzieczny smile.gif
Wzor funkcji do ktorej robiona byla regresja log(n) = log®*df, gdzie n - ilosc czastek, r - promien, df - wymiar fraktalny jesli kogos interesuje smile.gif
Kod regresji:
Pascal
tab_x[w] = log; //zapis do tablic nowych x i y
tab_n[w] = log(n);
i=0;
while (i<w) //algorytm regresji konczacy sie...
{
suma1 = suma1 + tab_x[w]*tab_n[w]; //suma x*y
suma2 = suma2 + tab_x[w]; // suma x
suma3 = suma3 + tab_n[w]; // suma y
suma4 = suma4 + tab_x[w]*tab_x[w]; // suma x^2
i++;
}
srednia1 = suma1/(w+1);
srednia2 = suma2/(w+1);
srednia3 = suma3/(w+1);
srednia4 = suma4/(w+1);
srednia5 = srednia2*srednia2; // (srednia x)^2
w++;


Kod ten wykonuje sie co pewien czas, gdy przybedzie kolejna ilosc czastek, srednia tak gdzies co 10 cykl glownej petli programu.

Pozniej gdy uzytkownik chce zobaczyc wykres i klika na odpowiedni Button robi sie dalsza czesc kodu:
Pascal
Dane->Wykr->Series[1]->Clear();
a = ((srednia1-(srednia2*srednia3))/(srednia4-srednia5));
b = srednia3-a*srednia2;


i=0;
while (i < w)
{
wykr_x = tab_x[i];
y = a*wykr_x+b;
Dane->Wykr->Series[1]->Add(wykr_x,log(y),clBlack);
i++;
}


gdzie a i b to wspolczynniki regresji, i jak juz mowilem wykresem nie jest linia prosta a lamana :/ i nei wiem dlaczego, z gory dziekuje za pomoc! smile.gif

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...