Está en la página 1de 17

RACES DE POLINOMIOS

Mtodo de BAIRSTOW

Ing Yamil Armando Cerquera Rojas yacerque@gmail.com


Especialista en Sistemas Universidad Nacional
Docente Universidad Surcolombiana
Neiva - Huila

Prembulo
En anlisis numrico, el mtodo de Bairstow es un algoritmo eficiente de
bsqueda de las races de un polinomio real de grado arbitrario. El
algoritmo apareci por primera vez en el apndice del libro
"Aerodinmica Aplicada", escrito por Leonard Bairstow y publicado en
1920. El algoritmo se diferencia de otros mtodos en que encuentra
tanto las races reales como las imaginarias (en parejas complejas
conjugadas), utilizando nicamente aritmtica real.

Leonard Bairstow
Sir Leonard Bairstow (1880-1963), fue miembro de la Orden del
Imperio Britnico y naci en 1880 en Halifax, West
Yorkshire. Es recordado principalmente por sus trabajos en
aviacin y por el Mtodo de Bairstow, mediante el cual se
pueden encontrar las races enteras e imaginarias de un
polinomio de grado arbitrario.
Sir Leonard Bairstow fue hijo de Uriah Bairstow, hombre acaudalado de
Halifax, West Yorkshire y matemtico entusiasta. De nio, Leonard
asisti a la escuela Queens Road and Moorside Council Schools, antes de
ser inscrito en Heath Grammar School, en el cual permaneci de manera
breve para ser luego transferido a Council Secondary School - conocida
luego como Higher Grade School. Obtuvo una beca en el Royal College of
Science en donde obtuvo el patrocinio Whitworth Scholarship que le
permiti realizar investigaciones en explosin de gases.
Asisti luego al National Physical Laboratory (Reino Unido), en Bushy Park, en
donde fue puesto a cargo del rea de investigacin en aeronutica.
Mantuvo la Direccin de la Oficina Zaharoff de Aviacin en el Imperial
College durante el perodo de 1920-1949 para ser nombrado luego por la
monarqua como Sir Leonard Bairstow.
Fue tambin miembro de la Royal Society of London y de la Royal
Aeronautical Society.

Definicin del Mtodo


El mtodo de BAIRSTOW, Es un mtodo iterativo relacionado con los mtodos
de Muller y Newton Raphson.

El mtodo consiste en el clculo de las races de un polinomio buscando


factores cuadrticos x 2 rx s del mismo, es decir, tales que:
p ( x) = ( x 2 rx s ) p1 ( x )
Evidentemente, si x 2 rx s no es un factor cuadrtico de p(x) se tendr:
p ( x) = ( x 2 rx s ) p1 ( x ) + Ax + B

Tomando el polinomio en orden descendente y los


coeficientes del mismo en orden ascendente:
Si en trminos generales se tiene un polinomio descrito de la forma
p ( x)= a 0 x n + a1 x n 1 + ... + a n 1 x + a n y para efectos del ejemplo se tiene
p ( x) = x 5 + 2 x 3 x 2 + x 5 , si se asume como valor inicial para r=1 y s=1, se
tiene que el polinomio factor cuadrtico ser: pc = x 2 x 1 . Si se divide p (x)
entre pc dar como resultado p1 ( x ) y residuo Ax + B .
De manera general se puede
bosquejar as:

p ( x)pc
Ax + B p1 ( x)

Donde Ax + B es el residuo de la divisin. Siendo A y B funciones de r y de s,


de forma que el mtodo consiste en encontrar los valores de r y s que hacen
A = A(r , s ) = 0
B = B(r , s ) = 0

(1)

Para ello se aplica el mtodo de newton raphson en la forma conocida, lo que


conlleva la evaluacin de la matriz jacobiana del sistema (1), as como de las
funciones A y B, en cada iteracin. Un modo de realizar estas evaluaciones, ya
que la forma explicita de las funciones A(r , s ) y B (r , s ) no es conocida
explcitamente, es construir el siguiente algoritmo:
As = A1 ,Bs = B1
Ar = rA1 + B1 ,Br = sA1
Y encontrar los valores de A, B, A1 y B1 mediante el proceso similar al de
Hrner siguiente que se obtiene al desarrollar los productos e identificar los
coeficientes:
Sean
p ( x)= a 0 x n + a1 x n 1 + ... + a n 1 x + a n = ( x 2 rx s) p1 ( x) + Ax + B
p1 ( x ) = b0 x n 2 + b1 x n 3 + ... + bn 3 x + bn 2 = ( x 2 rx s ) p 2 ( x) + A1 x + B1
p 2 ( x ) = c0 x n 4 + c1 x n 5 + ... + c n 5 x + c n 4 , donde

b0 = a 0
b1 = a1 + rb0
b2 = a 2 + rb1 + sb0
bk = a k + rbk 1 + sbk 2 ,k = 2,3,..., n 2
A = a n 1 + rbn 2 + sbn 3
B = a n + + sbn 2
c 0 = b0
c1 = b1 + rc 0
c 2 = b2 + rc1 + sc 0
c k = bk + rc k 1 + sc k 2 ,k = 2,3,..., n 4
A1 = bn 3 + rc n 4 + sc n 5
B1 = bn 2 + + sc n 4

Resumiendo
Dado un polinomio f n (x) se encuentran dos factores, un polinomio cuadrtico
f 2 ( x) = x 2 rx s y f n 2 ( x) .
El procedimiento general para el mtodo de Bairstow es:
1.

Dado f n (x) y r0 y s 0

2.

Utilizando el mtodo de Newton Raphson se calcula f 2 ( x) = x 2 r0 x s 0


y f n 2 ( x) , tal que, el residuo de f n ( x) / f 2 ( x) sea igual a cero.
Se determinan la races f 2 ( x) , utilizando la formula general.
Se calcula f n 2 ( x) = f n ( x) / f 2 ( x)
Se hace f n ( x) = f n 2 ( x)
Si el grado del polinomio es mayor que tres se regresa al paso 2
Si no se termina

3.
4.
5.

6.
7.

La principal diferencia de este mtodo, respecto a otros, es que permite


calcular todas las races de un polinomio (reales e imaginarias).
Recuerde la forma factorizada de un polinomio por ejemplo:

f 5 ( x) = ( x + 1)( x 4)( x 5)( x + 3)( x 2)


Si se divide entre un factor que no es una raz (por ejemplo, x + 6 ), el
cociente podra ser un polinomio de cuarto orden. Sin embargo, en este caso,
podra haber residuo.
Con estas bases se puede elaborar un algoritmo para determinar la raz de un
polinomio:

1. Suponiendo que el valor inicial de la raz es x = t;


2. Al dividir el polinomio entre el factor x t, y
3. Determinando si existe un residuo. Si no, el valor es perfecto y la raz
es igual a t.
Si hay un residuo, el valor puede ser ajustado sistemticamente y el
procedimiento repetirse hasta que el residuo desaparezca y la raz sea
localizada.
El mtodo de Bairstow se basa por lo general en esta aproximacin. El proceso
matemtico depende de dividir el polinomio entre un factor.
Por ejemplo, Tomando el polinomio general con coeficientes iguales o sea
a 0 x 0 ,a1 x 1 ,a 2 x 2 ,..., a n x n se tiene el polinomio general as:

f n ( x) = a0 + a1 x + a 2 x 2 + ... + a n x n
Consecuentemente el proceso matemtico depende de dividir el polinomio
f n (x ) entre un factor, tomando en cuenta la discusin del polinomio de
deflacin como sigue a continuacin:
Supngase que se tiene la raz de orden n-esimo, y teniendo un adecuado
procedimiento para eliminar la raz encontrada, a este procedimiento de
eliminar la raz se le llama deflacin polinomial.

Tomando el polinomio y coeficientes en Orden Ascendente:


De la forma general de un polinomio de orden n:
f n ( x ) = a0 + a1 x + a2 x 2 + ... + an x n

Ec. 1

definido: f 5 ( x) = 120 46 x + 79 x 2 3 x 3 7 x 4 + x 5
factorizando este polinomio resulta f 5 ( x) = ( x + 1)( x 4)( x 5)( x + 3)( x 2) .
Y es claro que x = 1,4,5, 3,2 son todas las races que representan a cada
parntesis individual, ahora suponga que se divide la funcin polinomial de
quinto orden por un factor de manera que se elimine una de sus races por
ejemplo el factor x + 3 y se tiene una funcin de cuarto orden:
Se

tiene

un

polinomio

f 4 ( x) = ( x + 1)( x 4)( x 5)( x 2) = 40 2 x 27 x 2 10 x 3 x 4 Con


para este caso.

residuo

cero

As se tiene que la forma general f n ( x) = a0 + a1 x + a2 x 2 + ... + an x n entre un


factor x t dar un segundo polinomio de un orden ms bajo
f n 1 ( x) = b1 + b2 x + b3 x 2 + ... + bn x n 1 (Ec 2) con residuo R = b0 en donde los
coeficientes son obtenidos por la relacin de recurrencia:

bn = a n

bn 1 = an 1 + rbn
bi = ai + rbi + 1 + sbi + 2 , para i=n-2 hasta 0.
Para permitir la evaluacin de races complejas este mtodo divide la funcin
entre el factor cuadrtico:

x 2 rx s
Aplicndolo en la ecuacin f n ( x) = a0 + a1 x + a2 x 2 + ... + an x n
2
n 3
n 2
Resultando: f n 2 ( x) = b2 + b3 x + b4 x + ... + bn 1 x + bn x

Con residuo:

R = b1 ( x r ) + b0 Ec.3

Y aplicando la relacin de recurrencia se obtiene los siguientes coeficientes


para la ecuacin anterior:

bn = a n Ec.4a
bn 1 = a n 1 + rbn Ec.4b

bi = ai + rbi + 1 + sbi + 2 , para i = n 2hasta 0Ec.4c


Se introduce el factor cuadrtico para la determinacin de las races
complejas, por que si los coeficientes del polinomio original son reales, las
races complejas se presentan en pares conjugados.
Si x 2 rx s es un divisor exacto del polinomio, las races complejas pueden
b 2 4ac
, por lo que el
2a
mtodo se reduce solo a determinar r y s que provocan que el factor
cuadrtico sea un divisor exacto y por consiguiente se obtiene un residuo igual
a cero.
ser determinadas con la frmula cuadrtica x =

Entonces si R = b1 ( x r ) + b0 = 0 , b1 y b0 deben ser iguales a cero.


Esto para que los valores de inicio al evaluar r y s conduzcan a este resultado,
se debe de aplicar un camino para los valores iniciales o de inicio de manera
que b1 y b0 tiendan a cero para ello se utiliza una tcnica similar a la de
Newton Raphson.
Pues b0 como b1 son funciones de r y s y se expanden utilizando la serie de
Taylor:

b1 (r + dr , s + ds ) = b1 +

b1
b
dr + 1 ds
r
s

b0 (r + dr , s + ds ) = b0 +

b0
b
dr + 0 ds Ec.5
r
s

Los valores de la parte izquierda de la igualdad son evaluados en r y s.


Obsrvese que el segundo trmino y el trmino de orden superior se han
despreciado. Ya que en forma implcita r y s son muy pequeos y los
trminos de orden superior pueden ser despreciados, pero otra consideracin
es que los valores de inicio de son tan cercanos a los valores de r y s de las
races.
Para dar un valor inicial que se acerque a las races es el colocar la Ec. 5 igual
a cero y que resulte:
b1
r+
r
b0
r+
r

b1
s = b1 Ec.6
s
b0
s = b0 Ec.7
s

Si las variables r y s forman un sistema de ecuaciones de dos incgnitas


y el mtodo de Bairstow muestra que las derivadas parciales pueden
resolverse por divisin sinttica de las b en forma similar al camino en que
las b en s mismas fueron derivadas:

c n = bn
c n 1 = bn 1 + rc n

Para i = n 2 a 0

ci = bi + rci + 1 + sci + 2
Entonces las derivadas parciales se obtienen por divisin sinttica de las b, y
las b con las derivadas parciales son sustituidas en las ecuaciones 6 y 7 y se
obtiene:

c 2 r + c3 s = b1
c1 r + c 2 s = b0
Estas ecuaciones pueden ser resueltas para mejorar los valores de r y s, se
podra utilizar el error aproximado para cada paso pero no es para nuestro
caso realmente utilizado pero quedara de la siguiente forma:

a ,r =

r
100%
r
y

a,s =

s
100%
s

Cuando los dos valores fallan bajo un criterio especificado las races pueden
determinarse con la siguiente ecuacin:
x=

r 2 + 4s
2

Aqu pueden caber tres posibilidades:

El cociente es un polinomio de tercer orden o mayor. Para este caso, el


mtodo de Bairstow podra aplicarse al cociente para evaluar un nuevo
valor de r y s. Los valores anteriores de r y s pueden servir como
valores iniciales de para esta aplicacin.
El cociente es cuadrtico. Para este caso, el residuo de las races puede
evaluarse con la ecuacin 11)
El cociente es un polinomio de primer orden. Para este caso, el residuo
es una sola raz que puede evaluarse simplemente como: X = - s/r

Ejemplo expresando el polinomio en orden


descendente:
Dado el polinomio f(x) = x 5 3.5x 4 + 2.75x 3 + 2.125x 2 3.875x + 1.25, determinar los
valores de r y s que hacen el residuo igual a cero. Considere valores iniciales para
r0 = 1 y s0 = 2. El factor cuadrtico
por
ende
ser
fc = x 2 rx s

fc = x 2 ( 1) x 2 = x 2 + x 2
Solucin. Teniendo que realizar

f ( x)fc
Ax + B f 1 ( x )

x 5 3.5 x 4 + 2.75 x 3 + 2.125x 2 3.875 x + 1.25x 2 + x 2


x 5 x 4 + 2.00 x 3 x 3 4.5 x 2 + 9.25 x 16.125 +
0 4.5 x 4 + 4.75 x 3 + 2.125 x 2 3.875 x + 1.25
4.5 x 4 + 4.5 x 3 9.000 x 2
0 0+ 9.25 x 3 6.875 x 2 3.875 x + 1.25
9.25 x 3 9.25 x 2 + 18.50 x
0 00 16.125 x 2 + 14.625 x + 1.25
16.125 x 2 + 16.125 x 32.25
000 0 30.750 x 31.00
30.750 x 30.75
00 00 0 61.75
+ 61.75
00 00 0 0

Iteracin 1 con:

f(x) = x 5 3.5 x 4 + 2.75 x 3 + 2.125 x 2 3.875 x + 1.25,


fc = x 2 + x 2
f 1(x) = 1x 3 4.5 x 2 + 9.25 x 16.125
Ax + B = 30.75 x 31
La divisin sinttica con el polinomio

fc = x 2 + x 2 da como resultado

f 1(x) = x 3 4.5 x 2 + 9.25 x 16.125 y residuo Ax + B = 30.75 x 31 .

30.750 61.75

x
x2

El vector b tendra los siguientes datos:

b5 = 1 , b4 = 4.5 , b3 = 9.25 , b2 = 16.125 , y

con un residuo de Ax + B = 30.75 x 31 . Si se trata de eliminar dicho residuo se puden


conseguir los valores para

b1 , b0 . Se elimina Ax con el monomio 30.75 y una vez


x

eliminado se elimina el ultimo termino B con el monomio


los valores para
Ahora

fc = x

61.75

b1 = 30.75, y b0 = 61.75 .

realizando la divisin
+ x 2 se tiene:

del

polinomio

resultado

x2

entre

, encontrando con esto

el

polinomio

factor

x 3 4.5 x 2 + 9.25 x 16.125 + 30.75 / x 61.75 / x 2 x 2 + x 2


x 3 x 2 + 2 x

x 5.5 +

16.75 43.875 108.125

+
x
x2
x3

0 5.5 x 2 + 11.25 x 16.125


+ 5.5 x 2 + 5.5 x 11
.000
00 16.75 x 27.125
16.75 x 16.750 + 33.5

x
0 43.875 + 64.25
x
43
.
875
43.875 +
87.75 / x 2
x
0+ 108.125 149.50 / x 2
x

108.125
108.125 / x 2
x
257.625 / x 2
El vector c tendra los siguientes datos: c5 = 1 , c4 = 5.5 , y con un residuo de
A' x + B ' = 16.75 x 27.125 , ahora eliminando este residuo para calcular los restantes
valores de ci asi: c3 = 16.75 , c2 = 43.875 , c1 = 108.125 .

f 1(x) = 1x 3 4.5 x 2 + 9.25 x 16.125


fc = x 2 + x 2
f 2 ( x ) = x 5.5
A' x + B ' = 16.75 x 27.125
Aplicando el mtodo de Newton se tiene:

c2 r + c3 s = b1 43.875 r + 16.750 s = 30.75


c r + c s = b 108.125 r 43.875 s = 61.75

2
0
1
Resolviendo el sistema se tiene que

r = 2.7636812508572213
,
s = 5.403374022767796

Como estos valores son diferentes de cero, se procede a calcular un nuevo valor para r y para
s asi:

rn = r + r = 1.0 + 2.7636812508572213 = 1.7636812508572213


sn = s + s = 2.0 + 5.403374022767796 = 7.403374022767796
Con estos nuevos valores se realiza una segunda iteracin.
Iteracin 2.
La divisin sinttica con el polinomio

f c(x) = x 2 1.7636812508572213x 7.403374022767796 , Da como resultado


f 1(x) = x 3 1.7363187491427787 x 2 + 7.091061199392814 x 1.776754563401905
Residuo = {51.75640698828836, 105.68578319650365}
Aplicando el mtodo de Newton se tiene
27.628006 14.542693
208.148405 27.62800

dr
ds

-51.75640
-105.68578

r = 0.04728019113442016
s = 3.469106187802152
De donde
r2 = 1.7636812508572213 - 0.04728019113442016 = 1.7164010597228012
s2 = 7.403374022767796 - 3.469106187802152 = 3.934267834965644
Iteracin 3.
La divisin sinttica con el polinomio:

f 2(x) = x 2 - 1.7164010597228012 x - 3.934267834965644 , da como resultado


f 3(x) = x 3 1.7835989402771988 x 2 + 3.622896723753395 x + 1.3261878347051992
Residuo = {12.654716254544885, 28.1881465309956}
Aplicando el mtodo de Newton se tiene:
13.83497 7.44182
65.679212 13.83497

dr
ds

-12.65471
-28.18814

De donde
r3 = 1.7164010597228012 - 0.11666951305731528 = 1.599731546665486
s3 = 3.934267834965644 - 1.4835870659929915 = 2.4506807689726524
Codigo para MatLab.
clear all;clc;j=1;
%r(1)=input('Digite valor para r');
r(1)=-1;
%s(1)=input ('Digite valor para s');
s(1)=2;
while j<=8
a=[1 -3.5 2.75 2.125 -3.875 1.25];

n=length(a);
b(1)=a(1);
c(1)=b(1);
b(2)=a(2)+r(j)*b(1);
c(2)=b(2)+r(j)*c(1);
i=3;
while (i<=n)
b(i)=a(i)+r(j)*b(i-1)+s(j)*b(i-2);
c(i)=b(i)+r(j)*c(i-1)+s(j)*c(i-2);
i=i+1;
end
m=[c(4) c(3); c(5) c(4)];
B=[-b(5); -b(6)];
v=inv(m)*B;
dr=v(1); ds=v(2);
j=j+1;
r(j)=r(j-1)+dr; s(j)=s(j-1)+ds;
end
disp([r' s'])
En resumen, los datos obtenidos con el cdigo anterior sern

En resumen
k
r
0 -1.000000
1 1.763680
2 1.716400
3 1.599731
4 1.333540
5 1.118260
6 1.027050
7 1.001650
8 1.000000

s
2.000000
7.403374
3.934260
2.450680
2.186660
2.113020
2.023170
2.001530
2.000000

Residuo
30.750000 -61.75000
51.756406 105.68578
12.654710 28.188140
2.8995800
8.154670
0.7601220
2.522228
0.2719400
0.607688
0.0431300
0.111850
0.0027700
0.006340
1.13930E-5 2.67534E-5

La solucin es:
f 3(x) = x 3 2.53 x 2 + 2.25 x 0.625 y f 2(x) = x 2 x 2
Las races de f 2(x) = x 2 x 2 , son
x1 = 2
x2 = -1
Si se repite el ejemplo pero ahora considerando el polinomio:
f 3(x) = x 3 2.53 x 2 + 2.25 x 0.625 , se puede calcular el total de las races del
polinomio original.
Ejemplo tomando el polinomio en el mismo orden los dos trminos:

Emplee el mtodo de Bairstow para determinar las races del polinomio


f 5 ( x) = x 5 3.5 x 4 + 2.75 x 3 + 2.125 x 2 3.875 x + 1.25 , Use los valores iniciales de
r = s = 1 e iterando a un nivel de s = 1%
Tomando el polinomio en trminos de ai se tiene:
f 5 ( x) = a5 x 5 a 4 x 4 + a3 x 3 + a 2 x 2 a1 x + a 0 , donde
a5 = 1 , a 4 = 3.5 , a3 = 2.75 , a 2 = 2.125 , a1 = 3.875 y a 0 = 1.25 .
Paso 1:
Una forma de encontrar los valores de bi , es procediendo a realizar la divisin
polinomial de la siguiente manera:
x 5 3.5 x 4 + 2.75 x 3 + 2.125 x 2 3.875 x + 1.25x 2 + x + 1
10.5 11.375
+
x
x2
0 4.5 x 4 + 1.75 x 3 + 2.125 x 2 3.875 x + 1.25b5 b4 b3 b2 b1 b0

x 5 x 4 x 3 x 3 4.5 x 2 + 6.25 x + 0.375

4.5 x 4 + 4.5 x 3 + 4.5x 2


00+ 6.25 x 3 + 6.625 x 2 3.875 x + 1.25
6.25 x 3 6.25 x 2 6.250 x
000+ 0.375 x 2 10.125 x + 1.25
0.375 x 2 0.375 x 0.375
0000 10.5 x + 0.875
+ 10.50 x + 10.5
0000011.375
11.375
000000

O aprovechando las frmulas apropiadas para el clculo anterior se puede


realizar de la siguiente manera:
Formulas apropiadas:

bn = an
bn 1 = a n 1 + rbn

bi = ai + rbi + 1 + sbi + 2 , para i = n 2hasta 0


Clculos:
b5 = a5 = 1
b4 = a 4 + rb5 = 3.5 + ( 1)1 = 4.5
b3 = a3 + rb4 + sb5 = 2.75 + ( 1)( 4.5) + ( 1)(1) = 6.25
b2 = a 2 + rb3 + sb4 = 2.125 + ( 1)(6.25) + ( 1)( 4.5) = 0.375
b1 = a1 + rb2 + sb3 = 3.875 + ( 1)(0.375) + ( 1)(6.25) = 10.5

b0 = a 0 + rb1 + sb2 = 1.25 + ( 1)( 10.5) + ( 1)(0.375) = 11.375


Luego se realizan los clculos de c:

c n = bn
c n 1 = bn 1 + rc n
ci = bi + rc i + 1 + sci + 2

c5 = b5 = 1
c 4 = b4 + rc5 = 4.5 + ( 1)1 = 5.5
c3 = b3 + rc 4 + sc5 = 6.25 + ( 1)( 5.5) + ( 1)(1) = 10.75
c 2 = b2 + rc3 + sc 4 = 0.375 + ( 1)(10.75) + ( 1)( 5.5) = 4.875
c1 = b1 + rc 2 + sc3 = 10.5 + ( 1)( 4.875) + ( 1)(10.75) = 16.375
As, las ecuaciones simultneas para resolver r y s son

c 2 r + c3 s = b1
c1 r + c 2 s = b0

4.875 r + 10.750 s = 10.500


16.375 r 4.875 s = 11.375

Resolviendo con MatLab y el siguiente cdigo,


s=solve('-4.875*dr+10.75*ds=10.5','-16.375*dr-4.875*ds=-11.375')

s.dr
ans =0.35583013998592320325330413701416
s.ds
ans =1.1381090169703605224055681551576

Se tiene para r =0.3558 y s =1.1381. Por lo tanto, los valores supuestos


inicialmente para r y s, pueden corregirse as:
r = -1 + 0.3558 = -0.6442
s = -1 + 1.1381 = 0.1381
Y el error aproximado puede ser calculado as:

a ,r =

0.3558
100% = 55.23%
0.6442

a ,s =

1.1381
100% = 824.1%
0.1381

Como el error es demasiado grande entonces se realiza de nuevo el clculo


usando los nuevos valores encontrados para s y r.
El siguiente clculo es repetir usando los valores revisados para r y s.

b5 = 1
b4 = 4.1442
b3 = 5.5578
b2 = 2.0276
b1 = 1.8013
b0 = 2.1304
Y luego:

c5 = 1
c4 = 4.7884
c3 = 8.7806
c2 = 8.3454
c1 = 4.7874
Por lo tanto se debe resolver
8.3454 r + 8.7806 s = 1.8013
4.7874 r 8.3454 s = 2.1304
Para r = 0.1331 y s = 0.3316 , los cuales pueden usarse para estimar la raz
correcta como
r = -0.6442 + 0.1331 = - 0.5111
s = 0.1381 + 0.3316 = - 2.1304

a ,r

= 26.0%

a ,s

= 70.6%

El clculo debe continuar, por los valores tan altos en el error que se calcula.
Con los resultados despus de cuatro iteraciones, el mtodo converge a los
valores de r = -0.5 ( a ,r = 0.063% ) y s = 0.5 ( a ,s = 0.040% ). La frmula
general puede emplearse para evaluar las races como
x=

0.5

( 0.5) 2 + 4(0.5)
= 0.5, 1.0
2

En este punto, el cociente es la ecuacin cbica


f ( x) = x 3 4 x 2 + 5.25 x 2.5

El mtodo de Bairstow puede aplicarse a este polinomio usando resultados del


paso anterior, r = -0.5 y s = 0.5, como valores iniciales. Cinco iteraciones dan
un estimado de r = 2 y s = -1.249, el cual puede usarse para calcular
x=

(2) 2 + 4( 1.249)
= 1 0.499i
2

En este punto, el cociente es un polinomio de primer orden que puede ser


directamente evaluado para determinar la quinta raz 2.
Resumen del ejemplo anterior
5
4
3
2
Dado el polinomio f 5(x) = x 3.5 x + 2.75 x + 2.125 x 3.875 x + 1.25 , determinar
las races de este polinomio. Considere r0 = -1 y s0 = -1.

Paso 1. En este paso partiendo de dos supuestos valores de s y r para el


polinomio factor, se encuentran dos valores tal que dicho polinomio divida
exactamente al original.
f 5(x) = x 5 3.5 x 4 + 2.75 x 3 + 2.125 x 2 3.875 x + 1.25

Polinomio Original

f 5(x) = ( x 3 4 x 2 + 5.25 x 2.5 )*( x 2 + 0.5 x 0.5 ) Pol Resultado * Pol Factor
Las races del polinomio factor del Paso 1, dado por x 2 + 0.5 x 0.5 = 0 son:
x1 = 0.5 y x 2 = 1.0
Paso 2. Se repite el proceso anterior tomando como polinomio original el
polinomio resultado del paso anterior.
f 3(x) = x 3 4 x 2 + 5.25 x 2.5

Polinomio Original

f 3(x) = (x 2 )*(x 2 x + 1.25 ) Polinomio Resultado * Polinomio Factor


2

Las races de x 2 2 x + 1.25 = 0 son


x3 = 1 + 0.5 j
x 4 = 1 0.5 j
Paso 3. Ac no se realiza ninguna operacin porque el polinomio original para
este paso es de orden 1. Es decir se trata de una recta.
f 1 ( x) = ( x 2)
La raz de este polinomio es
x5 = 2 ;

Todas la races de f 5 ( x) son x = [0.5, 1.0, (1.0 + j0.5), (1 - j0.5), 2]

Cdigo en lenguaje C
Aqu el cdigo de una funcin que saca los factores cuadrticos y lineales en
los que se debe dividir el polinomio:
void find_poly_roots(int n)
{ double r,s,dn,dr,ds,drn,dsn,eps;
int i,iter;
r = s = 0;
dr = 1.0;
ds = 0;
eps = 1e-14;
iter = 1;
while ((fabs(dr)+fabs(ds)) > eps)
{ if ((iter % 200) == 0)
{ r=(double)rand()/16000.;
}
if ((iter % 500) == 0)
{ eps*=10.0;
precision_error_flag=1;
printf("Perdida de Precisin \n");
}
b[1] = a[1] - r;
c[1] = b[1] - r;
for (i=2;i<=n;i++)
{ b[i] = a[i] - r * b[i-1] - s * b[i-2];
c[i] = b[i] - r * c[i-1] - s * c[i-2];
}
dn=c[n-1] * c[n-3] - c[n-2] * c[n-2];
drn=b[n] * c[n-3] - b[n-1] * c[n-2];
dsn=b[n-1] * c[n-1] - b[n] * c[n-2];
if (fabs(dn) < 1e-16)
{ dn = 1;
drn = 1;
dsn = 1;
}
dr = drn / dn;
ds = dsn / dn;
r += dr;
s += ds;
iter++;
}
for (i=0;i<n-1;i++)
a[i] = b[i];
a[n] = s;
a[n-1] = r;
}

Codigo en MatLAb
clear
clc
z=input ('TECLEE LOS COEFICIENTES DEL POLINOMIO ENTRE CORCHETES:\n');
%z=[1 -3.5 2.75 2.125 -3.875 1.25];
n=length(z);
% Se define la longitud de la ecuacin

it=0;
% Se inicia el contador de iteraciones
limit_it=1000;
% Se define el limite en el numero de iteraciones
tol=0.0001;
% Se define la tolerancia de la estimacin
raiz(1:n-1)=0;
ri=0;
r=2;
% Se supone el valor de r que es el coeficiente de primer grado
s=2;
% Se supone el valor de s que es el termino independiente
err=1;
% Se inicializa el valor del error en r igual a 1
ers=1;
% Se inicializa el valor del error en s igual a 1
if z(1)==0
fprintf('EL PRIMER COEFICIENTE NO DEBE SER CERO:\n\n')
break
end
while 1
% Ciclo que nos permitir ir evaluando las races del polinomio
if (n-1>=3);
else break,end
% Condicin si el grado de la raz es mayor a 3
t=[1 r s];
% Esta es el polinomio cuadrtico de inicio
it=it+1;
% Se incrementa en 1 la iteracin
[x,y]=deconv(z,t);
% Se divide la ecuacin entre el polinomio de inicio
length(x);
% Se define la longitud del polinomio resultante
length(y);
% Se define la longitud del residuo resultante
x=[x,0,0];
% Se ajusta la variable x para poder sumarla al residuo
x=[x+y];
% Suma del cociente mas residuo
c(1)=z(1);
% Valor de los coeficientes de la funcin a
c(2)=z(2)+(-r*c(1));
% Evaluar, en virtud de que el coeficiente de mayor
for i=3:n
% Grado ser equivalente al coeficiente de menor grado
m=n-i;
% Y en este ciclo se realiza la inversin de ellos
c(n-m)=z(i)+(-r*x(n-m-1))+(-s*x(n-m-2));%algoritmo de inversin
end
d(1)=c(1);
%valor de los coeficientes de las derivadas parciales
d(2)=c(2)+(-r*d(1));
%valor de los coeficientes de las derivadas parciales
for i=3:(n-1);
%se realizan los clculos de los coeficientes
m=n-i;
%hasta el grado mximo del polinomio
d(n-m)=c(i)+(-r*d(n-m-1))+(-s*d(n-m-2));%algoritmo de calculo
end
e=[d(n-2),d(n-3);d(n-1),d(n-2)]\[-c(n-1);-c(n)];%calculo del
d_r=e(1);
%nuevo valor del coeficientes de primer grado
d_s=e(2);
%nuevo valor del termino independiente
if r==0
else
err=d_r/r;
%calculo del error para coeficiente de primer grado
end
if s==0
else
ers=d_s/s;
%calculo del error para termino independiente
end
r=r-d_r;
%valor del coeficiente de primer grado
s=s-d_s;
%valor del termino independiente
if ((abs (err))&(abs(ers))<=tol) %si se cumple la condicin de
ri=ri+1;
x1=(-r+sqrt(r^2-4*s))/2;
% tolerancia entonces se calcula el valor del
raiz(ri)=x1;
ri=ri+1;
x2=(-r-sqrt(r^2-4*s))/2;
% polinomio cuadrtico.
raiz(ri)=x2;
xx=[x1,x2]';
%valor del polinomio que divide exactamente a la ecuacin
tt=poly(xx);
%cambio de variable para efectuar nuevamente la divisin
[x3,y]=deconv(z,tt);
%se efecta la divisin
z=x3;
%se hace cambio de variable
n=length(x3-1);
%se determina el grado del polinomio

r=tt(1);
s=tt(2);
end
if (it>limit_it)
%condicin de iteraciones
fprintf ('Exceso en el limite de iteraciones. \n');break
end
%si hay exceso en el numero de iteraciones se termina el programa
end
if (n-1)==2
%si la ecuacin que se introduce es de segundo grado
ri=ri+1;
x1=(-z(2)+sqrt(z(2).^2-4*z(1)*z(3)))/(2*z(1));%se calcula normalmente por
raiz(ri)=x1;
x2=(-z(2)-sqrt(z(2).^2-4*z(1)*z(3)))/(2*z(1));%medio de la formula tradicional
ri=ri+1;
raiz(ri)=x2;
end
if (n-1)==1
%si el valor de la ecuacin que se introduce es de primer
if (abs(z(2))>=tol)
ri=ri+1;
x1=-z(2)/z(1);
%grado solamente se hace la sustitucin.
else
x1=0;
end
raiz(ri)=x1;
x1;
end
if (n-1)==0
%si el valor de la ecuacin que se introduce es una constante
fprintf('El valor que introdujo es una constante igual a:\n\n')
constante=z
end
raices=raiz';
sort raices;
raices