izračunaj z metodo najmanjših kvadratov

O matematiki, številih, množicah in računih...
Odgovori
lol pain
Prispevkov: 34
Pridružen: 14.1.2014 15:23

izračunaj z metodo najmanjših kvadratov

Odgovor 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

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: izračunaj z metodo najmanjših kvadratov

Odgovor 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)

lol pain
Prispevkov: 34
Pridružen: 14.1.2014 15:23

Re: izračunaj z metodo najmanjših kvadratov

Odgovor 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

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: izračunaj z metodo najmanjših kvadratov

Odgovor 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.

lol pain
Prispevkov: 34
Pridružen: 14.1.2014 15:23

Re: izračunaj z metodo najmanjših kvadratov

Odgovor 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

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: izračunaj z metodo najmanjših kvadratov

Odgovor 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.

lol pain
Prispevkov: 34
Pridružen: 14.1.2014 15:23

Re: izračunaj z metodo najmanjših kvadratov

Odgovor Napisal/-a lol pain »

Hvala za Vaš odgovor!

Odgovori