Stran 1 od 1

izračunaj z metodo najmanjših kvadratov

Objavljeno: 14.1.2014 15:47
Napisal/-a lol pain
Pozdravljeni !
Mene pa zanima, kako se z metodo najmanjših kvadratov izračuna y=sqrt(A*x+bx^2),

Če računaš naprimer y=A*e^(B*x) moraš logaritmirati in dobiš ln(y)=ln(A)+Bx (linearna oblika). Nato pretvoriš podatke v ustrezno obliko in jih obravnavaš kot y in x (y=ln(y) in x=x).
Nato s formulo izračunaš B in iz njega A, ki je ln(A). To antilogaritmiraš in dobiš A, ki ga iščeš. Nato A in B vstaviš v prvotno enačbo in je rešitev pravilna.

Pri korenu pa sem sprva kvadriral in nato delil z x in za y upošteval y=(y^2)/x, za x pa x=x ter s formulama izračunal A in B, vendar je bila rešitev napačna.
Prosil bi, če mi lahko kdo pomaga, kako se rešujejo malo težji primeri kot je ta.

Če pa imate še čas bi vas pa prosil še za pomoč pri y=1/(A*x+B*x^3).


Hvala za odgovore!

LP

Re: izračunaj z metodo najmanjših kvadratov

Objavljeno: 14.1.2014 16:07
Napisal/-a Aniviller
Aha če prav razumem, hočeš linearizirat in spremenljivke zamenjat, da lahko fitaš premice gor (metoda najmanjših kvadratov namreč velja za poljubno fitanje, ne samo za premice).

Razen, če imaš kakšne negativne y, bi moral biti tvoj postopek pravilen. Že enačba
y^2=Ax+bx^2
je linearna v parametrih A in b, in bi jo v principu lahko v tej obliki rešil, samo sklepam, da hočeš še bolj specifičen primer, pri katerem je en člen prost brez spremenljivke. Tako da res v tem primeru pišeš
(y^2/x)=A+bx
in imaš rešitev. Seveda moraš pa računat s tem, da če fitaš kar tako v prazno brez upoštevanja napak, potem vsaka transformacija rahlo spremeni rešitev, ker nekatere točke postanejo bolj pomembne kot druge (razen, če se krivulja popolnoma natančno ujema - potem ni razlike). Samo, če pri menjavi spremenljivk transformiraš tudi napake, bo prišel rezultat res isti ne glede na transformacijo. Ti samo nariši, če je rezultat smiseln (če nekako gre tam, kjer bi tudi sam potegnil krivuljo).
Recimo to zgornjo lahko preoblikuješ tudi v
y^2/x^2=b+A*(1/x)

Zadnja seveda podobno. Daš na -1, da odpraviš nezaželjeni ulomek:
1/y=A*x+B*x^3
to je že linearno, če hočeš pa prav prosti člen, pa spet izpostaviš še x:
1/(xy)=A+B(x^2)

Re: izračunaj z metodo najmanjših kvadratov

Objavljeno: 14.1.2014 19:26
Napisal/-a lol pain
Hvala za odgovor!

Celotna naloga se glasi:

Naslednje podatke aproksimiraj po metodi najmanjših kvadratov z dano funkcijo.
Podatki:
x y
0,5 0,10
1 1,51
2 2,45
3 3,21

Funkcija je: y=sqrt(A*x+B*x^2)

Rezultata sem dobil A=0,25, B=1,19.

Rešitvi pa sta: A=-0,23, B=1,38.

Takšen rezultat sem dobil pri računanju (y^2)/x=A+B*x.

Sedaj ko imate podatke bi Vas prosil, če bi lahko malo poračunali (če imate čas) in mi povedali Vaš rezultat.

Za A in B sem uporabil formuli A=povprečje(y)-B*povprečje(x), B=(povprečje(x*y)-povprečje(x)*povprečje(y))/(povprečje(x^2)-povprečje(x)*povprečje(x)).

Še enkrat hvala za odgovor.

LP

Re: izračunaj z metodo najmanjših kvadratov

Objavljeno: 14.1.2014 19:57
Napisal/-a Aniviller
Ma ja, če narišeš, vidiš, da oboje izgleda sprejemljiva rešitev. To je ravno tisto, kar sem ti rekel: transformacija spremenljivk spremeni uteži (napake) podatkov, in s tem pride malenkost drugačna rešitev. Podatki se itak zelo slabo prilegajo tej krivulji.

To, kar je podano, je po moje rešitev nelinearnega fitanja v osnovni netransformirani obliki. Meni gnuplot da a=-0.223, b=1.377. Če preoblikujem, in fitam za y^2 in x, pride a=1.43 in b=0.68. Če fitam za y^2/x in x pa pride a=0.24 in b=1.19, praktično isto kot tebi. To je zato, ker je ujemanje tako slabo, da so napake ogromne in se še toliko bolj pozna efekt transformacije, če kar naenkrat . Če bi se delalo korektno in se poračunalo še napake parametrov a in b, bi se videlo, da sta zelo kolerirana in zelo nezanesljivo določljiva, v zadnjem primeru mi je recimo vrnilo a=0.24 +- 367%, kar si lahko predstavljaš da je hudo.

Re: izračunaj z metodo najmanjših kvadratov

Objavljeno: 14.1.2014 20:30
Napisal/-a lol pain
Hvala za odgovor!
Imam samo še eno vprašanje.

Ali obstajajo tudi kakšni enačbi za A in B za nelinearno fitanje (kot pri linearnem) ali moraš računati z matrikami?

LP

Re: izračunaj z metodo najmanjših kvadratov

Objavljeno: 14.1.2014 20:47
Napisal/-a Aniviller
Ravno matrike so za linearne probleme. To, kar si ti računal, je samo v naprej poračunano za 2 spremenljivki in za funkciji 1 in x, ki stojita zraven. Pravzaprav je lepše zapisat v matrični obliki, je bolj pregledno, ta obrazec, ki si ga ti uporabljal ti niti ne pove od kod vse to pride.

Nelinearno se pa rešuje ponavadi s splošnimi minimizacijskimi metodami (minimizacija je zelo pogosta v najrazličnejših problemih - cela fizika recimo stoji na minimizaciji energije in podobno). Zelo na grobo rečeno delaš tole: izbereš začetni približek, v okolici te točke aproksimiraš funkcije z linearnimi funkcijami, rešiš ta problem, in dobljeno rešitev vzameš kot boljši približek in postopek ponavljaš, dokler se rezultat ne ustali.

Ponavadi vse to rešuješ z računalnikom (tudi linearno), kaj več kot a+bx ni pregledno, pa že tukaj je zoprno, če imaš veliko točk.

Re: izračunaj z metodo najmanjših kvadratov

Objavljeno: 14.1.2014 21:00
Napisal/-a lol pain
Hvala za Vaš odgovor!