You are on page 1of 5

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 4o grau: x4 3x3 + 10x2 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:
det ([A ] [I]) = 1 4 7 2 5 8 3 6 9 = 3 152 18

Polinmios no Matlab

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

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

( x 2 + x + 9) (2 x 3 4x 2 + 1) = 2 x 5 2x 4 + 14 x 3 35x 2 + x + 9
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

>> [q,r] = deconv(z1,z2) q = -1 r = 0 0 0 13 22 -3 -7

Polinmios no Matlab

No caso da diviso do polinmio (x4 + 2x3 + x2 3x + 1) por (- x2 + x + 3), o resultado o polinmio x2 - 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:
B(s) 10s 3 + 80s 2 + 177s + 95 = A (s ) s3 + 8s 2 + 19s + 12

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

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

sendo num o vetor-linha que contm o polinmio do numerador e analogamente, den o vetorlinha 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 d = 1.0000 -1.5000 0.5000 0 0

de modo que:
F(s ) = 2 0. 5 +1 = s 1.0 s 0.5 s2 s 2 1.5s + 0.5

Avaliao de polinmios

Consideremos a funo polinomial f ( x ) = 2 x 4 5x 3 + 8x 2 10x + 40 . 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

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 2o, 3o e 4o 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

Polinmios no Matlab

You might also like