Вы находитесь на странице: 1из 9

MARCO TEORICO

En anlisis numrico, el mtodo de Bairstow es un algoritmo eficiente de bsqueda de las races de un polinomio real de grado arbitrario. Elalgoritmo 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.

MTODO DE BAIRSTOW
El mtodo de Bairstow es un proceso iterativo relacionado aproximadamente con los mtodos de Mller y Newton-Raphson. Recurdese la forma factorizada de un polinomio:

( )

)(

)(

)(

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 hay un residuo, el valor puede ajustarse en forma sistemtica 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, el polinomio general:

( )

Puede dividirse entre el factor x t para producir un segundo polinomio que d un orden ms bajo, con un residuo R b0 , donde los coeficientes son calculados por la relacin de recurrencia.

Obsrvese que si t fue una raz del polinomio original, el residuo b 0 sera igual a cero. Para permitir la evaluacin de races complejas, el mtodo de Bairstow divide el polinomio entre un factor cuadrtico x 2 rx s . El resultado es un nuevo polinomio con un residuo: ( )

Como con una divisin sinttica normal, la simple relacin de recurrencia puede usarse para realizar la divisin entre un factor cuadrtico:

bn a n bn 1 a n 1 rbn bi ai rbi 1 sbi 2


Para i n 2 a 0

El factor cuadrtico se introduce para permitirla determinacin de las races 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 divisin sinttica 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 divisin sinttica 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, s , los valores de las races pueden determinarse como

EJEMPLO:
Emplee el mtodo de Bairstow para determinar las races de un polinomio.

( ) Valores iniciales de r=s=-1 e iterando a un nivel de

Solucin:
Obtenemos como solucin tres valores de races

TABLA DE ITERACIONES:

ITERACIN 1 2 3 4

r 1 1.085 2.49 2.426

s -1 -0.1128 -0.876 -0.876

Nuevo r 1.085 2.49 2.426 2.43

Nuevo s -0.1128 -0.67 -0.876 -0.87

r 1.085 0.402 -0.064 0.0076

s 0.887 -0.556 -0.206 0.0045

Que nos acercan a las races:

PROGRAMA MTODO DE BAIRSTOW #include<iostream> #include<math.h> #include <stdlib.h> 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 "<<endl<<endl; int i,n; float fx,fdx,x0,x1,fx1,fx2,r,s,dr=0,ds=0,j,a[10],b[10],c[10]; cin.sync(); cout<<endl <<Digite el grado del polinomio (mayor que 1): ; cin>>n; cout<<Digite los coeficientes: "; for (i=0; i<=n; i++){ cout<<a<<i<<= ; cin>>a[i]; } cout<<Digite la suposicion del coeficiente r: "; cin>>r; cout<<endl<<Digite la suposicion del coeficiente s: "; 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 + <<r<<x + <<s; cout<<endl<<Digite un valor para hallar las raiz del polinomio: "; 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"<<x0<<endl; cout<<Presione una tecla para volver al menu de ecuaciones de raices"; cin.sync(); cin.get(); } Ejemplo 2 Dado el polinomio ( ) determinar los valores r y s que hacen el residuo igual a cero. Considere ITERACION 1 La divisin sinttica con el polinomio ( ) Residuo = {30.75, -61.75} Entonces: -43.875 108.125 16.75 -43.875 dr ds -30.75 61.75 da como resultado ( ) , =-1 y =2.

En donde: r1 = -1.0 + 2.7636812508572213 =1.7636812508572213 s1 = 2.0 + 5.403374022767796 =7.403374022767796

ITERACION 2 La divisin sinttica con el polinomio ( ) como resultado ( ) Residuo = {51.75640698828836, 105.68578319650365} Entonces: 27.628006 14.542693 dr 208.148405 27.62800 ds 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 30.75 51.756406 12.65471 2.89958 0.760122 0.271940 0.04313 0.00277 1.13930E-5 y ( ) son: y RESIDUO -61.75 105.68578 28.18814 8.15467 2.522228 0.607688 0.11185 0.00634 2.67534E-5 -51.75640 -105.68578 da

La solucin es: ( ) Las races de ( )

GLOSARIO Mtodo: es una palabra que proviene del trmino griego methodos (camino o va) y que se refiere al medio utilizado para llegar a un fin. Su significado original seala el camino que conduce a un lugar. Polinomio: Un polinomio es una expresin hecha con constantes, variables y exponentes, que estn combinados usando sumas, restas y multiplicaciones pero no divisiones. Divisin sinttica: Es un mtodo rpido y exacto para dividir un polinomio polinomio lineal de la forma . El mtodo se describe en la forma siguiente: entre un

Se colocan los coeficientes de en orden descendente de las potencias de x, colocando cero como coeficiente de cada potencia que no aparezca. Despus 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 trmino constante del dividendo. El ltimo nmero de la tercera fila es el residuo; los otros nmeros de la tercera fila son los coeficientes del cociente, que es de un grado menor que .

Martnez Arriaga Miguel ngel 2011300590 Conclusiones Podemos observar que es un mtodo algo laborioso, ya que se emplea muchos clculos pero al parecer es muy exacto. Es muy til cuando queremos saber las races de polinomios de grados altos, como grado cuatro o cinco. Una de las ventajas principales de este mtodo radica en la forma concisa en la cual tales frmulas de recurrencia pueden programarse. Martnez Arriaga Miguel ngel 2011300590 Bibliografa Mtodos numricos para ingenieros, quinta edicin, Steven C. Chapra Raymond P. Canale, Mc Graw Hill.

Вам также может понравиться