Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 25. 01. 2010 20:10

mihal11
Příspěvky: 95
Reputace:   -1 
 

aproximace v matlabu

Ahoj,poradte prosim, jaké funkce mi provádějí aproximaci v matlabu.  Našel jsem jen fci polyfit , ale má jich být víc.Děkuji

Offline

  • (téma jako vyřešené označil(a) mihal11)

#2 25. 01. 2010 21:53

Stýv
Vrchní cenzor
Příspěvky: 5702
Reputace:   215 
Web
 

Re: aproximace v matlabu

záleží na tom, co chceš aproximovat;)

Offline

 

#3 26. 01. 2010 15:30

mihal11
Příspěvky: 95
Reputace:   -1 
 

Re: aproximace v matlabu

budu mít vektor bodů X a vektor bodů Y  a mám provést aproximace několika způsoby pomocí fukcí na aproximaci v matlabu.

Offline

 

#4 26. 01. 2010 16:43

Stýv
Vrchní cenzor
Příspěvky: 5702
Reputace:   215 
Web
 

Re: aproximace v matlabu

ne že by ses dokázal srozumitelně vyjádřit, ale zkus se podívat sem: http://www.mathworks.com/access/helpdes … l#f16-6361

Offline

 

#5 19. 03. 2010 13:44

capaliny
Zelenáč
Příspěvky: 15
Reputace:   
 

Re: aproximace v matlabu

↑ mihal11:
V zimním semestru jsme se naučili používat funkci LINREGRESE (resp. LINEST v anglické verzi Excelu), která pomocí metody nejmenších čtverců vypočítala koeficienty přímky (y = m1x1 + m2x2 + ... + b), která nejlépe odpovídala zadaným datům (y, x1, x2...). Kromě vypočtených koeficientů funkce uměla vracet i další regresní statistiky. V MATLABu lze samozřejmě data aproximovat také. V případě, že chceme zadaná (naměřená) data aproximovat polynomem n-tého stupně, můžeme to jednoduše provést pomocí funkce polyfit, která používá metodu nejmenších čtverců:

p=polyfit(x,y,n), kde
x je vektor hodnot nezávisle proměnné,
y je vektor hodnot závisle proměnné,
n je stupeň polynomu, jímž chceme aproximovat body [xi,yi] a
p je vektor koeficientů výsledného polynomu P(x), přičemž P(x)=p(1)xn + p(2)xn-1 + ... + p(n)x + p(n+1)

volba stupně polynomu většinou závisí na fyzikální podstatě prolému
pokud pro data délky N použijeme polynom stupně N-1, provádíme aproximaci interpolací (tj. polynom bude procházet všemi body [xi,yi])
pro polynom stupně N (a vyšších) úloha samozřejmě nemá jednoznačné řešení a funkce polyfit hlásí "Warning"


Příklad:chceme aproximovat 8 naměřených hodnot u a v polynomem 2. stupně:

u=[1 1.5 2.1 2.5 3 3.1 3.2 3.5]; % namerena data, nezav. prom.
>> v=[7.8 8.15 8.3 8.25 8.1 8.3 8.35 8.2]; % namerena data, zav. prom.
>> p=polyfit(u,v,2) % koeficienty polynomu 2. stupne pro 'u' a 'v'
p =
   -0.1684    0.8977    7.1150

>> v_aprox=polyval(p,u); % hodnoty polynomu v 'u'
>> S=sum((v_aprox-v).^2) % soucet ctvercu odchylek
S =
    0.0345

>> plot(u,v,'r+') % graf, puvodni data jako cervene krizky
>> hold on % prikreslime dalsi
>> plot(u,v_aprox,'k.-') % graf polynomu jako cerne body spojene carou
>> axis([0.8 3.7 7.7 8.4]) % uprava os
>> title('Data a jejich aproximace parabolou')% nazev grafu
>> legend('data','aproximacni polynom',4) % zobrazime legendu (4 = vpravo dole)

Pokud chceme data aproximovat jinou funkcí než polynomem (např. f(x)=C1.sin(x)+C2.1/x), řešíme danou úlohu pomocí metody nejmenších čtverců (pouze pro modely, které jsou lineární v parametrech!), kdy pro neznámé koeficienty (C1, C2) získáme soustavu lineárních rovnic.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson