MARCO TEORICO 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. Elalgoritmo 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.
MÉTODO DE BAIRSTOW El método de Bairstow es un proceso iterativo relacionado aproximadamente con los métodos de Müller y Newton-Raphson. Recuérdese la forma factorizada de un polinomio:
)( )()() () ( )( 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. Con estas bases se puede elaborar un algoritmo para determinar la raíz de un polinomio: 1) suponiendo que el valor inicial de la raíz es factor
x t ,
x t ,
2) al dividir el polinomio entre el
y 3) determinando si existe un residuo. Si hay un residuo, el valor puede
ajustarse en forma sistemática y el procedimiento repetirse hasta que el residuo desaparezca y la raíz sea localizada. El método de Bairstow se basa por lo general en esta aproximación. El proceso matemático depende de dividir el polinomio entre un factor. Por ejemplo, el polinomio general:
()
Puede dividirse entre el factor más bajo, con un residuo
x t para
R b0 ,
producir un segundo polinomio que dé un orden
donde los coeficientes son calculados por la relación de
recurrencia.
Obsérvese que si t fue una raíz del polinomio original, el residuo b 0 sería igual a cero. Para permitir la evaluación de raíces complejas, el método de Bairstow divide el polinomio entre un factor cuadrático x
2
rx s .
El resultado es un nuevo polinomio con un residuo:
( ) Como con una división sintética normal, la simple relación de recurrencia puede usarse para realizar la división entre un factor cuadrático:
bn a n bn 1 a n 1 rbn
Para
i n2
a0
bi ai rbi 1 sbi 2
El factor cuadrático se introduce para permitirla determinación de las raíces complejas. Los cambios,
r
y
s ,
necesarios para mejorar nuestros valores iniciales se pueden
estimar por medio de:
Bairstow muestra que las derivadas parciales pueden obtenerse por división sintética de las b en forma similar al camino en el cual las b en si mismas fueron derivadas:
Para Entonces, las derivadas parciales se obtienen por división sintética de las b. Así, las derivadas pueden sustituirse en las ecuaciones anteriores junto con las b para dar:
Estas ecuaciones pueden resolverse para
r
y
s ,
las cuales pueden emplearse para
mejorar los valores iniciales de r y s. en cada paso, el error aproximado en r y s puede ser estimado como en:
| | Y
| | Cuando ambos errores estimados fallan bajo un criterio especificado de paro, valores de las raíces pueden determinarse como
√
s
, los
EJEMPLO:
Emplee el método de Bairstow para determinar las raíces de un polinomio.
() Valores iniciales de r=s=-1 e iterando a un nivel de Solución:
Obtenemos como solución tres valores de raíces
TABLA DE ITERACIONES:
ITERACIÓN
r
s
Nuevo r
Nuevo s
Δr
Δs
1
1
-1
1.085
-0.1128
1.085
0.887
2
1.085
-0.1128
2.49
-0.67
0.402
-0.556
3
2.49
-0.876
2.426
-0.876
-0.064
-0.206
4
2.426
-0.876
2.43
-0.87
0.0076
0.0045
Que nos acercan a las raíces:
PROGRAMA MÉTODO DE BAIRSTOW
#include #include #include Usingnamespace std; #define F(x)(x*x)-4 #define FD(x)(2*x) #define FP(x)(x*x)+x-4 #define FE(x,y)(x*y)+1 void main(){ clrscr(); cout<<" METODO DE BAIRSTOW "<
cin>>n; cout<
cin>>a[i]; } cout<<”Digite la suposicion del coeficiente r: ";
cin>>r; cout<
cin>>s; do { b[0] = a[0]; c[0] = a[0]; b[1] = a[1] - r*b[0]; c[1] = b[1] - r*c[0]; 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]; } j = c[n-2]*c[n-2] - c[n-3]*(c[n-1] - b[n-1]); dr = (b[n-1]*c[n-2] - b[n]*c[n-3])/j; ds = (b[n]*c[n-2] - b[n-1]*(c[n-1] - b[n-1]))/j;
r += dr; s += ds; } while (dr > 0.01 || ds > 0.01);
cout<<”La ecuacion resultante es x^2 +” <
cin>>x0; fx=x0*x0+r*x0+s;
do{ fx=x0*x0+r*x0+s; fdx=2*x0+r; x1=(x0-(fx/fdx)); x0=x1; }while (fabs(fx)>=0.00001); cout<<"La raiz encontrada es igual a"<
cin.sync(); cin.get(); } Ejemplo 2
() , =-1 y =2.
Dado el polinomio determinar los valores r y s que hacen el residuo igual a cero. Considere ITERACION 1
( ) d a como resultado ()
La división sintética con el polinomio Residuo = {30.75, -61.75}
Entonces:
-43.875 108.125
16.75 -43.875
dr ds
-30.75 61.75
En donde: r1 = -1.0 + 2.7636812508572213 =1.7636812508572213 s1 = 2.0 + 5.403374022767796 =7.403374022767796
ITERACION 2
() da ()
La división sintética con el polinomio como resultado
Residuo = {51.75640698828836, 105.68578319650365} Entonces: 27.628006 14.542693 dr 208.148405 27.62800 ds
-51.75640 -105.68578
En donde: r2 = 1.7636812508572213 - 0.04728019113442016 = 1.7164010597228012 s2 = 7.403374022767796 - 3.469106187802152 = 3.934267834965644 En resumen: k 0 1 2 3 4 5 6 7 8
r -1 1.76368 1.71640 1.599731 1.33354 1.11826 1.02705 1.00165 1.00000
s 2 7.403374 3.93426 2.450680 2.18666 2.11302 2.02317 2.00153 2.00000
RESIDUO 30.75 -61.75 51.756406 105.68578 12.65471 28.18814 2.89958 8.15467 0.760122 2.522228 0.271940 0.607688 0.04313 0.11185 0.00277 0.00634 1.13930E-5 2.67534E-5
() y () Las raíces de ( ) s on: y
La solución es:
GLOSARIO Método: es una palabra que proviene del término griego methodos ( “camino” o “vía”) y que se refiere al medio utilizado para llegar a un fin . Su significado original señala el camino que conduce a un lugar. Polinomio: Un polinomio es una expresión hecha con constantes, variables y exponentes, que están combinados usando sumas, restas y multiplicaciones pero no divisiones. División sintética:Es un método rápido y exacto para dividir un polinomio polinomio lineal de la forma
entre un
. El método se describe en la forma siguiente:
Se colocan los coeficientes de en orden descendente de las potencias de x, colocando cero como coeficiente de cada potencia que no aparezca. Después de escribir el divisor en la forma
, se usa
para generar la segunda
y la tercera fila así: se baja el primer coeficiente del dividendo y se multiplica por ; se suma el producto al segundo coeficiente del dividendo, se multiplica esa suma
por y se suma al tercer coeficiente del dividendo. El proceso se sigue hasta que un producto se suma al término constante del dividendo. El último número de la tercera fila es el residuo; los otros números de la tercera fila son los coeficientes del cociente, que es de un grado menor que
.
Martínez Arriaga Miguel Ángel 2011300590 Conclusiones Podemos observar que es un método algo laborioso, ya que se emplea muchos cálculos pero al parecer es muy exacto. Es muy útil cuando queremos saber las raíces de polinomios de grados altos, como grado cuatro o cinco. Una de las ventajas principales de este método radica en la forma concisa en la cual tales fórmulas de recurrencia pueden programarse. Martínez Arriaga Miguel Ángel 2011300590 Bibliografía Métodos numéricos para ingenieros, quinta edición, Steven C. Chapra Canale, Mc Graw Hill.
– Raymond
P.