14. Matlab – polynómy

04. September, 2009, Autor článku: Blaho Michal, MATLAB/Comsol
Ročník 2, číslo 9 This page as PDF Pridať príspevok

Jednou zo základných a často využívanou oblasťou matematiky sú polynómy. Ich využitie sa často spája s interpoláciou, alebo aproximáciou. Matlab obsahuje niekoľko funkcií na uľahčenie výpočtov a práce s polynómami. Práve polynómom bude venovaná dnešná časť nášho seriálu.

Skôr ako začneme s polynómami v Matlabe pracovať, zopakujeme si čo je to polynóm (pozn. niekedy sa označuje aj mnohočlen). Polynóm je výraz v tvare:

p(x) = \sum_{i=0}^{n} a_{i}x^{i} = a_{0}x^{0} + a_{1}x^{1} + . . . +a_{n}x^{n} (1)

a platí, že člen an je rôzny od nuly. Čísla a0, a1 až an sa nazývajú koeficienty polynómu.

Matlab reprezentuje polynómy ako riadkové vektory, ktoré obsahujú koeficienty usporiadané pomocou klesajúcich mocnín. Napríklad:

p(x) = x^3 - 2x -5 (2)

bude v Matlabe reprezentovaný vektorom:

>>p=[1 0 -2 -5]

Za premennú x môžeme dosadzovať ľubovoľné čísla (aj komplexné). Funkcia polyval vypočíta funkčnú hodnotu polynómu pre nami zvolenú hodnotu premennej x.

>>hod=polyval(p,5)

hod = 110

Všetky hodnoty premennej x, pri ktorých platí:

p(x) = a_{0}x^{0} + a_{1}x^{1} + . . . +a_{n}x^{n} = 0 (3)

sa nazývajú korene polynómu. V Matlabe sa korene polynómu vypočítajú pomocou funkcie roots. Podľa dohody sú korene polynómu uložené do sĺpcového vektora

>>r=roots(p)

r =
    2.0946
    -1.0473 + 1.1359i
    -1.0473 - 1.1359i

Inverzná funkcia k funkcii roots je funkcia poly. Funkcia poly vracia koeficienty polynómu, ktorého korene sú zadané ako vstupný argument. Prepočtom medzi funkciami docháza ku chybe, ktorá je väčšinou zanedbateľná, ako je vidno aj na nasledujúcom príklade:

>>p2=poly(r)

p2 = 1.0000 -0.0000 -2.0000 -5.0000

>>format short e
>>p2

p2 = 1.0000e+00 -2.2204e-15 -2.0000e+00 -5.0000e+00

Matlab má vytvorenú funkciu na výpočet derivácie polynómu. Jej výstupom je ďalší polynóm. Deriváciu polynómu získame pomocou funkcie polyder:

>>q=polyder(p)

q = 3 0 -2

Násobenie a delenie polynómov je v Matlabe reprezentované operáciami konvolúcie a dekonvolúcie. Implementácia týchto operácií je pomocou funkcií conv a deconv:

>>a = [1 2 3];
>>b = [4 5 6];
>>c = conv(a,b)

c = 4 13 28 27 18

>>[q,r] = deconv(c,a)

q = 4 5 6

r = 0 0 0 0 0

Polynóm r reprezentuje zvyšok po delení polynómov. Platí teda:

>>c = conv(a,q) + r;

Často je potrebné vedieť parciálny rozklad podielu dvoch polynómov. Využíva sa to v automatizácii, kde sú systémy reprezentované prenosovými funkciami. Ak nemáme viacnásobné korene môžeme napísať:

\frac{b(x)}{a(x)} = \frac{r_1}{x-p_1} + \frac{r_2}{x-p_2} + . . . + \frac{r_n}{x-p_n} + k_s (4)

Parciálny rozklad v Matlabe urobíme pomocou funkcie residue. Pre nasledujúce polynómy je parciálny rozklad nasledovný:

>>b = [-4 8];
>>a = [1 6 8];
>>[r,p,k] = residue(b,a)

r =
    -12
    8

p =
    -4
    -2

k =
    []

Zadaním týchto hodnôt spätne do funkcie residue získame podiel polynómov:

>>[b2,a2] = residue(r,p,k)

b2 = -4 8

a2 = 1 6 8

Ako sme už na začiatku spomínali, pomocou polynómov môžeme aproximovať funkciu resp. jej funkčné hodnoty. Znamená to, že sa snažíme nájsť také koeficienty polynómu, ktoré zabezpečia funkčné hodnoty polynómu čo najbližšie k funkčným hodnotám aproximovanej funkcie. Funkcia polyfit hľadá takéto koeficienty polynómu. Vstupné vektory obsahujú súradnice bodov, ktoré sa snažíme aproximovať (prvý a druhý parameter) a najvyšší rád polynómu (tretí parameter) :

>>x = [1 2 3 4 5];
>>y = [5.5 43.1 128 290.7 498.4];
>>p = polyfit(x,y,3)

p = -0.1917 31.5821 -60.3262 35.3400

Funkcia poly počíta aj koeficienty charakteristického polynómu matice. Príkazom roots potom môžeme vypočítať korene charakteristickej rovnice, ktoré sa inač nazývajú vlastné čisla (môžeme ich získať príkazom eig).

>>A = [1.2 3 -0.9; 5 1.75 6; 9 0 1];
>>poly(A)

ans = 1.0000 -3.9500 -1.8500 -163.2750

Základné funkcie pre prácu s polynómami získame príkazom:

>>help polyfun

My si ich zhrnieme do nasledujúcej tabuľky:

Funkcia Popis
conv násobenie polynómov
deconv delenie polynómov
poly polynóm so zadanými koreňmi
polyder derivácia polynóma
polyfit interpolácia polynómom
polyval hodnota polynómu
polyvalm hodnota polynómu pre maticový zapis
residue parciálny rozklad polynómu
roots korene polynómu

Tab. 1 Funkcie pre prácu s polynómami

Napísať príspevok