Metoda najmniejszych kwadratów

0

Cześć ma może ktoś w pascalu napisane rozwiązywanie funkcji y=ax+b tzn. wyszukiwanie współczynników a i b z zadanych x,y Metodą najmniejszych kwadratów.
Jakby ktoś miał , byłbym wdzięczny za przesłanie na [email protected].
Z góry dziekuje.

0

wiesz ze zrobie to inna metoda :) i jedno jest niestety :( bedzie trzeba podac wykres funkcji

np.
y=3x+2

juz sie za to zabieram niew iem czy mi sie uda ale... :)

0

cos zchrzanilem bo robie od poczatku dopiero teraz dokladnie rpzeczytalem twoj post :)

0

ble ;( a jednak mi sie nie udalo :( [glowa] [glowa] [glowa] [zawstydzony] [niepowiem]

0

Co znaczy metodą najmniejszych kwadratów?

Wzór funkcji liniowej y=ax+b można znaleźć mając dwa punkty na wykresie x1,y1 oraz x2,y2. Wystarczy ułożyć układ równań.

y1=ax1+b
y2=a
x2+b

Dwa równania - dwa niewiadomowe a i b - układ można rozwiązać. Przeżucając na TP możemy zastosować:

VAR
a,b,x1,y1,x2,y2,s,d:integer;
BEGIN

x1:=3; //x i y dla przykładu podaje
x2:=6;
y1:=2;
y2:=0;

s:=-1000;
d:=-1000;

REPEAT
s:=s+1;
REPEAT
d:=d+1;
UNTIL ((y1=ax1+b) AND (y2=ax2+b)) OR (d>=1000);
UNTIL ((y1=ax1+b) AND (y2=ax2+b)) OR (s>=1000);

i gotowe :)

Oczywiście w/w przykład działa tylko na liczbach całkowitych z przedziału -999 do 1000. Jak ktoś chce lepszą procedure niech zwiększy przedział, a zamiast integer zastosuje REAL - no i wtedy zamiast 1, mozna mniejszą przedzałkę REPEAT stosować. (np. 0.001). Ale w takiej sytuacji marny los komputera... :)

0

Wzór funkcji liniowej y=ax+b można znaleźć mając dwa punkty na wykresie x1,y1 oraz x2,y2. Wystarczy ułożyć układ równań.

y1=ax1+b
y2=a
x2+b

A nie lepiej tak:

a = (x2 - x1)/(y2 - y1)
b = y1 - a*x1

--
Vogel [[email protected]]

Life is just a dream, you know...
[Cowboy Bebop]

0

Jak się nie mylę to chodzi tu o prostą regresji liniowej, a to wymaga przepatrzenia wszystkich punktów jakie mamy dostępne!

Ja wyliczałem nachylenie dla kolejnych par punktów i brałem z tego średnią. Mając średnie nachylenie obliczałem dla każdego punktu z wartość wyrazu wolnego i też uśredniałem. Chodziło pięknie! powodzenia [cya]

0

Jezus Maria, Detox, najmniejsze kwadraty iteracyjnie!??

Vogel, przywracasz mi wiarę w ludzi :-) :-)

jesli y=ax+b i mamy n par (x,y) to

a=(nSUM(xy)-SUM(x) SUM(y)) / (nSUM(x2)-(SUM(x))2)

b=(SUM(y)/n - a*SUM(x)/n)

SUM (x*y) oznacze sume wszystkich iloczynow odpowiadajacych sobie x i y. Reszty mozna sie domyslec.

--
Pawel {Delphi 6 Personal}

Po pierwsze: naciśnij F1

1 użytkowników online, w tym zalogowanych: 0, gości: 1