Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MÉTODO DE BAIRSTOW
Raíces de Ecuaciones
RAÌCES DE POLINOMIOS
Método de BAIRSTOW
Ing Yamil Armando Cerquera Rojas – yacerque@gmail.com
Especialista en Sistemas Universidad Nacional
Neiva – Huila
Contenido
Preámbulo ...................................................................................................................................... 3
Leonard Bairstow .......................................................................................................................... 3
Método de Bairstow...................................................................................................................... 4
Definición.................................................................................................................................... 4
Tomando el polinomio en orden descendente y los coeficientes del mismo en con
subíndice ascendente:.............................................................................................................. 4
Resumiendo ................................................................................................................................ 5
Tomando el polinomio y coeficientes en Orden Ascendente:........................................... 7
Ejemplo expresando el polinomio en orden descendente: ............................................. 10
Código para MatLab. ............................................................................................................... 13
Ejemplo tomando el polinomio en el mismo orden los dos términos: .......................... 14
Código en lenguaje C .............................................................................................................. 18
Código en MatLAb .................................................................................................................... 19
Recursos Bibliográficos .............................................................................................................. 22
Bibliografia OnLine: ................................................................................................................... 22
Preámbulo
En análisis numérico, el método de Bairstow es un algoritmo eficiente de búsqueda de
las raíces de un polinomio real de grado arbitrario. El algoritmo apareció por primera
vez en el apéndice del libro "Aerodinámica Aplicada", escrito por Leonard Bairstow y
publicado en 1920. El algoritmo se diferencia de otros métodos en que encuentra
tanto las raíces reales como las imaginarias (en parejas complejas conjugadas),
utilizando únicamente aritmética real.
Leonard Bairstow
Sir Leonard Bairstow (1880-1963), fue miembro de la Orden del Imperio
Británico y nació en 1880 en Halifax, West Yorkshire. Es recordado
principalmente por sus trabajos en aviación y por el Método de
Bairstow, mediante el cual se pueden encontrar las raíces enteras e
imaginarias de un polinomio de grado arbitrario.
Sir Leonard Bairstow fue hijo de Uriah Bairstow, hombre acaudalado de Halifax, West
Yorkshire y matemático entusiasta. De niño, Leonard asistió a la escuela Queens Road
y 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 de
ciencias en donde obtuvo el patrocinio Whitworth Scholarship que le permitió realizar
investigaciones en explosión de gases.
Asistió luego al National Physical Laboratory (Reino Unido), en Bushy Park, en donde
fue puesto a cargo del área de investigación en aeronáutica. Mantuvo la Dirección de
la Oficina Zaharoff de Aviación en el Imperial College durante el período de 1920-1949
para ser nombrado luego por la monarquía como Sir Leonard Bairstow.
Método de Bairstow
Definición
p( x) ( x 2 rx s) p1 ( x)
Donde 𝑝(𝑥) es el polinomio al cual se le pretende encontrar sdus raíces, 𝑝1 (𝑥), es un
polinomio restante de dividir 𝑝(𝑥) entre el factor 𝑥 2 − 𝑟𝑥 − 𝑠
p( x) ( x 2 rx s) p1 ( x) Ax B
Donde 𝐴𝑥 + 𝐵 es el residuo.
Ecuación 1
A A(r , s) 0
B B(r , s ) 0
Ecuación 2
As A1 , Bs B1
Ar rA1 B1 , Br sA1
Sean
p( x) a0 x n a1 x n1 ... an1 x an ( x 2 rx s) p1 ( x) Ax B
p1 ( x) b0 x n2 b1 x n3 ... bn3 x bn2 ( x 2 rx s) p2 ( x) A1 x B1
p2 ( x) c0 x n4 c1 x n5 ... cn5 x cn4 , donde
b0 a0
b1 a1 rb0
b2 a2 rb1 sb0
bk ak rbk 1 sbk 2 , k 2,3,..., n 2
A an1 rbn2 sbn3
B an sbn2
c0 b0
c1 b1 rc0
c2 b2 rc1 sc0
ck bk rck 1 sck 2 , k 2,3,..., n 4
A1 bn3 rcn4 scn5
B1 bn2 scn4
Resumiendo
1. Dado f n (x) y r0 y s 0
2. Utilizando el método de Newton Raphson se calcula f 2 ( x) x 2 r0 x s0 y
f n2 ( x) , tal que, el residuo de f n ( x) / f 2 ( x) sea igual a cero.
3. Se determinan la raíces f 2 ( x) , utilizando la formula de la ecuación cuadrática
−𝑏± 𝑏 2 −4𝑎𝑐
general 𝑥 = .
2𝑎
4. Se calcula f n2 ( x) f n ( x) / f 2 ( x)
5. Se hace f n ( x) f n2 ( x)
6. Si el grado del polinomio es mayor que tres (3) se regresa al paso 2
7. Si no se termina
Si se divide entre un factor que no es una raíz (por ejemplo, x 6 ), el cociente podría
ser un polinomio de cuarto orden. Sin embargo, en este caso, podría haber residuo.
f n ( x) a0 a1 x a2 x 2 ... an x n
Y es claro que x 1, 4, 5, 3, 2 son todas las raíces que representan a cada paréntesis
individual, ahora suponga que se divide la función polinomial de quinto orden por un
factor de manera que se elimine una de sus raíces por ejemplo el factor x 3 y se
tiene una función de cuarto orden:
bn an
bn1 an1 rbn
bi ai rbi1 sbi2 , para 𝑖 = 𝑛 − 2 hasta 0.
Para permitir la evaluación de raíces complejas este método divide la función entre el
factor cuadrático:
x 2 rx s
Aplicándolo en la ecuación f n ( x) a0 a1x a2 x ... an x
2 n
Con residuo:
Ecuación 5
R b1 ( x r ) b0
Ecuación 8
bi ai rbi1 sbi2 , para i n 2 hasta 0
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 técnica similar a la de Newton Raphson.
b1 b
b1 (r dr, s ds) b1 dr 1 ds
r s
Ecuación 9
b0 b
b0 (r dr , s ds) b0
dr 0 ds
r s
Los valores de la parte izquierda de la igualdad son evaluados en r y s. Obsérvese que
el segundo término y el término de orden superior se han despreciado. Ya que en
forma implícita – r y – s son muy pequeños y los términos de orden superior pueden
ser despreciados, pero otra consideración es que los valores de inicio de son tan
cercanos a los valores de r y s de las raíces.
Para dar un valor inicial que se acerque a las raíces es el colocar la Ecuación 9 igual a
cero y que resulte:
Ecuación 10
b1 b
r 1 s b1
r s
b0 b
r 0 s b0
r s
Si las variables r y s forman un sistema de ecuaciones de dos incógnitas y el
método de Bairstow muestra que las derivadas parciales pueden resolverse por
división sintética de las b en forma similar al camino en que las b en sí mismas fueron
derivadas:
c n bn
c n1 bn1 rc n Para i n 2 a 0
ci bi rci 1 sci 2
Entonces las derivadas parciales se obtienen por división sintética de las 𝑏, y las 𝑏 con
las derivadas parciales son sustituidas en las fórmulas de la Ecuación 10 y se obtiene:
c 2 r c3 s b1
c1r c 2 s b0
Estas ecuaciones pueden ser resueltas para mejorar los valores de r y s, se podría
utilizar el error aproximado para cada paso pero no es para nuestro caso realmente
utilizado pero quedaría de la siguiente forma:
r
a ,r 100 %
r
y
s
a ,s 100 %
s
Cuando los dos valores fallan bajo un criterio especificado las raíces pueden
determinarse con la siguiente ecuación:
r r 2 4s
x
2
Aquí pueden caber tres posibilidades:
fc x 2 (1) x 2 x 2 x 2
f ( x) fc
Solución. Teniendo que realizar
Ax B f 1 ( x)
Iteración 1 con:
Ahora realizando la división del polinomio resultado entre el polinomio factor fc x 2 x 2 se tiene:
r 0.04728019113442016
s 3.469106187802152
De donde
Iteración 3.
De donde
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
k r s Residuo
0 -1.000000 2.000000 30.750000 -61.75000
1 1.763680 7.403374 51.756406 105.68578
2 1.716400 3.934260 12.654710 28.188140
3 1.599731 2.450680 2.8995800 8.154670
4 1.333540 2.186660 0.7601220 2.522228
5 1.118260 2.113020 0.2719400 0.607688
6 1.027050 2.023170 0.0431300 0.111850
7 1.001650 2.001530 0.0027700 0.006340
8 1.000000 2.000000 1.13930E-5 2.67534E-5
La solución es:
x1 = 2
x2 = -1
f 5 ( x) a5 x 5 a4 x 4 a3 x 3 a2 x 2 a1 x a0 , donde
Formulas apropiadas:
bn an
bn1 an1 rbn
bi ai rbi1 sbi2 , para i n 2 hasta 0
Cálculos:
b5 a5 1
b4 a4 rb5 3.5 11 4.5
b3 a3 rb4 sb5 2.75 (1)(4.5) (1)(1) 6.25
b2 a2 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 a0 rb1 sb2 1.25 (1)(10.5) (1)(0.375) 11.375
c5 b5 1
c 4 b4 rc5 4.5 (1)1 5.5
c3 b3 rc4 sc5 6.25 (1)(5.5) (1)(1) 10.75
c 2 b2 rc3 sc4 0.375 (1)(10.75) (1)(5.5) 4.875
c1 b1 rc2 sc3 10.5 (1)(4.875) (1)(10.75) 16.375
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
r = -1 + 0.3558 = -0.6442
s = -1 + 1.1381 = 0.1381
0.3558
a ,r 100% 55.23%
0.6442
y
1.1381
a,s 100% 824.1%
0.1381
Como el error es demasiado grande entonces se realiza de nuevo el cálculo usando los
nuevos valores encontrados para s y r.
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
Para r 0.1331 y s 0.3316 , los cuales pueden usarse para estimar la raíz correcta
como
a ,r 26 .0%
y
a ,s 70 .6%
El cálculo debe continuar, por los valores tan altos en el error que se calcula. Con los
resultados después de cuatro iteraciones, el método converge a los valores de r = -0.5
( a ,r 0.063% ) y s = 0.5 ( a , s 0.040% ). La fórmula general puede emplearse para
evaluar las raíces como
f ( x) x 3 4 x 2 5.25x 2.5
El método 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
2 (2) 2 4(1.249)
x 1 0.499i
2
Dado el polinomio f 5(x) x 5 3.5x 4 2.75x 3 2.125x 2 3.875x 1.25 , determinar las
raíces de este polinomio. Considere r0 = -1 y s0 = -1.
f 5(x) ( x 3 4 x 2 5.25x 2.5 )*( x 2 0.5x 0.5 ) Pol Resultado * Pol Factor
Las raíces del polinomio factor del Paso 1, dado por x 2 0.5x 0.5 0 son:
x1 0.5 y x2 1.0
x3 1 0.5 j
x4 1 0.5 j
Paso 3. Acá no se realiza ninguna operación porque el polinomio original para este
paso es de orden 1. Es decir se trata de una recta.
f1 ( x) ( x 2)
x5 2 ;
Código en lenguaje C
Aquí el código de una función que saca los factores cuadráticos 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 Precisión \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;
}
Código 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 ecuación
it=0; % Se inicia el contador de iteraciones
limit_it=1000; % Se define el límite en el numero de iteraciones
tol=0.0001; % Se define la tolerancia de la estimación
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 raíces del polinomio
if (n-1>=3);
else break,end % Condición si el grado de la raíz es mayor a 3
t=[1 r s]; % Esta es el polinomio cuadrático de inicio
it=it+1; % Se incrementa en 1 la iteración
[x,y]=deconv(z,t); % Se divide la ecuación 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
Recursos Bibliográficos
MATHEUS. John H. Fink Kurtis D. Métodos Numéricos con MATLAB. Editorial Prentice Hall
ALTZ, Franz L. Electronic. Digital. computers: Their use in science and
Engineering. 1958 Academic Press inc. New York.
BURDEN Richard L., J. Douglas Faires; Análisis numérico. tr. Efrén Alatorre Miguel; Revisión
Técnica. Ildefonso. 1998 (Biblioteca USCO. Nro Topográfico: 515 / B949a.)
CHAPRA Steven C., CANALE Raymond P, Numerical Methods for engineers. McGraw Hill, Inc.
1988. 839p. ISBN 0-07-909944-0.
CHAPRA Steven C., CANALE Raymond P. Métodos numéricos para ingenieros: con aplicaciones
en computadoras personales. 1988 (Biblioteca USCO Nro Topográfico: 519.5 / C467m)
CONDE S. D, Carl de Boor. Análisis numérico elemental: Un enfoque algorítmico. Mc. Graw-Hill
1972, (Biblioteca USCO Nro Topográfico: 511.8 / C761 Biblioteca).
CORMICK MC., John M. and SALVADOR M.C. Numerical Methods in FORTRAN. 1964. Prentice-
Hall Inc Englewood Cliffs N:J.
CURTIS, F. Gerald, WHEATLEY, O. Patrick. Análisis numérico con aplicaciones. Tr. Hugo
Villagomez Vasquez. 6 Ed. Pearson Educación. 2000, 698p. ISBN 968-444-393-5
FADDEEVA, V.N. Computacional methods of linear algebra, Dover Publications. 1969, New
York.
GASTINEL Noél; Análisis numérico lineal. tr. Javier Ruiz Fernández de Pinedo. 1975. (Biblioteca
USCO Nro Topográfico: 511.7 / G255).
GREENSPAN, D. Theory and solutions of Ordinary Differencial Equations. 1960 The. Mc Millan
Co. New York.
KINCAID David y Ward Cheney; Análisis numérico: Las matemáticas del cálculo científico. tr.
Rafael. 1994 (Biblioteca USCO Nro Topográfico: 515 / K51a).
LUTHE. Rodolfo, OLIVERA Antonio, SCHUTZ Fernando, Métodos numéricos. 1986 (Biblioteca
USCO Nro Topográfico: 511.7 / L973m).
McCRACKEN, Daniel D., Métodos numéricos y programación fortran: con aplicaciones en
ingeniería y ciencias. 1986. Editorial Limusa. México. (Biblioteca USCO Nro. Topográfico:
001.6424 / M117).
NAKAMURA Shoichiro; Análisis numérico y visualización gráfica con MATLAB. tr. Roberto
Escalona García. 1998 (Biblioteca USCO N ro Topográfico: 515.1 / N163a).
NAKAMURA Shoichiro; Métodos numéricos aplicados con software. tr. Oscar Alfredo Palmas
Velasco. Prentice Hall Hispanoamericana S.A. 1995. 570p. (Biblioteca USCO. Nro. Topográfico:
511.8 / N163m) ISBN 968-880-263-8
NIETO RAMIREZ José A., Métodos numéricos en computadoras digitales. Editorial Limusa
1980. (Biblioteca USCO Nro Topográfico: 001.64042 / N677).
RALSTON Anthony; Introducción al análisis numérico. tr. Carlos E. Cervantes de Gortari.
Editorial Limusa. Mexico. 1978. 629p. (Biblioteca USCO Nro Topográfico: 511.7 / R164.)
SCARBOROUGH, J.B Numerical mathematics analysis
SIERRA ROMERO, Alberto. Manual de Métodos Numéricos. Universidad Tecnológica de Pereira.
SMITH, W. Allen; Análisis numérico. tr. Francisco Javier Sánchez Bernabe; Rev. Téc. José Luis
Turriza Pinto. Prentice Hall Hispanoamericana S.A. 1988. 608p. (Biblioteca USCO Nro
Topográfico: 515 / S664a) ISBN 968-880-119-4.
STANTON, Ralp G. Numerical Methods for Science and Engineering. 1967. Prentice-Hall
Inc. Englewood Cliffs N.J
Bibliografia OnLine:
http://sai.uam.mx/apoyodidactico/mn/
http://www.unalmed.edu.co/~ifasmar/libro.shtml
http://www.iesrodeira.com/metodos_numericos/index-2.htm
http://uprhmate01.upr.clu.edu/~pnm/notas4061/index.htm
http://mailweb.udlap.mx/~ccastane/Analisis_Numerico_html/Lindley.html#RegresaGral1
http://www.ii.uam.es/~pedro/ccii/teoria/
http://webdiee.cem.itesm.mx/web/servicios/archivo/tutoriales/metodos/algoritmos/index.html
http://www.ucsc.cl/~kdt/numerico/index.htm
http://luda.azc.uam.mx/curso2/cp2indic.html
http://www.geocities.com/SiliconValley/Pines/7894/metodos/
http://www.uv.es/~diaz/mn/fmn.html
http://proton.ucting.udg.mx/posgrado/cursos/metodos/temario.html
http://webdiee.cem.itesm.mx/web/servicios/archivo/tutoriales/metodos/algoritmos/index.html
http://www.damtp.cam.ac.uk/user/fdl/people/sd/lectures/nummeth98/contents.htm
http://anamat1.csi.ull.es/anamat_p/Titulaciones/matematicas.htm
http://www.cnice.mecd.es/Descartes/
http://mathworld.wolfram.com/
http://www.elprisma.com/
http://www-gap.dcs.st-and.ac.uk/~history/index.html
http://www.ciencia-hoy.retina.ar/indice.htm
http://omega.ilce.edu.mx:3000/sites/ciencia/html/fisica.htm
http://books.pdox.net/
http://arxiv.org/
http://pessoal.sercomtel.com.br/matematica/resumos.htm
http://www.itlp.edu.mx/publica/tutors.htm
http://www.rinconmatematico.com/libros.htm