Está en la página 1de 16

ECUACIONES POLINOMIALES - 1

- 81 -

5. ECUACIONES POLINOMIALES - 2
En este tema se continúa con el estudio de los métodos que permiten encontrar las soluciones reales e imaginarias de ecuaciones polinomiales de la forma:

P n ( x)=a1 x +a 2 x
5.1. MÉTODO DE NEWTON-RAPHSON

n

n−1

+a 3 x

(n−2)

+⋯+an x+a n+1=0

(5.1)

El método de Newton – Raphson (al igual que los otros métodos estudiados en los temas 2 y 3) permite encontrar una de las soluciones reales de una ecuación polinomial. Si bien es posible emplear directamente los programas elaborados en dichos temas, en el caso específico de las ecuaciones polinomiales resulta más eficiente calcular el valor del polinomio y el de su derivada mediante el proceso de división sintética. Algo que resulta particularmente útil en para el método de Newton – Raphson (que como se sabe requiere el valor de la función y el de la derivada). 5.1.1. División sintética La división sintética es el modo más eficiente de calcular el valor de un polinomio y el de su derivada. Así por ejemplo, si se quiere calcular el valor del siguiente polinomio y el de su derivada para “x=2” (x1=2):

P 3 ( x )=x 3+x 2 −3x−3=0
Se divide el polinomio entre “x-2” y el cociente resultante se vuelve a dividir entre “x-2”:
x1 = 2 1 1 -3 -3 2 1 3 1 5 6 3 6 3 ¬ valor de la función: f(2)

2 10 13 ¬ derivada de la función: f'(2)

Como se puede deducir fácilmente, si “a” son los coeficientes del polinomio original, los coeficientes resultantes de la división sintética: “b” se calculan con:

b1=a 1 bi =a i+b i−1⋅x 1 {i=2 → n+1
Donde “n” es el grado del polinomio.

(5.2)

Puesto que en ocasiones puede ser de utilidad los resultados de la división sintética se elaborará una función para este fin y dado que la fórmula es muy simple puede ser programada directamente: function b=divsin1(a,x1) n=length(a); b=0; b(1)=a(1); for i=2:n b(i)=a(i)+b(i-1)*x1; end end

1. Para ello es necesario declarar la o las variables simbólicas con “syms” (como se ha hecho).-3.1)= 19379.1876077 ] >> divsin1(ans(1:7).1. Una vez repasado el proceso de división sintética se pasa a modificar el método de Newton Raphson para el caso específico de las ecuaciones polinomiales.-8.2) y = 3 Es posible también calcular el cociente y el residuo con “divide”: >> syms x >> divide(x^3+x^2-3*x-3. Tomando en cuenta la anterior consideración se ha elaborado el algoritmo se presenta en la siguiente página.1”: P 7 (x )=7⋅x7 +3⋅x 4 – 8⋅x 4+3⋅x−9=0 >> a=[7.7 70. se calculará el valor del siguiente polinomio y el de su derivada para “x=3.0.4947 2016.2) b = [ 1 5 13 ] Que también concuerda con los resultados del ejemplo manual.-3.1)= 43922.649869.0.748 3269. Dado que en el método de Newton Raphson sólo son de interés el residuo de la primera y segunda división (el valor de la función y su derivada).837 650.81 844.254067000001 19379.-9].x-2) ans = [ x^2+3*x+3 3 ] En este caso el comando “divide” trabaja con expresiones simbólicas..1) b = [ 7.3. sólo cambia la forma en la que se calcula el valor de la función (del polinomio) y el de su derivada.53357 6254. no es necesario almacenar los coeficientes de los polinomios residuales.3.0.x. >> divsin1(a.2) b = [ 1 3 3 3 ] Que son los mismos resultados obtenidos en el ejemplo manual. El valor del polinomio puede ser calculado también con “polyval”: >> polyval([1. Algoritmo y código El método de Newton – Raphson en si no cambia.-3]. .1876077 y el de su derivada P'7(3.3.0 21.3.27 209.2135 12151.649869 ] Entonces el valor del polinomio es P7(3. Llamando nuevamente a “divsin1” con los primeros tres elementos del vector resultante se obtiene: >> divsin1(ans(1:3).1.82 - Hernán Peñaranda V. Llamando al módulo con los datos del ejemplo manual se obtiene: >> divsin1([1.4 204.2. 5. El residuo (el valor de la función) es 3 y el cociente (la ecuación polinomial resultante) es “x3+3x+3=0”.-3].0 43.09542 43922. cuy+os coeficientes son los obtenidos con la división sintética: >> coeff(ans(1).2:-1:0) ans = [ 1 3 3 ] Como otro ejemplo.1) b = [ 7.

end end Llamando a la función con los coeficientes de la ecuación polinomial: P 3 ( x )=x 3+2⋅x 2+3⋅x+4=0 Se obtiene: >> newtonp([1.x2). end x1=x2.2.83 - El códigio respectivo en Jasymca es: function x2=newtonp(a.4].50) .1.li) c=1. n=length(a). while 1 f=a(1).1 .c. end if abs(f)<err x2=x1. for i=2:n df=f+df*x1. f=a(i)+f*x1. printf("%f: %f\n". return end x2=x1-f/df.ECUACIONES POLINOMIALES . if abs(x1/x2-1)<err return end if c++==li error("error-newtonp: %f\n".x1.3.1.err.x2).1e-16. df=0.

17468540428030602+1. una vez probada la función se puede suprimir la impresión de resultados intermedios (anteponiendo un % a “printf”).6506291914393882 Como Jasymca puede trabajar con números complejos.0: 0. Otra alternativa consiste en encontrar una solución (o dos si son complejas) y trabajar luego con el polinomio residual para encontrar otra (u otras dos soluciones). estimando los valores iniciales con el método QD y verificando las soluciones con “roots”.6506291914393907 8.765893511959711i ] Como se sabe que los resultados complejos vienen en pares conjugados.1746854039107681+1.1+1i.650629251212898 7.16298515499483 3.6724823714029426 5.50) 1.100) x = [ 3.2.09809610154125115 2. se obtiene: .17170224585665017+1. por esta razón en este tema se empleará la primera alternativa.765893511959711i 2. es posible encontrar también soluciones complejas. x 4 −12x3+70x2 −204x+325=0 Los valores iniciales (error=1e-2) estimados con QD son: >> a=[1. Ejemplos 1.70. con el método de Newton Raphson.-204.5468688872313963i). Llamando la primera vez con x1.0: -1.0: -1.0: (-0.17468540428030602+1.0: (-0.0: -1.3101857771760668i 2.17468540428030602-1.0: -1. Por lo tanto.3101857771760668i 3.0: -1.0: (-0.-0.1e-2.8460135373217041 4. Encuentre las soluciones (error=15 dígitos) de la siguiente ecuación.17468540428030588+1. 1.4].5529064167209425i) 4.1.105697632552533+2.5099351110123196+1.21498165769334393+1.5468688872313963i) x2 = -0.17467056310830922+1.6509334625984056 6.546898529064582i) 5. Como de costumbre.894302367447466+3. 5.0: (-0.105697632552533-2. x=qd(a.0: (-0.-12. sólo es necesario llamar dos veces al método de Newton.638434115021929i) 2.0: -1.894302367447466-3.5468688872313963i Como se sabe.0: -1. No obstante este procedimiento con frecuencia lleva a soluciones erróneas debido a que el error cometido al encontrar la primera solución se propaga a la segunda y de este a la tercera y así sucesivamente.0: (-0.1e-16.3.5468688872313963i) 7.. las soluciones complejas siempre vienen en pares conjugados. para ello simplemente se da un valor inicial adecuado: >> newtonp([1.6506291914393882 x2 = -1.84 - Hernán Peñaranda V. si se tienen valores iniciales adecuados es posible encontrar todas las soluciones con el método de Newton Raphson.3.4653953736822276i) 3.5468688879510515i) 6.325]. Dichos valores pueden ser encontrados con el método QD. por lo que al encontrar una en realidad se han encontrado dos (la otra solución en este caso es: -0.0: (-0. continuando así hasta que el polinomio residual es de segundo o primer grado.

n=length(a)-1.85 - >> newtonp(a. while ++i<=n r(i)=newtonp(a.0i Para la tercera solución se emplea como valor inicial x3: >> newtonp(a.9999999999999996-2. por ejemplo al calcular la raíz cuadrada de 2 se obtiene: >> sqrt(2) ans = 1.x. if imagpart(r(i))~=0 r(i+1)=conj(r(i)). .li) r=0.1e-15.100) x2 = 1.000000000000001+3. i++.x(i).err.0i La segunda solución es el par conjugado de la primera: >> conj(ans) ans = 4.000000000000001-3.err.9999999999999996i Siendo la cuarta solución el para conjugado de la tercera: >> conj(ans) ans = 1. end end end Llamando a esta función se obtiene: >> newtonr(a.100) x2 = 4.9999999999999996+2.x(1). para ver los resultados en el sistema decimal (10) con 9 dígitos de precisión se escribe: >> format 10 9 A partir de esta orden todos los resultados se muestran con 9 dígitos. i=0.li).9999999999999996i En consecuencia las soluciones (redondeadas a los 15 dígitos considerados en el error) son: x1= x2= x3= x4= 4+3i 4-3i 2+3i 2-3i En Jasymca para ver los resultados con un determinado número de dígitos se emplea la instrucción: format base número_de_dígitos Por ejemplo.x.ECUACIONES POLINOMIALES .41421356 Es posible calcular las cuatro soluciones con una sola instrucción si se emplea un ciclo “while” y una condición “if” para determinar si el resultado es o no complejo (si tiene o no parte imaginaria).1e-15.100) r = [ 4+3i 4-3i 2+3i 2-3i ] Con “roots” se obtiene: >> roots(a) ans = [ 4-3i 4+3i 2-3i 2+3i ] Que son las mismas soluciones calculadas con “newton”. tal como se ha hecho en la siguiente función: function r=newtonr(a.1e-15.1 .x(3).

2.19912197-1.-6.63926123i -0.-265.30044111045+1.17788017541i 1. con el método de Newton Raphson.-5. x=qd(a.200) x = [ 3.-21.02901594494+3.34.401122418117i ] 3.11.40865702723i 1.35328093133i ] Y las soluciones calculadas con “newtonr” son: >> newtonr(a.41.17788017541i -1.86 - Hernán Peñaranda V.-7.38877500559+0.35328093133i 1.52287435-0. estimando los valores iniciales con el método QD y verificando las soluciones con “roots”.02901594494-3.401122418117i 1.1e-3. Encuentre las soluciones (error=9 dígitos) de la siguiente ecuación.02427058 1.64471068-1.1e-9.12.38877500559-0.52287435-0.-48].64471068+1.63926123i -0.1e-12.-7.401122418117i ] Con “root” se obtienen las mismas soluciones: >> roots(a) ans = [ 5.304236547i -0.90623436-1.41.-150]..1e-6.100) r = [ 3.x.52287435+0.38877500559+0.38230401 2.x.38235398 2.40865702723i -1.66032132377-1.35541404i 2.64903423i -3.54285033103 -1.66032132377-1.231.401122418117i 1.66032132377+1.11. 5 4 3 2 x 8−7x 7+11x 6+41x5−183x 4+231x3 −21x 2−265x – 150=0 Los valores iniciales con QD (error 1e-6: generalmente mientras mayor es el grado mayor debe ser la precisión) son: >> format 10 9 >> x=qd([1.-265.19912197-1.63926123i 1. Encuentre las soluciones (error=12 dígitos) de la siguiente ecuación.90623436+1.500) x = [ 5.304236547i .-183.17788017541i -1.64903423i 2.35541404i -3.63926123i 1.-21.30044111045-1.19912197+1. con el método de Newton Raphson.54309263636 -1.17788017541i 1.-150]. estimando los valores iniciales con el método QD y verificando las soluciones con “roots”.231.100) r = [ 5. x – 5x – 6x +12x +34x−48=0 Los valores iniciales estimados con QD (error 1e-3) son: >> format 10 12 >> a=[1.-183.54726798 1.66032132377+1.19912197+1.38877500559-0.304236547i ] Y las soluciones calculadas con “newtonr” son: >> newtonr([1.54309263636 -1.

52287435-0. MÉTODO DE BAIRSTOW El método de Bairstow permite calcular 2 de las raíces de una ecuación polinomial. ¿Para qué sirve el comando “syms”? 2. ¿Con qué instrucción se obtiene el valor de un polinomio.64471068-1. Para ello se divide el polinomio entre una ecuación de segundo grado (x2-rx-s) y el método va cambiando los coeficientes del divisor (“r” y “s”) hasta que el residuo se hace cero. ¿Por qué no es confiable encontrar otras soluciones con el polinomio residual? 6. ¿Con qué instrucción se obtiene el cociente y el residuo de un polinomio en Jasymca? 5.64903423i 2. ¿Cuáles son los valores del polinomio y de sus derivada para los polinomios de los ejemplos? 9.41. ¿Qué instrucción se debe escribir en Jasymca para ver los resultados en notación binaria y con 14 dígitos? 7. este procedimiento puede dar lugar a resultados erróneos (debido a la propagación del error).64471068+1. ¿Cuál es el menor error que se puede emplear en el método QD para obtener valores iniciales adecuados en el último ejemplo? 10.87 - -0. Para obtener el valor de un polinomio para un valor de “x” igual a -7.¿Cuáles son las soluciones que se obtienen.52287435+0.-183.3) Entonces la ecuación de segundo grado puede ser resuelta obteniéndose así dos de las raíces del polinomio.304236547i -0. para los polinomios de los ejemplos.304236547i ] Que son las mismas soluciones sólo que no en el mismo orden.-21.64903423i -3. si los errores son: ejemplo 1: 1e-7.-7. Luego se puede repetir el proceso con el polinomio residual (Qn-2) y continuar así hasta encontrar todas las soluciones.02427058 3.38235398 1.304236547i ] Las soluciones calculadas con “roots” son: >> roots([1.1 . sin embargo y al igual que en el método de Newton Raphson.52287435+0. ¿Entre qué expresión se tiene que dividir el polinomio? 3. por lo que en general .19912197-1.-150]) ans = [ 2. para un valor dado de la variable independiente. es decir hasta que se cumple que: P n ( x) x −r⋅x−s 2 =Qn−2 ( x)⋅( x −r⋅x – s )=0 2 (5.63926123i -0. ejemplo 2: 1e-10 y ejemplo 3: 1e-15? 5.-265.11.19912197+1.231.2.ECUACIONES POLINOMIALES .63926123i 1. ¿Qué instrucción se debe escribir en Jasymca para ver los resultados en notación hexadecimal con 10 dígitos? 8. Preguntas 1. en Jasymca? 4.

3=0 Si se denomina “b” a los coeficientes resultantes de la primera división. se puede deducir fácilmente las ecuaciones generales para el cálculo de los coeficientes “b” resultantes: . y en general se cumple que: ∂b =c i−1 ∂r ∂b =c ∂ s i −2 (5.3⋅x 2+0. División sintética de segundo grado En la división sintética de segundo grado se divide el polinomio entre la ecuación cuadrática: x2-rx-s=0.4) Para llevar a cabo la división señalada en la ecuación (5.3).5. s=-1): P 4 ( x)=x 4 – 1. por lo que primero se repasará dicho procedimiento.8*x-0. entonces el residuo es: bn(x-r)+bn+1.5⋅x+3.2.5) Analizando las operaciones realizadas.8*(x-1)+0.88 - Hernán Peñaranda V. se puede deducir fácilmente de la igualdad: ( x−x 1 )⋅( x – x 2 )= x 2−r⋅x−s x 2−( x 1+ x 2)⋅x+x 1⋅x 2= x 2−r⋅x−s En consecuencia se cumple que: r =x 1+x 2 s=−x 1⋅x 2 (5.1. 5. Una segunda división sintética permite calcular las derivadas parciales de la función con relación a los coeficientes “r” y “s” de la ecuación cuadrática (estos valores son de utilidad en el método de Bairstow): Así. Con los resultados del ejemplo el residuo es: -0. el de la división sintética.7 = -0. Para recordar el procedimiento que se sigue en la división sintética se dividirá el siguiente polinomio entre x2+x+1 (r=-1.. el método más eficiente es. ∂4/∂r= 5. donde “n” es el grado del polinomio. se prefiere encontrar las soluciones con el polinomio original. una vez más. ∂b4/∂s = c2.1.1⋅x 3+2. La relación entre los valores iniciales asumidos (x 1 y x2) y la ecuación cuadrática x2-rx-s. empleando valores iniciales adecuados para converger hacia cada para de soluciones.

s) ) Δ s+⋯+∞=0 ∂r ∂s ∂ b n+1 ( r +Δ r . en ((5. s) ) Δ r+ ( b n+1( r . Por supuesto.r. se obtiene: .2 ] Que concuerdan con los resultados calculados manualmente. 5.8).b).-1) b = [ 1 -3.8 0.-1.3.3.6) Donde “n” es el grado del polinomio. siendo el residuo de la división: (5.1. Ello se puede lograr expandiendo los coeficientes “b n” y “bn+1”.-1) b = [ 1 -2. end end Llamando a esta función con los datos del ejemplo manual.1 3. se prosigue con el desarrollo del método de Bairstow.5 -3.4 -0.1 .7 ] Y para la segunda: >> divsin2(ans(1:4).5).8) Las derivadas parciales de este sistema son los coeficientes resultantes de la segunda división sintética del polinomio. s) ) Δ r+ ( b n (r .3) se cumpla. s)+ ∂ ( bn+1 (r .0.7) Dado que en ocasiones puede resultar útil el calcular la derivada sintética de segundo grado de forma independiente. como funciones de los coeficientes “r” y “s”: ∂ bn ( r+Δ r . s )) Δ s+⋯+∞=0 ∂r ∂s Donde Δr y Δs son los valores que deben sumarse a “r” y “s” para que tanto “bn” como “bn+1” sean cero.s) b=0. printf("b= %f\n". b(1)=a(1). s+Δ S )=bn +1 (r .-1.1 5. s+Δ S )=bn (r . reemplazando las igualdades de la ecuación (5. por eso sólo se toman los términos de primer orden con lo que el sistema queda en la forma: ∂b n ∂b Δ r + n Δ s=0 ∂r ∂s ∂b n+1 ∂b b n+1+ Δ r+ n+1 Δ s=0 ∂r ∂s b n+ (5. no es posible en la práctica resolver este sistema (que es más complicado aún que el problema original).3]. se obtiene para la primera división: >> divsin2([1.-1.2. Procedimiento Habiendo repasado el procedimiento para realizar la división sintética de segundo grado. en series de Taylor. b(2)=a(2)+b(1)*r. s)+ ∂ ( bn ( r . for i=3:length(a) b(i)=a(i)+b(i-1)*r+b(i-2)*s.2. el residuo de la división (ecuación (5.5. Para que la ecuación (5.7)) debe ser cero. se ha elaborado una función para este fin: function b=divsin2(a.2.89 - b1=a 1 b 2=a 2+b1⋅r bi =a i+b i−1⋅r +bi −2⋅x {i=2 → n residuo=bn⋅( x −r )+b n+1=b n⋅x+( b n+1−b n⋅r ) (5.ECUACIONES POLINOMIALES .

16254 ] c = [ 1 -2.1i. c n−1 Δ r+c n −2 Δ s=−b n c n Δ r+c n−1 Δ s=−b n+1 (5. x1=0.1i.r.s) b = [ 1 -0.3857 0. s+=ds r = -0. >> r=x1+x2.2 s = -2.90004 ds=(-b(n)-c(n-1)*dr)/c(n-2) = -1.1⋅x 3+2.1+0.5⋅x+3. Para comprender mejor el método. ecuación ((5.s).1-0.1544 Entonces se calculan los nuevos valores de “r” y “s”: >> r+=dr.1+0. Se inicializan variables y se calculan los valores de “r” y “s” (ecuación (5. Por eso el cálculo los valores de “r” y “s” que hacen “b n” y “bn+1” cero. se convierte en un proceso iterativo.34 3.2. Ahora se calculan los valores de “b” y “c” (por división sintética.r.1 0.6748 ] Como ni bn (b4) ni bn+1 (b5) son cero se calcula Δr y Δs (ecuación (5.7 1. es decir se deben ir calculando nuevos valores de “r” y “s” (r=r+Δr y s=s+“Δs”) hasta que los valores de “Δr” y “Δs” son cercanos a cero (exactitud) o hasta que los valores de dos iteraciones consecutivas de “r” y “s” sean casi iguales (precisión).3.9 2.s). x2=0.3.4)): >> a=[1.938 3.17979 .5001 2.4456 ] c = [ 1 -0. cuya solución es: Δ r= b n+1⋅c n−2 – b n⋅c n−1 2 cn −1 – c n⋅c n−2 −b n – c n−1⋅Δ r Δ s= c n−2 (5..94388 -0. x2=conj(x1).5.0.8 2.9054 ] >> dr=(b(n+1)*c(n-2)-b(n)*c(n-1))/(c(n-1)^2-c(n)*c(n-2)) dr = -0. c=divsin2(b.6))): >> b=divsin2(a.r. pues al haber truncado la serie de Taylor en los términos de primer orden.10) Al sumar estos valores a “r” y “s” no se consigue que “b n” y “bn+1” sean cero.3⋅x 2+0.9) Que es un sistema lineal de dos ecuaciones con dos incógnitas (Δr y Δs). los valores de “Δr” y “Δs” son solo aproximados.r.1.70004 s = -1. se aplicará manualmente el mismo a la siguiente ecuación polinomial: P 4 ( x)=x 4−1.0E-2 n=length(a)-1.90 - Hernán Peñaranda V.3=0 Asumiendo como valores iniciales: x1=0.s) b = [ 1 -1. s=-x1*x2 r = 0.1744 Como estos valores son muy diferentes a los iniciales.1i.3].94 1.8068 -4.-1.9615 1. se repite el proceso: >> b=divsin2(a. c=divsin2(b.10)): >> dr >> ds dr=(b(n+1)*c(n-2)-b(n)*c(n-1))/(c(n-1)^2-c(n)*c(n-2)) = -0.

1 >> b=divsin2(a. por lo que el proceso se repite: >> b=divsin2(a.9 s = -1.8329E-4 >> r+=dr.s) b = [ 1 -1. son iguales (en los 5 dígitos de precisión con los que se muestran los resultados).1 . c=divsin2(b.s) b = [ 1 -1.16457 >> r+=dr.9991 2. s+=ds r = -0.81E-8 >> ds=(-b(n)-c(n-1)*dr)/c(n-2) ds = -2.51 -0.91 - >> ds=(-b(n)-c(n-1)*dr)/c(n-2) ds = 0.94736i ] Una vez comprendido el procedimiento de cálculo se puede elaborar el algoritmo y el programa para el método.3432E-7 ] c = [ 1 -2.4887E-7 8.87983 s = -1. c=divsin2(b.1789 ] >> dr=(b(n+1)*c(n-2)-b(n)*c(n-1))/(c(n-1)^2-c(n)*c(n-2)) dr = -9.45-0.1874 ] >> dr=(b(n+1)*c(n-2)-b(n)*c(n-1))/(c(n-1)^2-c(n)*c(n-2)) dr = -9.0761 ] >> dr=(b(n+1)*c(n-2)-b(n)*c(n-1))/(c(n-1)^2-c(n)*c(n-2)) dr = -2.039E-7 >> r+=dr. s+=ds r = -0.869 -4.0098 Una vez más bn y bn+1 no son cercanos a cero y los nuevos valores de “r” y “s” no son iguales a los anteriores.9798 3.16843 0.r.1286E-3 -2.3863 ] c = [ 1 -2. s+=ds r = -0.9 4.0321 -0.r.8999 s = -1.6976E-5 >> ds=(-b(n)-c(n-1)*dr)/c(n-2) ds = 5.3.r.86324 -4.s).ECUACIONES POLINOMIALES .0074E-2 >> ds=(-b(n)-c(n-1)*dr)/c(n-2) ds = -9.8998 4. Algoritmo y código Puesto que en el método de Bairstow sólo son de interés los dos últimos elementos de la primera división sintética (el residuo) y los tres últimos . s+=ds r = -0.r.r.9999 2.s).8597 4.1006 Como aún no se cumplen las condiciones el proceso se repite dos veces más: >> b=divsin2(a.2736 -3. c=divsin2(b.94736i -0.s).5081 -0.-r.s) b = [ 1 -2 3 -1.2.5383 -1.-s]) r = [ -0.r.1 Ahora los valores de bn y bn+1 son cercanos a cero y los valores de “r” y “s”.7133E-3 ] c = [ 1 -2. de dos iteraciones sucesivas.9 s = -1.0754E-2 >> r+=dr. por lo que el proceso concluye y se pueden calcular dos de las soluciones del polinomio: >> cuad([1. 5.45+0.

end res = cuad([1. x 4 −3x 2+x−5=0 Los valores iniciales estimados con QD (error 1e-3) son: . Ejemplos 4.sc).45-0.0. while 1 b1=a(1). for i=3:n c0=c1.70004.1006. El algoritmo del método.1e-12.-sc])). c=b+c1*r+c0*s. Encuentre las soluciones (error=1e-14) de la siguiente ecuación.4.\n". b1=b. se puede suprimir la impresión de resultados intermedios. s=-1.1i.1744.2. s=%f. 3: r=-0. Como de costumbre. se presenta en la siguiente página y el código respectivo en Jasymca es: function res=bairs(a.3. if abs(r/rc-1)+abs(s/sc-1)<err break.94736i ] Que son los mismos valores obtenidos en el ejemplo manual.8999. r=x1+x2.0. end Llamando a esta función con la ecuación del ejemplo manual se obtiene: >> bairs([1. c1=0. s=-1. 4: r=-0.1i.-sc]).. ds=(-b1-c1*dr)/c0. b0=b1. s=-1.100) 1: r=-0. end r=rc. end if abs(b1)+abs(b)<err break. s=sc.2. s=-1.rc.0098. s=-1.1+0. sc=s+ds.1. 2: r=-0.92 - Hernán Peñaranda V. s=-x1*x2. c=b1.x2. que toma en cuenta la anterior consideración. end if k++==li error("err-bairs: %f\n".1-0. una vez probado el correcto funcionamiento del programa.87983.x1.3].5.0. c1=c.cuad([1.-rc. rc=r+dr.45+0. estimando los valores iniciales con el método QD y verificando las soluciones con “roots”. end dr=(-b1*c1+b*c0)/(c1*c1-c*c0). no es necesario almacenar los otros elementos resultantes. con el método de Bairstow.k.3. elementos de la segunda (las derivadas parciales).-rc.1. printf("%f: r=%f.9. 5.94736i -0. k=1.li) n=length(a).9.1. 5: r=-0. b=a(i)+b1*r+b0*s.-1.err. res = [ -0. b=a(2)+b1*r.

93 - .1 .ECUACIONES POLINOMIALES .

xi(k+1). xi=0. >> format 10 14 >> a=[1.x(1). else xr(++cr)=x(i).1.1e-14.9499205477422 9.7907021350564 ] Como Bairstow encuentra las soluciones de 2 en 2. end while k<=cr r([i.li). ci=0.0. while k<ci r([i.xr(k+1).2)(2)~=0 r(i)=newtonp(a.xr(k). una de las soluciones reales debe ser calculada por el método de Newton. ++i.3181113524451E-2-1.1e-14.li).x(4).err. i+=2. xi(++ci)=x(++i).1e-3.xi(k). se deben encontrar las soluciones reales por un lado. con x1 y x4.li) n=length(a)-1.x. cuando el grado del polinomio es impar: function r=bairsr(a.err.li). El proceso puede ser automatizado separando los valores iniciales reales de los complejos.17304474764181-1. if divide(cr.1362827747911 1. end end Empleando esta función se obtiene: >> bairsr(a.x.x(3).xr(k).3181113524451E-2+1.err.9499205477422 ] >> bairs(a.. ++k. k+=2.-5].1e-14.0916179909226i 9. end k=1. i=0. y las complejas por otro. cr=0.3181113524451E-2-1.100) res = [ -2.0916179909226i ] Con “roots” se obtiene: >> roots(a) ans = [ -2.1362827747911 1. i+=2.100) r = [ -2.3181113524451E-2+1. while ++i<=n if imagpart(x(i))~=0 xi(++ci)=x(i). teniendo el cuidado de calcular una de las soluciones reales por el método de Newton.9499205477422 9.err. k+=2.0916179909226i ] Que son las soluciones encontradas previamente.1362827747911 1. . calculando luego las soluciones reales por un lado y las imaginarias por otro.-3.100) x = [ -2.x(2). qd(a. end end k=1.i+1])= bairs(a. con x2 y x3 (revisar la corrección hecha a las 2 primeras líneas del método “qd”): >> bairs(a.17304474764181+1.13679163034 0.100) res = [ 9.0515713160421i 1. Cuando el grado del polinomio es impar.0916179909226i ] Que como se puede observar. xr=0.i+1])=bairs(a.0515713160421i 0.3181113524451E-2-1. son las mismas soluciones calculadas con Bairstow.94 - Hernán Peñaranda V.3181113524451E-2+1. i=1.0916179909226i 9.0916179909226i 9.

6985.44 x +373.x.5].203889.100) x = [ 6. Encuentre las soluciones (error=1e-10) de la siguiente ecuación. estimando los valores iniciales con el método QD y verificando las soluciones con “roots”.30050426 -5.100) r = [ 6.-1155420.500367486 3.200003577 ] Las soluciones calculadas con “bairsr” son: >> bairsr(a.100014573 -4.908.15.995975 7.29999248 -5.1 .099989918 1.373.499988872 5.4028156.399993894 2.200001057 1.6652800].ECUACIONES POLINOMIALES .099989819 1.500000029 5. con el método de Bairstow.499999617 6.5=0 Los valores iniciales estimados con QD (error = 1e-3) son: >> format 10 10 >> a=[1. 6.100014573 -5.1e-3.15x +6985. >> x=qd(a.95 - 5. con el método de Bairstow.908x −4822.-60.29999248 -1.474.499999617 5.399993894 -4.-22680.600009938 ] Que son los mismos resultados calculados con Bairstow solo que en diferente orden. x −7.-7893840.66x−10901.-41.-4822.474x +115.01079 9.17. >> x=qd(a.200001057 ] Y las soluciones calculadas con “roots” son: >> roots(a) ans = [ 2.3x −41.099989819 3.-7.115. 8 7 6 5 4 3 2 x −60x +1554x −22680x +203889x −1155420x +4028156x −7893840x+6652800=0 Los valores iniciales estimados con QD (error: 1e-3) son: >> format 10 7 >> a=[1.1e-3.1e-10.5589.500000029 3.100) x = [ 11.99954 8.1554.3.-10901.099857958 -4.996411 6.17x +5589.600012358 -1.66.44. estimando los valores iniciales con el método QD y verificando las soluciones con “roots”.399995441 2.998061 8 7 6 5 4 3 2 .600009938 -1. Encuentre las soluciones (error=1e-7) de la siguiente ecuación.

x. ¿Cuáles son las soluciones que se obtienen si los valores iniciales se estiman con un error igual a 1e-9? 7.585034E-9i 8-2. ¿Por qué en las funciones “divsin1” y “divsin2” no existe la variable “n” (grado del polinomio). ¿En el diagrama (y la función) “bairs” cuál es la variable empleada como contador de los ciclos? 3.898949E-18i 9+2.999345 4. 5. En la función “bairs” ¿”n” es el grado del polinomio? 4. En los ejemplos.721713E-15i 5+5.999993 ] Las soluciones calculadas con “bairsr” son: >> bairsr(a.086635E-13i 11-5.516598E-17i 10+1.96 - Hernán Peñaranda V. pues sus valores son cercanos a cero.999884 3.. que aparece en las ecuaciones? 2. las soluciones calculadas con “roots” no son correctas pues no debería existir la parte imaginaria (si se desprecia la parte imaginaria.963785E-12i 6+7.1e-7. entonces se tienen las mismas soluciones obtenidas con “bairstow”) Preguntas 1. ¿Por qué se deben calcular por separado las soluciones reales y complejas en el método de Bairstow? 6.482199E-15i 7-1.100) r = [ 11 10 9 8 7 6 5 4 ] Y las calculadas con “roots”: >> roots(a) ans = [ 4-3. ¿Se obtienen soluciones en todos los casos si en el método de Bairstow se emplea un error igual a 1e-15? .759684E-18i ] En este caso.2) (2)~=0”? 5. En la función “bairsr” ¿Cuando es cierta la expresión “divide(cr. En los ejemplos.