Sunteți pe pagina 1din 6

15.

CALCULE NUMERICE CU POLINOAME


în acest capitol se prezintă funcţiile MATLAB pentru evaluarea polinoamelor,
calculul derivatei polinoamelor, generarea polinoamelor, când se cunosc rădăcinile,
precum şi descompunerea acestora în fracţii simple. Funcţiile MATLAB pentru calcule
cu polinoame sunt:
conv Calculează produsul a două polinoame;
deconv Calculează catul şi restul împărţirii a două polinoame;
poly Calculează coeficienţii unui polinom cu rădăcinile date;
polyval Evaluează un polinom la valorile precizate ale variabilei;
polyder Calculează derivata polinoamelor;
polyfit Aproximează un set de date cu un polinom de grad n;
residue Descompune în fracţii simple raportul a două polinoame;
roots Calculează rădăcinile unui polinom.

Polinomul este o funcţie cu o singură variabilă, care poate fi exprimat sub


următoarea formă generală :
f(x) = a,xN +a,xN~1 +a3xN~2+...+aN_1x2 -na^n-a^
unde x este variabila, iar a-,, a2l ..., aN+1 sunt coeficienţii polinomului. Gradul polinomului
este egal cu cea mai mare valoare a exponentului.
în sintaxa MATLAB polinoamele sunt reprezentate cu un vector linie care conţine
coeficienţii în ordinea descrescătoare a puterilor variabilei. Coeficienţii polinomului au indicii
de la 1 la N+1. Spre exemplu, reprezentarea în MATLAB a polinomului:
h(x) = x2 +2x2 +0.5X-6.5 este
dată de vectorul:
h=[1 2 0.5 -6.5]

15.1. Evaluarea polinoamelor


în MATLAB există mai multe metode pentru evaluarea polinoamelor. Vor fi
exemplificate, cu polinomul:
f(x) = 3x 4 -x 3 +x-l
Cea mai simplă metodă este evaluarea cu scalari, adică pentru o singură valoare
a variabilei. Se efectuează operaţiile cu scalari, ca în exemplul: x = l ;
f =3*x A 4 -x A 3+x-l
obţinându-se rezultatul: f= 2
A doua metodă constă în evaluarea polinomului în mai multe puncte. în acest
caz se efectuează operaţii cu tablouri. Programul se execută mai rapid decât ansamblul
calculelor pentru fiecare valoare scalară în parte. Sintaxa evaluării presupune în acest
caz plasarea unui punct înaintea operatorilor înmulţire, împărţire sau ridicare la putere.
Dimensiunea matricei în care se returnează valorile polinomului este identică cu cea a
matricei care conţine punctele în care se face evaluarea. Evaluarea polinomului f(x) în
punctele-2, O 1, 2.5 3, se face cu secvenţa MATLAB:
x=[-2 0 1 2 . 5 3] ;
f=3*x."4-x."3+x-l
obţinându-se rezultatul:
f = [ 53.0000 -1.0000 2.0000 103.0625 218.0000]
A treia metodă de evaluare a polinoamelor constă în utilizarea funcţiei polyval;
se apelează cu sintaxa:
f=po/yva/(p,s)
Funcţia polyval evaluează polinomul definit de vectorul p, al coeficienţilor
polinomului, în punctul s. Dacă s este vector sau matrice, polinomul este evaluat pentru
fiecare dintre elementele acestuia.
Pentru evaluarea polinomului luat ca exemplu, în punctele -2, 0 1, 2.5 3,
secvenţa MATLAB este următoarea:
p=[3 -l 0 1 -1];
x=[-2 0 1 2.5 3] ;
f=polyval(p,x) iar
rezultatul obţinut este:
f = [ 53.0000 -1.0000 2.0000 103.0625 218.0000]
Pentru evaluarea unui polinom pe un interval, se generează în primul rând un
vector al punctelor de evaluare, cu sau fără pas constant, şi apoi se procedează ca mai
sus. Evaluarea polinomului f(x), definit anterior, în 300 puncte pe intervalul [0, 5], se
poate face cu secvenţa MATLAB:
x=0:5/300:5;
p=[3 - 1 0 1 -1];
f—polyval(p,x)

15.2. Adunarea şi scăderea


Fie două polinoame g(x) şi h(x) ai căror coeficienţi sunt înregistraţi în vectorii
linie g şi h. Operaţiile aritmetice de adunare şi scădere a polinoamelor presupun
adunarea şi scăderea coeficienţilor de acelaşi ordin. Deoarece în MATLAB aceste
operaţii necesită vectori de aceeaşi dimensiune, lungimea vectorilor coeficienţilor este
dată de polinomul cu puterea cea mai mare. Odată stabilită această dimensiune, spre
exemplu M, vectorii coeficienţilor polinoamelor care au puterea maximă N mai mică
decât M vor fi completaţi la stânga cu coeficienţi zero până la M. Spre exemplu, pentru:
g(x) = x4 -3x 2 -x + 2
h(x) = 2x 2 +5x-16
s(x) = g(x) + h(x)
u(x) = g(x)-h(x)
dimensiunea vectorului coeficienţilor va fi 5, iar polinoamele echivalente pentru care se
scriu vectorii coeficienţilor sunt:
g(x) = x 4 +0x 3 -3x : -x + 2
h(x) = 0x4 +(>x3 +2x2 +5X-16 Secvenţa
MATLAB care realizează operaţiile de mai sus este:
g = [ l , 0, -3, -l, 2];
h=[0, O, 2, 5, -16];
s=g+h
u=g-h
obţinându-se rezultatele:
s=[ 1 0 - 1 4-14]
u=[ 1 0 -5 -6 18]
respectiv polinoamele:
s(x) = x4 -x2 +4X-14
Ux) = x4 -5x2 -6x + 18

15.3. înmulţirea şi împărţirea


Multiplicarea unui polinom cu un scalar constă în multiplicarea coeficienţilor
acestuia cu acel scalar.
înmulţirea a două polinoame este echivalentă unei operaţii de convoluţie; este
realizată cu funcţia MATLAB conv, care se apelează cu sintaxa:
c = conv(a, b) unde: a şi b sunt vectorii coeficienţilor
polinoamelor care se înmulţesc;
c este vectorul coeficienţilor polinomului produs c(x)=a(x)b(x).
împărţirea a două polinoame este echivalentă unei operaţii de deconvoluţie;
este realizată cu funcţia MATLAB deconv, care se apelează cu sintaxa:
[ d, r ] = deconv{a,b) unde: - a şi b sunt vectorii coeficienţilor
polinoamelor deîmpărţit şi împărţitor;
- d este vectorul coeficienţilor polinomului cât;
- r este vectorul coeficienţilor polinomului rest, rezultat al operaţiei:
a(x) = d(x)b(x) + r(x)
Pentru ilustrarea modului de utilizare a funcţiilor conv şi deconv la înmulţirea şi
împărţirea polinoamelor, fie calculele:
g(x) = (x2+x-2)(x + l)

Cu notaţiile:
g(x) = gl(x)g2(x)

şi secvenţa MATLAB:
gl=[l 1 -2]; g2=[l 1]; f = [1 2 0 -2 ];
e =[1 0 1]; g= conv(gl,g2) [ h , r]=deconv(f,e)
se obţin rezultatele:
g=[ 1 2 -1 -2]
h=[ 1 2]
r=[ 0 0 -1 -4]
care reprezintă polinomul produs:
g(x) = x 3 +2x 2 -x-2
polinomul cât:
h(x) = x + 2
şi restul:
r(x) = -x-4

15.4. Descompunerea în fracţii simple


Prin descompunere în fracţii simple se înţelege scrierea raportului a două
polinoame ca sumă de fracţii cu polinoame de ordinul unu:

Dacă polul p(j) este de ordinul m, descompunerea conţine termeni de forma:

Funcţia MATLAB residue se apelează cu sintaxa:


[r,p,k]=res/due(B,A)
unde:
A, B - vectorii linie ai coeficienţilor polinoamelor numitor şi numărător, în ordinea
descrescătoare a puterilor variabilei; r -
vectorul coloană al rezidurilor; p - vectorul
coloană al polilor; k - vectorul linie al termenilor
liberi. Dacă funcţia residue se apelează cu
sintaxa:
[B, A]=residue(r, p, k)
se returnează coeficienţii polinoamelor B şi A, numărător şi numitor, al căror raport are
rezidurile r, polii p şi termenii liberi k.

Exemplul 15.4.1. Să se descompună în fracţii simple expresia:

Cu secvenţa MATLAB:
B=[l 2 0 -2 ] ; A=[l 0 1]; [ r ,
p, k]=residue ( B , A) se obţin rezultatele:
r= p= k=
-0.5000 + 2.0000i 0 + 1.0000i 1 2
-0.5000 - 2.0000i 0-1.0000i
care reprezintă următoarea descompunere în fracţii simple:
15.5. Calculul derivatei
Derivata unui polinom în MATLAB utilizează funcţia polyder, care se apelează
cu sintaxa:
D=polydeiiC)
unde C este vectorul linie al coeficienţilor polinomului, în ordinea descrescătoare a
puterilor variabilei, iar D este vectorul linie al coeficienţilor polinomului derivat. Apelată
cu sintaxa:
D=polyder{A,B) funcţia polyder returnează în vectorul D coeficienţii
derivatei polinomului produs AB:
D(x) = (A(x) • B(x)) = A'(x) • B(x) + A(x) • B'(x)
Apelată cu sintaxa:
[M,N]=polyder{A,B)
funcţia polyder returnează în vectorii M şi N coeficienţii numărătorului şi numitorului
derivatei raportului polinoamelor A/B:

Exemplul 15.5.1. Fie polinoamele:


A(x) = x 2 +2x-l
B(x) = x-1
Calculaţi derivatele polinoamelor:
Ad(x) = A'(x) Bd(x) = B'(x)

Cu secvenţa MATLAB:
A=[ 1 2 -1]; B=[ 1 -1];
Ad=polyder(A)
Bd=polyder(B)
Cd=polyder(A,B)
[M, N]=polyder(A,B)
se obţin rezultatele:
Ad = [ 2 2] Bd = 1
Cd = [ 3 2 -3]
M = [ 1 -2 -1 ]
N = [ 1 -2 1 ]
care reprezintă polinoamele:
Ad(x) = 2x + 2 Bd(x)=l

15.6. Calculul rădăcinilor


în acest subcapitol sunt prezentate funcţiile MATLAB pentru calculul rădăcinilor
unui polinom sau pentru calculul coeficienţilor -unui polinom atunci când se cunosc
rădăcinile acestuia.
Dacă funcţia f(x) este un polinom de gradul N, atunci f(x)=O are N rădăcini, care
pot fi reale sau complexe. în cazul în care coeficienţii polinomului sunt numere reale,
rădăcinile complexe sunt în perechi complex conjugate.
Funcţia MATLAB roots determină rădăcinile polinoamelor; se apelează cu
sintaxa:
r=roote(c)
Funcţia MATLAB po/y determină coeficienţii unui polinom ale cărui rădăcini sunt
cunoscute; se apelează cu sintaxa:
c=po/y(r)
în ambele cazuri:
c - este un vector linie, care conţine coeficienţii polinomului, în ordine
descrescătoare a puterilor variabilei; r - este un vector
coloană care conţine rădăcinile polinomului.
Funcţiile roots şi poly sunt funcţii reciproce, realizând trecerea de la coeficienţi la
rădăcini sau de la rădăcini la coeficienţi.

Exemplul 15.6.1. Determinaţi rădăcinile polinomului:


f(x) = x 3 -2x 2 -3x + 10 şi
efectuaţi verificarea rezultatului. Cu secvenţa
MATLAB:
p=[l, -2, -3, 10]; r=roots(p) se obţine
rezultatul: r =
2.0000+ 1.0000Î 2.0000-LOOOOi
-2.0000 Cu secvenţa MATLAB:
c=[l, -2, -3, 1 0 ] ; %coeficientii r=[ 2+i 2-i
- 2 ] ; %radacinile v=polyval ( c , r) se obţine rezultatul
v=[ 0 0 ] .

Exemplul 15.6.2. Să se determine coeficienţii polinomului care are rădăcinile


r=[-1,1,3]. Cu secvenţa MATLAB:
c=poly([-l, 1, 3]') se
returnează vectorul:
c= [1 - 3 - 1 3]
care reprezintă polinomul:
f(x) = x 3 -3x 2 -x + 3

S-ar putea să vă placă și