Você está na página 1de 5

Polinmios no Matlab 1

Polinmios no Matlab

Representao
No Matlab, um polinmio representado por um vetor-linha contendo os coeficientes do
polinmio em ordem descrescente. Por exemplo, o polinmio de 4
o
grau: x
4
3x
3
+ 10x
2
7x -
48 representado pelo vetor:

p = [1 3 10 7 48]

Razes
Para calcular as razes de um polinmio utiliza-se o comando roots:

>> r = roots(p)

r =
0.8995 + 3.3273i
0.8995 - 3.3273i
2.6984
-1.4973

que, para o exemplo, apresenta duas razes reais (2,6984 e 1,2973) e duas razes complexas
(0,8995 + i 3,3273 e 0,8995 i 3,3273).

Se forem conhecidas as razes de um polinmio, ento o comando poly retorna os coeficientes
desse polinmio:

>> poly(r)

ans =
1.0000 -3.0000 10.0000 -7.0000 -48.0000

Observe que neste exemplo, os valores so os coeficientes do vetor p.
Entretanto, se o argumento de poly() for uma matriz quadrada, ento este comando retorna os
coeficientes do polinmio caracterstico dessa matriz.

Exemplo:
>> A = [1 2 3; 4 5 6; 7 8 9];
>> pp = poly(A)

pp =
1.0000 -15.0000 -18.0000 0.0000

Os valores do vetor pp correspondem aos coeficientes do polinmio caracterstico da matriz [A].
Lembrando que, para este exemplo, o polinmio caracterstico calculado como segue:

[ ] [ ] ( ) =



= 18 15
9 8 7
6 5 4
3 2 1
I A det
2 3


Polinmios no Matlab 2
de forma que os valores do vetor pp so, de fato, os coeficientes do polinmio caracterstico de
[A] como mostrado no clculo anterior. Assim, para se obter os autovalores de [A], basta
calcular as razes de pp:

>> lambda = roots(pp)

lambda =
16.1168
-1.1168
0.0000


Produto de polinmios
Se tivermos dois polinmios y1 e y2 e quisermos calcular o produto y1*y2, utiliza-se o comando
conv:

>> y1 = [1 1 9]

y1 =
1 1 9

>> y2 = [2 -4 0 1]

y2 =
2 -4 0 1

>> conv(y1,y2)

ans =
2 -2 14 -35 1 9

O resultado da operao conv(y1,y2) contm os coeficientes do polinmio:

9 x x 35 x 14 x 2 x 2 ) 1 x 4 x 2 ( ) 9 x x (
2 3 4 5 2 3 2
+ + + = + + +

Diviso de polinmios
A diviso de polinmios feita com o comando deconv:

>> z1 = [1 2 1 -3 1]

z1 =
1 2 1 -3 1

>> z2 = [-1 1 3]

z2 =
-1 1 3

>> [q,r] = deconv(z1,z2)

q =
-1 -3 -7

r =
0 0 0 13 22
Polinmios no Matlab 3
No caso da diviso do polinmio (x
4
+ 2x
3
+ x
2
3x + 1) por (- x
2
+ x + 3), o resultado o
polinmio x
2
- 3x 7 com resto igual a 13x + 22. O Matlab retorna dois vetores: o vetor [q],
que contm os coeficientes do quociente, e o vetor [r], que contm os coeficientes do resto da
diviso, de tal forma que:

z1 = conv(q, z2) + r

A operao de diviso de polinmios tambm denominada deconvoluo polinomial.

Expanso em fraes parciais de polinmios
A expanso em fraes parciais comumente utilizada em vrias aplicaes, tais como as
transformadas de Laplace e Fourier e tambm nas transformadas Z, ou em quaisquer problemas
que envolvem a razo entre polinmios. Como exemplo, considere a seguinte razo entre dois
polinmios:
12 s 19 s 8 s
95 s 177 s 80 s 10
) s ( A
) s ( B
2 3
2 3
+ + +
+ + +
=

Aplicando a funo residue sobre os polinmios B(s) e A(s) obtm-se as seguintes fraes
parciais:
10
1 s
2
3 s
7
4 s
9
) s ( A
) s ( B
+
+

+
+

+
+
=

No Matlab:
>> B = [10 80 177 95]

B =
10 80 177 95

>> A = [1 8 19 12]

A =
1 8 19 12

>> [res,pol,k] = residue(B,A)

res =
9.0000
-7.0000
-2.0000

pol =
-4.0000
-3.0000
-1.0000

k =
10

Observe que enquanto as matrizes contendo os coeficientes dos polinmios A e B so
vetores-linha, as matrizes contendo o resduo res, o plo pol e o termo direto k so
vetores-coluna.
A sintaxe da funo residue :
Polinmios no Matlab 4

[r,p,k] = residue(num,den),

sendo num o vetor-linha que contm o polinmio do numerador e analogamente, den o vetor-
linha do polinmio do denominador. Os vetores-coluna r, p e k so, respectivamente, o
resduo, o plo e o termo direto.
No por outra razo, o clculo das fraes parciais tambm chamado de clculo de
resduos. Por outro lado, a aplicao da funo residue com os argumento contendo os vetores
r, p e k, permite o clculo dos vetores num e den:

[num,den] = residue(r,p,k),

Exemplo:

>> r = [2; -0.5]

r =
2.0000
-0.5000

>> p = [1.0; 0.5]
p =
1.0000
0.5000

>> k = 1

k =
1

>> [n,d] = residue(r,p,k)

n =
1 0 0

d =
1.0000 -1.5000 0.5000

de modo que:
5 . 0 s 5 . 1 s
s
1
5 . 0 s
5 . 0
0 . 1 s
2
) s ( F
2
2
+
= +

=

Avaliao de polinmios
Consideremos a funo polinomial 40 x 10 x 8 x 5 x 2 ) x ( f
2 3 4
+ + = .
Para avaliar numericamente uma funo polinomial pode-se faz-lo de duas formas: se o valor
da varivel independente x for um escalar basta apenas escrever a equao na forma algbrica
que o Matlab avalia a expresso e retorna o valor do polinmio:

>> x = 2;
>> f = 2*x^4 - 5*x^3 + 8*x^2 - 10*x + 40

f =
44
Polinmios no Matlab 5

Se, no entanto, a varivel x for um vetor contendo um intervalo de valores, ento ser necessrio
utilizar o operador ponto-escalar, como no exemplo:

>> x = 0:0.5:2;
>> f = 2*x.^4 - 5*x.^3 + 8*x.^2 - 10*x + 40

f =
40.0000 36.5000 35.0000 36.2500 44.0000

O segundo mtodo consiste na utilizao do vetor-linha p contendo os coeficientes do
polinmio. Para avaliar numericamente o polinmio para um dado valor ou conjunto de valores
x, utiliza-se a funo polyval:

>> x = 0:0.5:2;
>> p = [2 -5 8 -10 40];
>> y = polyval(p,x)

y =
40.0000 36.5000 35.0000 36.2500 44.0000

Ajuste polinomial (Mtodo dos mnimos quadrados)
O ajuste ou regresso polinomial pode ser executado no Matlab atravs do comando
polyfit(x,y,n), no qual x e y so vetores contendo os valores a serem ajustados e n o grau
do polinmio de ajuste. A funo polyfit retorna um vetor que contm os coeficientes do
polinmio de ajuste.
No exemplo seguinte, vamos calcular o ajuste polinomial de 2
o
, 3
o
e 4
o
graus e traar o grfico
comparativo entre as funes de ajuste (representados por grficos de linhas contnuas) e o dos
valores a serem ajustados. Note o uso da funo polyval para converter os coeficientes dos
polinmios de ajuste em valores numricos para o traado grfico.

>> x = 0:0.1:1;
>> y = [-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];

>> pp2 = polyfit(x,y,2);
>> pp3 = polyfit(x,y,3);
>> pp4 = polyfit(x,y,4);
>> yp2 = polyval(pp2,x);
>> yp3 = polyval(pp3,x);
>> yp4 = polyval(pp4,x);
>> plot(x,y,'o',x,yp2,x,yp3,x,yp4)

Resumo das funes Matlab vistas neste mdulo:

poly: clculo do polinmio caracterstico e remontagem de um polinmio a partir das razes
roots: razes
polyval: avaliao de um polinmio
conv: produto de polinmios
deconv: diviso de polinmios
residue: expanso em fraes parciais
polyfit: ajuste polinomial

Você também pode gostar