0% encontró este documento útil (0 votos)
44 vistas29 páginas

Raíces de Polinomios en Ingeniería

El capítulo 7 se centra en los métodos para encontrar las raíces de polinomios, destacando que un polinomio de grado n tiene n raíces, que pueden ser reales o complejas. Se discuten aplicaciones de polinomios en ciencia e ingeniería, especialmente en la caracterización de sistemas dinámicos a través de ecuaciones diferenciales. Además, se introducen operaciones fundamentales con polinomios, como la evaluación y la deflación polinomial, que son esenciales para localizar sus raíces.

Cargado por

Gustavo Magaña
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
44 vistas29 páginas

Raíces de Polinomios en Ingeniería

El capítulo 7 se centra en los métodos para encontrar las raíces de polinomios, destacando que un polinomio de grado n tiene n raíces, que pueden ser reales o complejas. Se discuten aplicaciones de polinomios en ciencia e ingeniería, especialmente en la caracterización de sistemas dinámicos a través de ecuaciones diferenciales. Además, se introducen operaciones fundamentales con polinomios, como la evaluación y la deflación polinomial, que son esenciales para localizar sus raíces.

Cargado por

Gustavo Magaña
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

CAPÍTULO 7

Raíces de polinomios
En este capítulo estudiaremos los métodos para encontrar las raíces de ecuaciones poli-
nomiales de la forma general
fn(x) = a0 + a1x + a2x2 +... + anxn (7.1)

donde n es el grado del polinomio y las a son los coeficientes del polinomio. Aunque
los coeficientes pueden ser números reales o complejos, este estudio se limitará
a los casos en que son reales. Entonces las raíces del polinomio pueden ser rea-
les y/o complejas.
Las raíces de los polinomios cumplen estas reglas:

1. En una ecuación de grado n, hay n raíces reales o complejas. Se debe notar que esas
raíces no necesariamente son distintas.
2. Si n es impar, hay al menos una raíz real.
3. Si existen raíces complejas, éstas se encuentran por pares conjugados (es decir, l +
µi y l – µi), donde i = −1 .

Antes de describir las técnicas para localizar las raíces de polinomios, se proporcionarán
algunos antecedentes. La primera sección da una motivación para estudiar dichas téc-
nicas; la segunda trata de algunas manipulaciones computacionales fundamentales con
polinomios.

7.1 POLINOMIOS EN LA CIENCIA Y EN LA INGENIERÍA

Los polinomios tienen muchas aplicaciones en la ciencia y en la ingeniería. Por ejemplo,


se usan mucho en el ajuste de curvas. Aunque se considera que una de las aplicaciones
más interesantes y potentes es la caracterización de sistemas dinámicos y, en particular,
de sistemas lineales. Algunos ejemplos son los dispositivos mecánicos, las estructuras
y los circuitos eléctricos. Se analizarán ejemplos específicos en el resto del texto. Éstos,
en particular, se enfocarán a varias aplicaciones en la ingeniería.
Por ahora se mantendrá una discusión simple y general estudiando un sistema físi-
co de segundo orden modelado con la siguiente ecuación diferencial ordinaria (EDO)
lineal:

d2y dy
a2 2
+ a1 + a0 y = F ( t ) (7.2)
dt dt
donde y y t son las variables dependiente e independiente, respectivamente, las a son
coeficientes constantes y F(t) es la función de fuerza. Si el saber cómo se obtiene esta

Chapra-07.indd 170 6/12/06 13:51:21


7.1 POLINOMIOS EN LA CIENCIA Y EN LA INGENIERÍA 171

ecuación a partir de un sistema físico ayuda a motivarlo en el estudio de las matemáticas,


puede leer con atención la sección 8.4 antes de continuar.
Además, se debe observar que la ecuación (7.2) puede expresarse en forma alterna-
tiva transformándola en un par de EDO de primer orden, mediante la definición de una
nueva variable z,
dy
z= (7.3)
dt

La ecuación (7.3) se sustituye con su derivada en la ecuación (7.2) para eliminar el tér-
mino de la segunda derivada. Esto reduce el problema a resolver

dz F(t ) − a1 z − a0 y
= (7.4)
dt a2

dy
=z (7.5)
dt

En forma similar, una EDO lineal de orden n-ésimo siempre puede transformarse en un
sistema de n EDO de primer orden.
Ahora veamos la solución. La función de fuerza representa el efecto del mundo
exterior sobre el sistema. La solución general de la ecuación homogénea trata el caso
donde la función de fuerza es igual a cero,
d2y dy
a2 + a1 + a0 y = 0 (7.6)
dt 2 dt
Entonces, como su nombre lo indica, la solución general describe algo muy general
acerca del sistema que está simulando; es decir, cómo responde el sistema en ausencia
de un estímulo externo.
Ahora bien, como la solución general de todos los sistemas lineales no forzados es
de la forma y = ert. Si esta función se deriva y se sustituye en la ecuación (7.6), el resul-
tado es

a2r2ert + a1rert + a0ert = 0

cancelando los términos exponenciales, ya que ert ≠ 0

a2r2 + a1r + a0 = 0 (7.7)

Observe que el resultado es un polinomio, que al igualar a cero, se obtiene una


ecuación, llamada ecuación auxiliar o característica. Las raíces de este polinomio son
los valores de r que satisfacen la ecuación (7.7). Las r se conocen como los valores ca-
racterísticos, o eigenvalores, del sistema.
Se tiene aquí la relación entre las raíces de polinomios con la ciencia y la ingeniería.
Los eigenvalores nos dicen algo fundamental acerca del sistema que se está modelando,
así encontrar los eigenvalores implica encontrar las raíces de los polinomios. Y mientras
encontrar las raíces de una ecuación de segundo orden es fácil con la fórmula cua-
drática, encontrar las raíces de una EDO de orden superior, relacionado con un sistema

Chapra-07.indd 171 6/12/06 13:51:22


172 RAÍCES DE POLINOMIOS

de orden superior (y, por lo tanto, de un polinomio de grado superior) es arduo desde el
punto de vista analítico. Entonces, se requiere usar métodos numéricos del tipo descrito
en este capítulo.
Antes de proceder con dichos métodos, investigaremos más profundamente
qué valores específicos de los eigenvalores están implicados en el comportamiento de
sistemas físicos. Primero se evaluarán las raíces de la ecuación (7.7) con la fórmula
cuadrática

r1 − a1 ± a12 − 4 a2 a0
=
r2 a0

Se obtienen dos raíces. Si el discriminante (a12 – 4a2 a 0) es positivo, las raíces son reales
y la solución general se representa como
y = c1er1t + c2er2t (7.8)

donde las c son constantes que se determinan a partir de las condiciones iniciales. Este
caso se llama sobreamortiguado.
Si el discriminante es cero, resulta una sola raíz real y la solución general se escri-
be como
y = (c1 + c2t)elt (7.9)

Este caso se llama de amortiguamiento crítico.


Si el discriminante es negativo, las raíces son números complejos conjugados
r1
= l ± µi
r2
y la solución general se formula como

y = c1e(l+µi)t + c2e(l – µi)t

El comportamiento de esta solución se aclara mediante la fórmula de Euler de un núme-


ro complejo

eµit = cos µt + i sen µt


para obtener la solución general como (véase Boyce y DiPrima, 1992, para detalles de
la demostración)

y = c1elt cos µt + c2elt sen µt (7.10)

Este caso se llama subamortiguado.


Las ecuaciones (7.8), (7.9) y (7.10) expresan las maneras posibles en que los sistemas
lineales responden dinámicamente. El término exponencial indica que la solución del
sistema es capaz de decaer (parte real del número complejo negativa) o crecer (parte real
del número complejo positiva) exponencialmente con el tiempo (figura 7.la). El término
senosoidal (parte imaginaria) significa que la solución puede oscilar (figura 7.1b). Si el
eigenvalor tiene tanto parte real como imaginaria, se combinan la forma exponencial y
senosoidal (figura 7.1c). Debido a que este conocimiento es el elemento clave para enten-

Chapra-07.indd 172 6/12/06 13:51:22


7.2 CÁLCULOS CON POLINOMIOS 173

y y

a) t b)

c)

FIGURA 7.1
La solución general de las EDO lineales puede estar determinada por componentes
a) exponenciales y b) senosoidales. La combinación de las dos formas es una senosoidal
amortiguada como se muestra en c).

der, diseñar y controlar el comportamiento de sistemas físicos, los polinomios característicos


son muy importantes en ingeniería y en muchas ramas de la ciencia. Se analizará la dinámi-
ca de varios sistemas en las aplicaciones que se estudian en el capítulo 8.

7.2 CÁLCULOS CON POLINOMIOS

Antes de describir los métodos para localizar raíces, se examinarán algunas operaciones
fundamentales con polinomios. Dichas operaciones tendrán utilidad en sí mismas, ade-
más de proporcionar apoyo para localizar las raíces.

7.2.1 Evaluación y derivación de polinomios

Aunque la forma de la ecuación (7.1) es la más común, no resulta la mejor para determi-
nar el valor de un polinomio para un valor específico de x. Por ejemplo, evaluar el poli-
nomio de tercer grado como
f3(x) = a3x3 + a2x2 + a1x + a0 (7.11)

implica seis multiplicaciones y tres sumas. En general, para un polinomio de n-ésimo


orden, se requieren n(n + 1)/2 multiplicaciones y n sumas.

Chapra-07.indd 173 6/12/06 13:51:22


174 RAÍCES DE POLINOMIOS

La forma anidada, en cambio

f3(x) = ((a3x + a2)x + a1)x + a0 (7.12)

implica tres multiplicaciones y tres sumas. Para un polinomio de n-ésimo grado, esta
forma requiere n multiplicaciones y n sumas. Ya que la forma anidada minimiza el
número de operaciones, también tiende a minimizar los errores de redondeo. Observe
que, según sea la preferencia, el orden de anidamiento puede invertirse:

f3(x) = a0 + x(a1 + x(a2 + xa3)) (7.13)

Un seudocódigo adecuado para implementar la forma anidada se escribe simple-


mente como

DOFOR j = n, 0, –1
p = p * x+a(j)
END DO

donde p tiene el valor del polinomio (definido por los coeficientes de las a) evaluado en x.
Existen casos (como el método de Newton-Raphson) donde se requiere evaluar
tanto la función como su derivada. Esta evaluación se puede también incluir al agre-
gar una línea en el seudocódigo anterior,

DOFOR j = n, 0, –1

df = df * x+p

p = p * x+a(j)
END DO

donde df es la primera derivada del polinomio.

7.2.2 Deflación polinomial

Suponga que se determina la raíz de un polinomio de n-ésimo grado. Si se repite el


procedimiento para localizar la raíz, puede encontrarse la misma raíz. Por lo tanto, sería
adecuado eliminar la raíz encontrada antes de continuar. A este proceso de eliminar la
raíz se le llama deflación polinomial.
Antes de mostrar cómo se hace esto, veamos algunos antecedentes útiles. Los po-
linomios son típicamente representados en la forma de la ecuación (7.1). Por ejemplo,
un polinomio de quinto grado puede escribirse como

f5(x) = –120 – 46x + 79x2 – 3x3 – 7x4 + x5 (7.14)

Aunque ésta es la forma más común, no necesariamente es la mejor expresión para en-
tender el comportamiento matemático de los polinomios. Por ejemplo, este polinomio
de quinto grado se expresa de manera alternativa como

f5(x) = (x + 1)(x – 4)(x – 5)(x + 3)(x – 2) (7.15)

Chapra-07.indd 174 6/12/06 13:51:23


7.2 CÁLCULOS CON POLINOMIOS 175

Ésta se conoce como la forma factorizada de un polinomio. Si se efectúa la multi-


plicación y se agrupan los términos semejantes, se obtendrá la ecuación (7.14). Sin
embargo, la forma de la ecuación (7.15) tiene la ventaja de que indica claramente las
raíces de la función. Así, resulta claro que x = –1, 4, 5, –3 y 2 son todas las raíces, porque
cada una hace que uno de los términos de la ecuación (7.15) sea igual a cero.
Ahora, suponga que se divide este polinomio de quinto grado entre cualquiera de sus
factores; por ejemplo, x + 3. En este caso, el resultado será un polinomio de cuarto grado

F4(x) = (x + 1)(x – 4)(x – 5)(x – 2) = –40 – 2x + 27x2 – 10x3 + x4 (7.16)

con un residuo igual a cero.


En el pasado, quizás usted aprendió que los polinomios se dividen usando un pro-
cedimiento llamado división sintética. Varios algoritmos de computadora (basados
tanto en la división sintética como en otros métodos) están disponibles para realizar la
operación. Un esquema simple se proporciona en el siguiente seudocódigo, el cual divi-
de un polinomio de n-ésimo grado entre un factor monomial x – t.

r = a(n)
a(n) = 0
DOFOR i = n–1, 0, –1
s = a(i)
a(i) = r
r = s+r * t
END DO

Si el monomio es un factor del polinomio, el residuo r será cero, y los coeficientes del
cociente se guardarán en a, al final del loop.

EJEMPLO 7.1 Deflación polinomial

Planteamiento del problema. Divida el polinomio de segundo grado

f(x) = (x – 4)(x + 6) = x2 + 2x – 24

entre el factor x – 4.

Solución. Usando el método propuesto en el seudocódigo anterior, los parámetros son


n = 2, a 0 = –24, al = 2, a2 = 1 y t = 4. Estos valores se usan para calcular

r = a2 = 1
a2 = 0

El loop o ciclo se itera después desde i = 2 – 1 = 1 hasta 0. Para i = 1,

s = a1 = 2
a1 = r = 1
r = s + rt = 2 + 1(4) = 6

Chapra-07.indd 175 6/12/06 13:51:23


176 RAÍCES DE POLINOMIOS

Para i = 0,

s = a0 = 24
a0 = r = 6
r = –24 + 6(4) = 0

Así, el resultado, como se esperaba, es el cociente a 0 + a1x = 6 + x, con un residuo de


cero.

También es posible dividir entre polinomios de grado superior. Como se verá más
adelante en este capítulo, la tarea más común es dividir entre un polinomio de segundo
grado o parábola. La subrutina de la figura 7.2 resuelve el problema más general de di-
vidir un polinomio a de grado n entre un polinomio d de grado m. El resultado es un
polinomio q de grado (n – m), con un polinomio de grado (m – 1) como el residuo.
Ya que cada raíz calculada se conoce únicamente en forma aproximada, se observa
que la deflación es sensible al error de redondeo. En algunos casos puede crecer a tal
punto que los resultados lleguen a no tener sentido.
Algunas estrategias generales pueden aplicarse para minimizar el problema. Por
ejemplo, el error de redondeo está afectado por el orden en que se evalúan los términos.
La deflación hacia adelante se refiere al caso donde los coeficientes del nuevo polinomio
están en orden de potencias descendentes de x (es decir, del término de mayor grado al

FIGURA 7.2
Algoritmo que divide un polinomio (definido por sus coeficientes a) entre un polinomio de
grado menor d.

SUB poldiv(a, n, d, m, q, r)
DOFOR j = 0, n
r(j) = a(j)
q(j) = 0
END DO
DOFOR k = n–m, 0, –1
q(k+1) = r(m+k) / d(m)
DOFOR j = m+k–1, k, –1
r(j) = r(j)–q(k+1) * b(j–k)
END DO
END DO
DOFOR j = m, n
r(j) = 0
END DO
n = n–m
DOFOR i = 0, n
a(i) = q(i+1)
END DO
END SUB

Chapra-07.indd 176 6/12/06 13:51:23


7.4 MÉTODO DE MÜLLER 177

de grado cero). En tal caso, es preferible dividir primero entre las raíces con el valor
absoluto más pequeño. En forma inversa, en la deflación hacia atrás (esto es, del térmi-
no de grado cero al de mayor grado) es preferible dividir primero entre las raíces con
mayor valor absoluto.
Otra manera de reducir los errores de redondeo es considerar que cada raíz sucesi-
va estimada, obtenida durante la deflación es un buen primer valor inicial. Al utilizarse
como un valor inicial, y determinar las raíces otra vez con el polinomio original sin
deflación, se obtiene raíces que se conocen como raíces pulidas.
Por último, se presenta un problema cuando dos raíces deflacionadas son suficien-
temente inexactas, de tal manera que ambas converjen a la misma raíz no deflacionada.
En tal caso, se podría creer en forma errónea que un polinomio tiene una raíz múltiple
(recuerde la sección 6.4). Una forma para detectar este problema consiste en comparar
cada raíz pulida con las que se han calculado anteriormente. Press y colaboradores (1992)
analizan el problema con mayor detalle.

7.3 MÉTODOS CONVENCIONALES

Ahora que se ha visto algún material de apoyo sobre polinomios, empezaremos a des-
cribir los métodos para localizar sus raíces. Es obvio que el primer paso sería investigar
la posibilidad de usar los métodos cerrados y abiertos, descritos en los capítulos 5 y 6.
La eficacia de dichos métodos depende de que el problema a resolver tenga raíces
complejas. Si sólo existen raíces reales, cualquiera de los métodos descritos anterior-
mente puede utilizarse. Sin embargo, el problema de encontrar un buen valor inicial
complica tanto los métodos cerrados como los abiertos; además que los métodos abier-
tos podrían ser susceptibles a problemas de divergencia.
Cuando existen raíces complejas, los métodos cerrados obviamente no se pueden
usar, ya que el criterio para definir el intervalo (que es el cambio de signo) no puede
trasladarse a valores complejos.
De los métodos abiertos, el método convencional de Newton-Raphson llega a ofre-
cer una aproximación viable. En particular, es posible desarrollar un código conciso que
comprenda deflación. Si se usa un lenguaje que permite manipular variables complejas
(como Fortran), entonces el algoritmo localizará tanto raíces reales como complejas. Sin
embargo, como es de esperarse, podría ser susceptible a tener problemas de convergen-
cia. Por tal razón, se han desarrollado métodos especiales para encontrar raíces reales y
complejas de polinomios. Se describen dos de estos métodos, el método de Müller y el
de Bairstow, en las siguientes secciones. Como se verá, ambos están relacionados con
los métodos abiertos convencionales descritos en el capítulo 6.

7.4 MÉTODO DE MÜLLER

Recuerde que el método de la secante obtiene una aproximación de la raíz dirigiendo


una línea recta hasta el eje x con dos valores de la función (figura 7.3a). El método de
Müller es similar; pero se construye una parábola con tres puntos (figura 7.3b).
El método consiste en obtener los coeficientes de la parábola que pasa por los tres
puntos. Dichos coeficientes se sustituyen en la fórmula cuadrática para obtener el valor
donde la parábola interseca al eje x; es decir, la raíz estimada. La aproximación se faci-
lita al escribir la ecuación de la parábola en una forma conveniente,

Chapra-07.indd 177 6/12/06 13:51:24


178 RAÍCES DE POLINOMIOS

f (x) Línea f (x)


recta

Raíz Parábola
estimada

x1 x0 x x2 x1 x0 x

Raíz Raíz Raíz


estimada
a) b)

FIGURA 7.3
Una comparación de dos métodos relacionados para encontrar raíces a) el método de la
secante y b) el método de Müller.

f2(x) = a(x – x2)2 + b(x – x2) + c (7.17)

Queremos que esta parábola pase por tres puntos [x0, f(x0)], [x1, f(x1)] y [x2, f(x2)]. Los
coeficientes de la ecuación (7.17) se evalúan sustituyendo cada uno de esos tres puntos
para dar
f(x0) = a(x0 – x2)2 + b(x0 – x2) + c (7.18)
f(x1) = a(x1 – x2)2 + b(x1 – x2) + c (7.19)
2
f(x2) = a(x2 – x2) + b(x2 – x2) + c (7.20)

Observe que se ha eliminado el subíndice “2” de la función por brevedad. Debido a que
se tienen tres ecuaciones, es posible encontrar los tres coeficientes desconocidos a, b y
c. Debido a que dos términos de la ecuación (7.20) son cero, se encuentra inmediata-
mente que c = f(x2). Así, el coeficiente c es igual al valor de la función evaluada en el
tercer valor inicial, x2 . Este resultado se sustituye en las ecuaciones (7.18) y (7.19) para
tener dos ecuaciones con dos incógnitas:
f(x0) – f(x2) = a(x0 – x2)2 + b(x0 – x2) (7.21)
2
f(x1) – f(x2) = a(x1 – x2) + b(x1 – x2) (7.22)

Una manipulación algebraica permite encontrar los coeficientes restantes a y b. La


manera de hacer esto consiste en definir las diferencias:
h0 = x1 – x0 h1 = x2 – x1

f ( x1 ) − f ( x 0 ) f ( x 2 ) − f ( x1 )
δ0 = δ1 = (7.23)
x1 − x 0 x 2 − x1

Chapra-07.indd 178 6/12/06 13:51:24


7.4 MÉTODO DE MÜLLER 179

Éstas se sustituyen en las ecuaciones (7.21 ) y (7.22) para dar

(h0 + h1)b – (h0 + h1)2a = h0d0 + h1d1


h1 b– h12 a= h1d1

de donde se despejan a y b. El resultado se resume como

δ1 − δ 0
a= (7.24)
h1 − h0
b = ah1 + d1 (7.25)

c = f(x2) (7.26)

Para encontrar la raíz se aplica la fórmula cuadrática a la ecuación (7.17). Sin em-
bargo, debido al error de redondeo potencial, en lugar de usar la forma convencional, se
usará la fórmula alternativa [ecuación (3.13)], es decir,
−2c
x3 − x 2 = (7.27a)
b ± b 2 − 4 ac

o despejando la incógnita x3
−2c
x3 = x 2 + (7.27b)
b ± b 2 − 4 ac

Observe que al usar la fórmula cuadrática, es posible localizar tanto las raíces reales
como las complejas. Ésta es la mayor ventaja del método.
Además, la ecuación (7.27a) proporciona una forma directa para determinar el error
de aproximación. Debido a que el lado izquierdo representa la diferencia entre la raíz
estimada actual (x3) y la raíz estimada anterior (x2), el error se calcula como

x3 − x 2
εa = 100%
x3

Ahora, un problema de la ecuación (7.27a) es que produce dos raíces, correspon-


dientes a los términos ± del denominador. En el método de Müller, se escoge el signo
que coincida con el signo de b. Esta elección proporciona como resultado el denomina-
dor más grande y, por lo tanto, dará la raíz estimada más cercana a x2.
Una vez que se determinó x3, el proceso se repite. Esto trae el problema de que un
valor es descartado. En general, dos estrategias son comúnmente usadas.

1. Si sólo se localizan raíces reales, elegimos los dos valores originales más cercanos
a la nueva raíz estimada, x3.
2. Si se localizan raíces reales y complejas, se emplea un método secuencial. Es decir,
como en el método de la secante, x1, x2 y x3 toman el lugar de x0, x1 y x2.

Chapra-07.indd 179 6/12/06 13:51:24


180 RAÍCES DE POLINOMIOS

EJEMPLO 7.2 Método de Müller

Planteamiento del problema. Utilice el método de Müller con valores iniciales x0,
x1, y x2 = 4.5, 5.5 y 5, respectivamente, para determinar la raíz de la ecuación

f(x) = x3 – 13x – 12

Observe que las raíces de la ecuación son –3, –1 y 4.

Solución. Primero se evaluará la función con los valores iniciales

f(4.5) = 20.625 f(5.5) = 82.875 f(5) = 48


que se emplean para calcular
h0 = 5.5 – 4.5 = 1 h1 = 5 – 5.5 = –0.5

82.875 − 20.625 48 − 82.875


δ0 = = 62.25 δ1 = = 69.75
5.5 − 4.5 5 − 5.5
Estos valores, a su vez, se sustituyen con las ecuaciones (7.24) a (7.26) para calcular
69.75 − 62.25
a= = 15 b = 15(–0.5) + 69.75 = 62.25 c = 48
−0.5 + 1
La raíz cuadrada del discriminante se evalúa como

62.252 − 4(15)48 = 31.54461

Luego, como |62.25 + 31.54451| > |62.25 – 31.54451|, se emplea un signo positivo en el
denominador de la ecuación (7.27b), y la nueva raíz estimada se determina como
−2( 48)
x3 = 5 + = 3.976487
62.25 + 31.54451
y desarrollando el error estimado
−1.023513
εa = 100% = 25.74%
3.976487
Debido a que el error es grande, se asignan nuevos valores: x0 se reemplaza por x1, x1 se
reemplaza por x2 y x2 se reemplaza por x3. Por lo tanto, para la nueva iteración,
x0 = 5.5 x1 = 5 x2 = 3.976487
y se repite el cálculo. Los resultados, tabulados a continuación, muestran que el método
converge rápidamente a la raíz xr = 4:

i xr ea (%)
0 5
1 3.976487 25.74
2 4.00105 0.6139
3 4 0.0262
4 4 0.0000119

Chapra-07.indd 180 6/12/06 13:51:24


7.5 MÉTODO DE BAIRSTOW 181

El seudocódigo del método de Müller para raíces reales se presenta en la figura 7.4.
Observe que esta rutina toma un valor inicial único diferente de cero, que después se
altera por el factor h para generar los otros dos valores iniciales. Por supuesto, el algo-
ritmo puede programarse para considerarse tres valores iniciales. Con lenguajes pareci-
dos a Fortran, el programa encontrará raíces complejas si las variables adecuadas se
declaran como complejas.

7.5 MÉTODO DE BAIRSTOW

El método de Bairstow es un método iterativo relacionado de alguna manera con los


métodos de Müller y de Newton-Raphson. Antes de hacer la descripción matemática de
éste, recuerde la forma factorizada de un polinomio, por ejemplo
ƒ5(x) = (x + l)(x – 4)(x – 5)(x + 3)(x – 2) (7.28)

FIGURA 7.4
Seudocódigo para el método de Müller.

SUB Muller(xr, h, eps, maxit)


x2 = xr
x1 = xr + h*xr
x0 = xr – h*xr
DO
iter = iter + 1
h0 = x1 – x0
h1 = x2 – x1
d0 = (f(x1) – f(x0)) / h0
d1 = (f(x2) – f(x1)) / h1
a = (d1 – d0) /(h1 + h0)
b = a*h1 + d1
c = f(x2)
rad = SQRT(b*b – 4*a*c)
If |b+rad| > |b–rad| THEN
den = b + rad
ELSE
den = b – rad
END IF
dxr = –2*c /den
xr = x2 + dxr
PRINT iter, xr
IF (|dxr| < eps*xr OR iter > maxit) EXIT
x0 = x1
x1 = x2
x2 = xr
END DO
END Muller

Chapra-07.indd 181 6/12/06 13:51:25


182 RAÍCES DE POLINOMIOS

Si se divide entre un factor que no es una raíz (por ejemplo, x + 6), el cociente es un
polinomio de cuarto grado. Aunque, en este caso, habrá un residuo diferente de cero.
Con estas consideraciones se puede elaborar un algoritmo para determinar la raíz
de un polinomio: 1. dé un valor inicial para la raíz x = t; 2. divida el polinomio entre el
factor x – t, y 3. determine si hay un residuo diferente de cero. Si no, el valor inicial es
perfecto y la raíz es igual a t. Si existe un residuo, se ajusta el valor inicial en forma
sistemática y se repite el procedimiento hasta que el residuo desaparezca y se localice
la raíz. Una vez hecho esto, se repite el procedimiento totalmente, ahora con el cociente
para localizar otra raíz.
Por lo general, el método de Bairstow se basa en esta manera de proceder. Por con-
siguiente, depende del proceso matemático de dividir un polinomio entre un factor.
Recuerde (sección 7.2.2) de nuestro estudio de la deflación de polinomios que la división
sintética implica la división del polinomio entre un factor x – t. Por ejemplo, el polinomio
general [ecuación (7.1)]
ƒn (x) = a0 + a1x + a2x2 +···+ anxn (7.29)

se divide entre el factor x – t para dar un segundo polinomio que es de un grado menor:
ƒn–1 (x) = b1 + b2x + b3x2 + ··· + bnxn–1 (7.30)

con un residuo R = b 0 , donde los coeficientes se calculan por la relación de recurrencia


bn = an
bi = ai + bi+1t para i = n – 1 a 0

Observe que si t es 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 x2 – rx – s. Si esto se hace con la ecuación (7.29),
el resultado es un nuevo polinomio
ƒn–2(x) = b2 + b3x +···+ bn–1xn–3 + bnxn–2

con un residuo
R = b1(x – r) + b0 (7.31)

Como con la división sintética normal, se utiliza una relación de recurrencia simple para
realizar la división entre el factor cuadrático:
bn = an (7.32a)
bn–1 = an–1 + rbn (7.32b)
bi = ai + rbi+1 + sbi+2 para i = n – 2 a 0 (7.32c)

El factor cuadrático se introduce para permitir la determinación de las raíces com-


plejas. Esto se relaciona con el hecho de que, si los coeficientes del polinomio original
son reales, las raíces complejas se presentan en pares conjugados. Si x2 – rx – s es un
divisor exacto del polinomio, las raíces complejas pueden determinarse con la fórmula
cuadrática. Así, el método se reduce a determinar los valores de r y s que hacen que el
factor cuadrático sea un divisor exacto. En otras palabras, se buscan los valores que
hacen que el residuo sea igual a cero.

Chapra-07.indd 182 6/12/06 13:51:25


7.5 MÉTODO DE BAIRSTOW 183

La inspección de la ecuación (7.31) nos lleva a concluir que para que el residuo sea
cero, b 0 y b1 deben ser cero. Como es improbable que los valores iniciales para evaluar
r y s conduzcan a este resultado, debemos determinar una forma sistemática para mo-
dificar los valores iniciales, de tal forma que b 0 y b1 tiendan a cero. Para lograrlo, el
método de Bairstow usa una estrategia similar a la del método de Newton-Raphson.
Como tanto b 0 como b1 son funciones de r y s, se pueden expandir usando una serie de
Taylor, así [recuerde la ecuación (4.26)]:
∂b1 ∂b
b1(r + ∆r, s + ∆s) = b1 + ∆r + 1 ∆s
∂r ∂s

∂b0 ∂b
b0(r + ∆r, s + ∆s) = b0 + ∆r + 0 ∆s (7.33)
∂r ∂s

donde los valores del lado derecho se evalúan en r y s. Observe que se han despreciado
los términos de segundo orden y de orden superior. Esto representa una suposición im-
plícita de que –r y –s son suficientemente pequeños para que los términos de orden
superior puedan despreciarse. Otra manera de expresar esta suposición es que los valo-
res iniciales son adecuadamente cercanos a los valores de r y s en las raíces.
Los incrementos, ∆r y ∆s, necesarios para mejorar nuestros valores iniciales, se
estiman igualando a cero la ecuación (7.33) para dar

∂b1 ∂b
∆r + 1 ∆s = − b1 (7.34)
∂r ∂s

∂b0 ∂b
∆r + 0 ∆s = − b0 (7.35)
∂r ∂s

Si las derivadas parciales de las b, pueden determinarse, hay un sistema de dos ecuacio-
nes que se resuelve simultáneamente para las dos incógnitas, ∆r y ∆s. Bairstow demos-
tró que las derivadas parciales se obtienen por división sintética de las b en forma
similar a como las b mismas fueron obtenidas:
cn = bn (7.36a)
cn–1 = bn–1 + rcn (7.36b)
ci = bi + rci+1 + sci+2 para i = n – 2 a 1 (7.36c)

donde ∂b 0 /∂r = cl, ∂b 0 /∂s = ∂b1 /∂r = c2 y ∂b1 /∂s = c3. Así, las derivadas parciales se
obtienen por la división sintética de las b. Entonces, las derivadas parciales se sustituyen
en las ecuaciones (7.34) y (7.35) junto con las b para dar
c2∆r + c3∆s = –b1
c1∆r + c2∆s = –b0

Estas ecuaciones se resuelven para ∆r y ∆s, las cuales, a su vez, se emplean para mejorar
los valores iniciales de r y s. En cada paso, se estima un error aproximado en r y s:
∆r
|ea,r| = 100% (7.37)
r

Chapra-07.indd 183 6/12/06 13:51:25


184 RAÍCES DE POLINOMIOS

y
∆s
|ea,s| = 100% (7.38)
s

Cuando ambos errores estimados caen por debajo de un criterio especificado de termi-
nación es, los valores de las raíces se determinan mediante

r ± r 2 + 4s
x= (7.39)
2
En este punto, existen tres posibilidades:
1. El cociente es un polinomio de tercer grado o mayor. En tal caso, el método de
Bairstow se aplica al cociente para evaluar un nuevo valor de r y s. Los valores
anteriores de r y s pueden servir como valores iniciales en esta aplicación.
2. El cociente es cuadrático. Aquí es posible evaluar directamente las dos raíces res-
tantes con la ecuación (7.39).
3. El cociente es un polinomio de primer grado. En este caso, la raíz restante se evalúa
simplemente como
s
x=− (7.40)
r

EJEMPLO 7.3 Método de Bairstow

Planteamiento del problema. Emplee el método de Bairstow para determinar las


raíces del polinomio
ƒ5(x) = x5 – 3.5x4 + 2.75x3 + 2.125x2 – 3.875x + 1.25

Utilice como valores iniciales r = s = –1 e itere hasta un nivel de es = 1%.

Solución. Se aplican las ecuaciones (7.32) y (7.36) para calcular

b5 = 1 b4 = –4.5 b3 = 6.25 b2 = 0.375 b1 = –10.5


b0 = 11.375
c5 = 1 c4 = –5.5 c3 = 10.75 c2 = –4.875 c1 = –16.375

Así, las ecuaciones simultáneas para encontrar ∆r y ∆s son

–4.875∆r + 10.75∆s = 10.5


–16.375∆r – 4.875∆s = –11.375

al ser resueltas se encuentra que ∆r = 0.3558 y ∆s = 1.1381. Por lo tanto, nuestros valores
iniciales se corrigen a
r = –1 + 0.3558 = –0.6442
s = –1 + 1.1381 = 0.1381

y se evalúa el error aproximado con las ecuaciones (7.37) y (7.38),

Chapra-07.indd 184 6/12/06 13:51:26


7.5 MÉTODO DE BAIRSTOW 185

0.3558 1.1381
|ea,r| = 100% = 55.23% |ea,s| = 100% = 824.1%
−0.6442 0.1381

A continuación, se repiten los cálculos usando los valores revisados para r y s. Aplican-
do las ecuaciones (7.32) y (7.36) se obtiene
b5 = 1 b4 = –4.1442 b3 = 5.5578 b2 = –2.0276 b1 = –1.8013
b0 = 2.1304
c5 = 1 c4 = –4.7884 c3 = 8.7806 c2 = –8.3454 c1 = 4.7874

Por lo tanto, se debe resolver el sistema de ecuación

–8.3454∆r + 8.7806∆s = 1.8013


4.7874∆r – 8.3454∆s = –2.1304

al tener la solución ∆r = 0.1331 y ∆s = 0.3316, ésta se utiliza para corregir la raíz esti-
mada:
r = –0.6442 + 0.1331 = –0.5111 |ea,r| = 26.0%

s = 0.1381 + 0.3316 = 0.4697 |ea,s| = 70.6%

El cálculo continúa, resultando que después de cuatro iteraciones el método conver-


ge a los valores r = –0.5 (|ea,r| = 0.063%) y s = 0.5 (|ea,s| = 0.040%). La ecuación (7.39)
puede emplearse para evaluar las raíces:

−0.5 ± ( −0.5) 2 + 4(0.5)


x= = 0.5, − 1.0
2
Entonces, se tiene que, el cociente es la ecuación cúbica
ƒ(x) = x3 – 4x2 + 5.25x – 2.5

El método de Bairstow puede aplicarse a este polinomio usando los resultados del paso
anterior, r = –0.5 y s = 0.5, como valores iniciales. Cinco iteraciones dan las aproxima-
ciones r = 2 y s = –1.249, las cuales se usan para calcular

2 ± 2 2 + 4( −1.249)
x= = 1 ± 0.499i
2
Ahora, el cociente es un polinomio de primer grado que puede ser directamente
evaluado mediante la ecuación (7.40) para determinar la quinta raíz: 2.

Observe que la esencia del método de Bairstow es la evaluación de las b y de las c por
medio de las ecuaciones (7.32) y (7.36). Una de las ventajas principales de este método
radica en la forma concisa en la cual tales fórmulas de recurrencia pueden programarse.
En la figura 7.5 se muestra el seudocódigo que ejecuta el método de Bairstow. La
parte principal de este algoritmo es el ciclo que evalúa las b y c. También observe que
el seudocódigo para resolver las ecuaciones simultáneas revisa para evitar la división
entre cero. Si éste es el caso, los valores de r y s se alteran ligeramente y el procedimien-

Chapra-07.indd 185 6/12/06 13:51:26


186 RAÍCES DE POLINOMIOS

a) Algoritmo de Bairstow IF iter < maxit THEN


IF n = 2 THEN
SUB Bairstow (a,nn,es,rr,ss,maxit,re,im,ier) r = –a(1)/a(2)
DIMENSION b(nn), c(nn) s = –a(0)/a(2)
r = rr; s = ss; n = nn CALL Quadroot(r,s,r1,i1,r2,i2)
ier = 0; ea1 = 1; ea2 = 1 re(n) = r1
DO im(n) = i1
IF n < 3 OR iter ≥ maxit EXIT re(n – 1) = r2
iter = 0 im(n – 1) = i2
DO ELSE
iter = iter + 1 re(n) = –a(0)/a(1)
b(n) = a(n) im(n) = 0
b(n – 1) = a(n – 1) + r * b(n) END IF
c(n) = b(n) ELSE
c(n – 1) = b(n – 1) + r * c(n) ier = 1
DO i = n – 2, 0, –1 END IF
b(i) = a(i) + r * b(i + 1) + s * b(i + 2) END Bairstow
c(i) = b(i) + r * c(i + 1) + s * c(i + 2)
END DO
det = c(2) * c(2) – c(3) *c(1)
IF det ≠ 0 THEN
dr = (–b(1) * c(2) + b(0) * c(3))/det
b) Algoritmo para raíces de una cuadrática
ds = (–b(0) * c(2) + b(1) * c(1))/det
r = r + dr
SUB Quadroot(r,s,r1,i1,r2,i2)
s = s + ds
disc = r ^ 2 + 4 * s
IF r ≠ 0 THEN ea1 = ABS(dr/r) * 100
IF disc > 0 THEN
IF s ≠ O THEN ea2 = ABS(ds/s) * 100
r1 = (r + SQRT(disc))/2
ELSE
r2 = (r – SQRT(disc))/2
r = r + 1
i1 = 0
s = s + 1
i2 = 0
iter = 0
ELSE
END IF
r1 = r/2
IF ea1 ≤ es AND ea2 ≤ es OR iter ≥ maxit EXIT
r2 = r1
END DO
i1 = SQRT(ABS(disc))/2
CALL Quadroot(r,s,r1,i1,r2,i2)
i2 = –i1
re(n) = r1
END IF
im(n) = i1
END QuadRoot
re(n – 1) = r2
im(n – 1) = i2
n = n–2
DO i = 0, n
a(i) = b(i + 2)
END DO
END DO

FIGURA 7.5
a) Algoritmo para el método de Bairstow junto con b) un algoritmo para determinar las raíces de una ecuación cuadrática.

Chapra-07.indd 186 6/12/06 13:51:26


7.7 LOCALIZACIÓN DE RAÍCES CON BIBLIOTECAS Y PAQUETES DE SOFTWARE 187

to comienza de nuevo. Además, en el algoritmo hay un lugar donde el usuario puede


definir el número máximo de iteraciones (MAXIT) y está diseñado para evitar una di-
visión entre cero cuando se calcula el error estimado. Finalmente, el algoritmo requiere
valores iniciales para r y s (rr y ss en el código). Si no se tiene conocimiento a priori de
que existan las raíces, se tendrá un conjunto de ceros al llamar el programa.

7.6 OTROS MÉTODOS

Otros métodos están disponibles para localizar las raíces de los polinomios. El método
de Jenkins-Traub (Jenkins y Traub, 1970) es comúnmente usado en bibliotecas como
IMSL. Es relativamente complicado y un punto de partida aceptable para entenderlo se
encuentra en Ralston y Rabinowitz (1978).
El método de Laguerre, que aproxima las raíces reales y complejas, tiene una con-
vergencia cúbica, se encuentra entre los mejores métodos. Un análisis completo se en-
cuentra en Householder (1970). Además, Press y colaboradores (1992) ofrecen un buen
algoritmo para implementar este método.

7.7 LOCALIZACIÓN DE RAÍCES CON BIBLIOTECAS


Y PAQUETES DE SOFTWARE

Las bibliotecas y los paquetes de cómputo tienen gran capacidad para localizar raíces.
En esta sección, se ofrece una muestra de los más útiles.

7.7.1 Excel
Una hoja de cálculo como Excel se utiliza para localizar la raíz mediante prueba y error.
Por ejemplo, si se quiere encontrar una raíz de
ƒ(x) = x – cos x

primero se introduce un valor de x en una celda. Después se destina otra celda para ƒ(x)
donde se obtendrá el valor de la función para la x de la primera celda. Se puede variar
el valor de la celda en x hasta que la celda de ƒ(x) se aproxime a cero. Este proceso se
mejora usando la capacidad de graficación de Excel para obtener un buen valor inicial
(figura 7.6).
Aunque Excel facilita el método de prueba y error, también posee dos herramientas
estándar que sirven para la localización de raíces: Goal Seek (buscar objetivo) y Solver.
Ambas son útiles para ajustar sistemáticamente los valores iniciales. Goal Seek (buscar
objetivo) se utiliza expresamente para llevar la ecuación a un valor (en este caso, cero)
mediante la variación de un solo parámetro.

EJEMPLO 7.4 Use la herramienta Goal Seek (buscar objetivo) de Excel para localizar
una raíz simple.

Planteamiento del problema. Emplee “buscar objetivo” para determinar la raíz de


la función trascendente
ƒ(x) = x – cos x

Chapra-07.indd 187 6/12/06 13:51:26


188 RAÍCES DE POLINOMIOS

B11 =A11–COS(A11)

valores para la gráfica:


2 x f(x) 3
3 0 –1
4 0.5 –0.37758
2
5 1 0.459698 1
6 1.5 1.429263
7 2 2.416147 0
8 –1 0.5 1 1.5 2
9 valores para prueba y error:
10 x f(x) –2
11 0.739125 6.64E-05
12

FIGURA 7.6
Una hoja de cálculo para determinar la raíz de f (x) = x – cos x por prueba y error. La gráfica se usa para obtener un buen
valor inicial.

Solución. Como en la figura 7.6, la clave para resolver una sola ecuación con Excel es
crear una celda que tenga el valor de la función en cuestión y hacer, después, el valor
dependiente de otra celda. Una vez hecho esto del menú herramientas se selecciona
“buscar objetivo”. Ahora aparece una ventana de diálogo pidiendo se especifique una
celda para un valor al modificar otra celda. Por ejemplo, suponga que, como en la figu-
ra 7.6, el valor propuesto se escribe en la celda A11 y la función resultante en la celda
B11. La ventana de diálogo para Goal Seek (buscar objetivo) será

Buscar objetivo:

Definir la celda: B11

Con el valor: 0

Para cambiar la celda: A11

Aceptar Cancelar

Cuando se selecciona el botón de OK (aceptar) una ventana de mensaje presenta los


resultados

Chapra-07.indd 188 6/12/06 13:51:27


7.7 LOCALIZACIÓN DE RAÍCES CON BIBLIOTECAS Y PAQUETES DE SOFTWARE 189

Estado de la búsqueda de objetivo

La búsqueda con la celda B11 puede Aceptar


no haber encontrado una solución
Cancelar
Valor del objetivo: 0
Paso a paso
Valor actual: 6.63648E-05
Pausa

Las celdas de la hoja de cálculo se modificarán con los nuevos valores, como se muestra
en la figura 7.6.

La herramienta Solver es más sofisticada que Goal Seek porque 1. puede variar
simultáneamente varias celdas y 2. además de llevar la celda destino a un valor, éste
puede minimizarse o maximizarse. En el siguiente ejemplo se ilustra cómo se utiliza
para resolver un sistema de ecuaciones no lineales.

EJEMPLO 7.5 Uso de Excel para resolver un sistema no lineal

Planteamiento del problema. En la sección 6.5 obtuvimos la solución del siguiente


sistema de ecuaciones simultáneas:
u(x, y) = x2 + xy – 10 = 0
v(x, y) = y + 3xy2 – 57 = 0

Observe que un par de raíces es x = 2 y y = 3. Utilice Solver para determinar las raíces
usando como valores iniciales x = 1 y y = 3.5.

Solución. Como se muestra más adelante, dos celdas (B1 y B2) pueden crearse para
los valores o iniciales x y y. Los valores de la función, u(x, y) y v(x, y), pueden entrar en
otras celdas (B3 y B4). Como se observa, los valores iniciales dan como resultado va-
lores de la función que son lejanos a cero.

B6 =B3^2+B4^2
A B C
1 x 1
2 y 3.5
3 u (x, y) –5.5
4 v(x, y) –16.75
5
6 Suma de cuadrados 310.8125
7

Chapra-07.indd 189 6/12/06 13:51:27


190 RAÍCES DE POLINOMIOS

Después, se crea otra celda que contenga un valor que refleje qué tan cercanas de
cero están ambas funciones. Una forma de hacerlo consiste en sumar los cuadrados de los
valores de las funciones. Este resultado se introduce en la celda B6. Si ambas funciones
son cero, esta función deberá también ser cero. Además, usando los cuadrados de las
funciones se evita la posibilidad de que ambas funciones puedan tener el mismo valor
diferente de cero, pero con signos contrarios. En tal caso, la celda de apoyo (B6) podría
ser cero, aunque las raíces podrían ser incorrectas.
Una vez que la hoja de cálculo ha sido creada, se elige la opción Solver en el menú
de herramientas. Entonces, una ventana de diálogo se presentará en pantalla, pidién-
dole la información pertinente. Las celdas solicitadas en la ventana de diálogo de Solver
se llenarán como

Parámetros de Solver

Celda objetivo: B6 Resolver


Valor de la
celda objetivo: Máximo Mínimo Valores de: 0
Cerrar
Cambiando celdas:

B1:B2 Estimar

Sujetas a las siguientes restricciones: Opciones

Agregar

Cambiar
Reestablecer
todo
Eliminar
Ayuda

Cuando el botón de OK (aceptar) se selecciona, se abrirá una ventana de diálogo con un


reporte de las operaciones efectuadas. En el presente caso, Solver obtiene la solución
correcta:

A B C D
1 x 2.00003
2 y 2.999984
3 u(x, y) 0.000176
4 v(x, y) 0.000202
5
6 Suma de cuadrados 7.19E-08
7

Chapra-07.indd 190 6/12/06 13:51:28


7.7 LOCALIZACIÓN DE RAÍCES CON BIBLIOTECAS Y PAQUETES DE SOFTWARE 191

Se debe observar que Solver puede fallar. Su éxito depende de 1. la condición del
sistema de ecuaciones y/o 2. la calidad de los valores iniciales. El resultado satisfactorio
del ejemplo anterior no está garantizado. A pesar de esto, se puede encontrar a Solver
bastante útil para hacer de él una buena opción en la obtención rápida de raíces para un
amplio rango de aplicaciones a la ingeniería.

7.7.2 MATLAB

MATLAB es capaz de localizar raíces en ecuaciones algebraicas y trascendentes, como


se muestra en la tabla 7.1. Siendo excelente para la manipulación y localización de raíces
en los polinomios.
La función fzero está diseñada para localizar la raíz de una función. Una represen-
tación simplificada de su sintaxis es
fzero (f, X0, opciones)

donde f es la tensión que se va a analizar, x0 es el valor inicial y opciones son los pará-
metros de optimización (éstos pueden cambiarse al usar la función optimset). Si no se
anotan las opciones se emplean los valores por omisión. Observe que se pueden emplear
uno o dos valores iniciales, asumiendo que la raíz está dentro del intervalo. El siguiente
ejemplo ilustra cómo se usa la función fzero.

EJEMPLO 7.6 Uso de MATLAB para localizar raíces

Planteamiento del problema. Utilice la función fzero de MATLAB para encontrar


las raíces de
f (x) = x10 – 1

dentro del intervalo xl = 0 y xu = 4, obviamente se tiene dos raíces –1 y 1. Recuerde que


para determinar la raíz positiva en el ejemplo 5.6 se usó el método de la falsa posición
con valores iniciales 0 y 1.3.

TABLA 7.1 Funciones comunes de MATLAB relacionadas


con la manipulación de polinomios
y la localización de raíces.

Función Descripción

fzero Raíz de una sola función


roots Encuentra raíces de polinomios
poly Construye polinomios con raíces específicas
polival Evalúa un polinomio
polivalm Evalúa un polinomio con argumento matricial
residue Expansión de la fracción-parcial (residuos)
polyder Diferenciación polinomial
conv Multiplicación de polinomios
deconv División de polinomios

Chapra-07.indd 191 6/12/06 13:51:28


192 RAÍCES DE POLINOMIOS

Solución. Bajo las mismas condiciones iniciales del ejemplo 5.6, se usa MATLAB
para determinar la raíz positiva.
>> x0=[0 1.3];
>> x=fzero(inline(‘x^10–1’),x0)

x =
1

De manera semejante, se emplean los valores iniciales –1.3 y 0 para determinar la


raíz negativa
>> x0=[–1.3 0];
>> x=fzero(inline(‘x^10–1’),x0)

x =
–1

Se puede usar un valor único; resulta un caso interesante cuando se usa el valor
inicial 0
>> x0=0;
>> x=fzero(inline(‘x^10–1’),x0)

x =
–1

Se tiene que para ese valor el algoritmo llevará a la raíz a su valor negativo.
El uso de optimset se ilustra al mostrar en pantalla la forma en que las iteraciones
conducen a la solución

>> x0=0;
>> option=optimset(‘DISP’,’ITER’);
>> x=fzero(inline(‘x^10–1’),x0,option)

Func–count x f(x) Procedure


1 0 –1 initial
2 –0.0282843 –1 search
3 0.0282843 –1 search
4 –0.04 –1 search



21 0.64 –0.988471 search
22 –0.905097 –0.631065 search
23 0.905097 –0.631065 search
24 –1.28 10.8059 search

Looking for a zero in the interval [–1.28], 0.9051]

25 0.784528 –0.911674 interpolation


26 –0.247736 –0.999999 bisection
27 –0.763868 –0.932363 bisection

Chapra-07.indd 192 6/12/06 13:51:28


7.7 LOCALIZACIÓN DE RAÍCES CON BIBLIOTECAS Y PAQUETES DE SOFTWARE 193

28 –1.02193 0.242305 bisection


29 –0.968701 –0.27239 interpolation
30 –0.996873 –0.0308299 interpolation
31 –0.999702 –0.00297526 interpolation
32 –1 5.53132e–006 interpolation
33 –1 –7.41965e–009 interpolation
34 –1 –1.88738e–014 interpolation
35 –1 0 interpolation
Zero found in the interval: [–1.28, 0.9051].

x =
–1

Estos resultados ilustran la estrategia empleada por fzero cuando se tiene un valor
único. Primero busca en la vecindad del valor inicial hasta detectar un cambio de signo.
Después usa una combinación del método de bisección e interpolación para dirigirse a
la raíz. La interpolación considera tanto el método de la secante como la interpolación
cuadrática inversa (recuerde la sección 7.4). Deberá notar que el algoritmo de fzero
puede implicar más cosas a partir de esta descripción básica. Puede consultar a Press y
colaboradores (1992) para mayores detalles.

EJEMPLO 7.7 Uso de MATLAB para manipular y determinar las raíces de polinomios

Planteamiento del problema. Analicemos cómo se emplea MATLAB para manipu-


lar y determinar las raíces de polinomios. Use la siguiente ecuación del ejemplo 7.3,
f5(x) = x5 – 3.5x4 + 2.75x3 + 2.125x2 – 3.875x + 1.25 (E7.7.1)

que tiene tres raíces reales: 0.5, 1.0, 2 y un par de raíces complejas: –1 ± 0.5i.

Solución. El polinomio se introduce en MATLAB almacenando los coeficientes como


un vector. Por ejemplo después de (>>) teclee los coeficientes del polinomio en el vector
a

>> a = [1 –3.5 2.75 2.125 –3.875 1.25];

Después se procede a manipular el polinomio. Por ejemplo, podemos evaluarlo en x = 1,


tecleando

>> polival (a,1)

que resultará 1(1)5 – 3.5(1) 4 + 2.75(1)3 + 2.125(1)2 – 3.875(1) + 1.25 = –0.25,

ans =
–0.2500

Para evaluar la derivada f ′(x) = 5x4 – 14x3 + 8.25x2 + 4.25x – 3.875 con

>> polyder (a)


ans =
5.0000 –14.0000 8.2500 4.2500 –3.8750

Chapra-07.indd 193 6/12/06 13:51:28


194 RAÍCES DE POLINOMIOS

A continuación, se crea un polinomio cuadrático que tiene dos de las raíces originales
de la ecuación (E7.7.1): 0.5 y –1. Esta cuadrática es (x – 0.5)(x + 1) = x2 + 0.5x – 0.5 y se
introduce en MATLAB como el vector b
>> b = [1 0.5 –0.5];

Se divide el polinomio original entre este polinomio con


>> [d, e] = deconv (a, b)

El resultado de la división es (un polinomio de tercer grado d) y un residuo (e)


d =
1.0000 –4.0000 5.2500 –2.5000
e =
0 0 0 0 0 0

Debido a que el polinomio es un divisor perfecto, el residuo polinominal tiene coeficien-


tes iguales a cero. Ahora las raíces del cociente polinominal se determinan como
>> roots (d)

Con el resultado esperado para las raíces faltantes del polinomio original (E7.7.1)
ans =
2.0000
1.0000 + 0.5000i
1.0000 – 0.5000i

Ahora al multiplicar d por b se regresa al polinomio original


>> conv (d, b)
ans =
1.0000 –3.5000 2.7500 2.1250 –3.8750 1.2500

Finalmente, podemos determinar todas las raíces del polinomio original con
>> r = roots (a)
r =
–1.0000
2.0000
1.0000 + 0.5000i
1.0000 – 0.5000i
0.5000

7.7.3 IMSL

IMSL tiene varias subrutinas para determinar las raíces de ecuaciones (tabla 7.2). En
este análisis nos enfocaremos en la rutina ZREAL, la cual localiza las raíces o cero
reales de una función real usando el método de Müller.
ZREAL se efectúa usando la siguiente instrucción CALL:
CALL ZREAL(F, ERABS, ERREL, EPS, ETA, NR, IMAX, X0, X, INFO)

Chapra-07.indd 194 6/12/06 13:51:29


7.7 LOCALIZACIÓN DE RAÍCES CON BIBLIOTECAS Y PAQUETES DE SOFTWARE 195

TABLA 7.2 Rutinas de IMSL para localizar raíces.

Categoría Rutina Capacidad

Raíces de una función


ZREAL Encuentra los ceros reales de una función real
con el método de Müller.
ZBREN Encuentra un cero de una función real que
cambia de signo en un intervalo dado.
ZANLY Encuentra los ceros de una función compleja
univariada usando el método de Müller.
Raíz de un sistema de ecuaciones
NEQNF Resuelve un sistema de ecuaciones no lineales
usando un algoritmo híbrido de Powell
modificado (una variación del método de
Newton) y una aproximación en
diferencias finitas del Jacobiano.
NEQNJ Resuelve un sistema de ecuaciones no lineales
usando un algoritmo híbrido de Powell
modificado (una variación del método de
Newton) con el Jacobiano propuesto por
el usuario.
NEQBF Resuelve un sistema de ecuaciones no lineales
usando la actualización de la secante
factorizada y una aproximación en
diferencias finitas del Jacobiano.
NEQBJ Resuelve un sistema de ecuaciones no lineales
usando la actualización de la secante
factorizada con el Jacobiano propuesto
por el usuario.
Raíces de polinomios
ZPORC Encuentra los ceros de polinomios con
coeficientes reales con el algoritmo de
Jenkins-Traub.
ZPLRC Encuentra los ceros de polinomios con
coeficientes reales con el método de
Laguerre.
ZPOCC Encuentra los ceros de polinomios con
coeficientes complejos con el algoritmo
de Jenkins-Traub.

Donde
F = Una función definida por el usuario para la cual van a encontrarse las raíces
ERABS = Primer criterio de terminación, termina si |ƒ(xi)| < ERABS. (Entrada)
ERREL = Segundo criterio de terminación, termina si |(xi – xi–1)/xi|< ERREL. (Entrada)
EPS = Véase ETA. (Entrada)
ETA = Criterio de extensión para raíces múltiples. (Entrada)
Si la raíz xi se ha calculado y |xi – xj| < EPS, donde xj es una raíz previamen-
te calculada, se reinicia el cálculo con un nuevo valor inicial de xi + ETA.
NR = Número de raíces a ser encontradas. (Entrada)
IMAX = Máximo número permitido de iteraciones por raíz. (Entrada)

Chapra-07.indd 195 6/12/06 13:51:29


196 RAÍCES DE POLINOMIOS

X0 = Longitud del vector NROOT que contiene los valores iniciales. (Entrada)
X = Longitud del vector NROOT que contiene las raíces calculadas. (Salida)
INFO = Longitud del vector entero NROOT. (Salida)
Contiene el número de iteraciones para encontrar cada raíz.
Observe que las iteraciones terminan cuando se satisface cualquiera de los criterios
de terminación o cuando se excede el número máximo de iteraciones. La función F
tiene el formato general
FUNCTION F(X)
REAL F,X
F = ...
END

donde la línea “F = ...” es donde se escribe la función de la variable desconocida X.

EJEMPLO 7.8 Uso de IMSL para localizar una raíz simple

Planteamiento del problema. Use ZREAL para determinar la raíz de la función


trascendente
ƒ(x) = x – cos x

Solución. Un ejemplo del programa principal en Fortran 90 y del uso de la función


ZREAL para resolver este problema se escribe como

PROGRAM Root
IMPLICIT NONE
INTEGER::nroot
PARAMETER (nroot=1)
INTEGER::itmax=50
REAL::errabs=0.,errrel=1.E-5,eps=0.,eta=0.
REAL::f,x0(nroot),x(nroot)
EXTERNAL f
INTEGER::info(nroot)
PRINT *, “Introduzca los valores iniciales”
READ *, x0
CALL ZREAL(f,errabs,errrel,eps,eta,nroot,itmax,x0,x,info)
PRINT *, “raíz = ”, x
PRINT *, “iteraciones = ”, info
END PROGRAM
FUNCTION f(x)
IMPLICIT NONE
REAL::f,x
f = x – cos(x)
END FUNCTION
La salida es:
Introduzca el valor inicial
0.5
raíz = 7.390851E-01
iteraciones = 5

Chapra-07.indd 196 6/12/06 13:51:29


PROBLEMAS 197

PROBLEMAS
7.1 Divida el polinomio ƒ(x) = x4 – 7.5x3 + 14.5x2 + 3x – 20 Emplee valores iniciales, x = y = 1.2 y emplee la herramienta
entre el monomio x – 2. ¿Es x = 2 una raíz? Solver de Excel, o la librería o paquete que prefiera.
7.2 Haga la división del polinomio ƒ(x) = x5 –5x4 + x3 – 6x2 – 7x 7.13 Determine las raíces de las ecuaciones no lineales simultá-
+ 10 entre el monomio x – 2. neas que siguen:
7.3 Use el método de Müller para determinar la raíz real positi-
va de (x – 4)x2 + (y – 4)2 = 5
x2 + y2 = 16
a) ƒ(x) = x3 + x2 – 3x – 5
b) ƒ(x) = x3 – 0.5x2 + 4x – 3 Use el método gráfico para obtener los valores iniciales. Deter-
mine estimaciones refinadas con la herramienta Solver de Excel,
7.4 Emplee el método de Müller o MATLAB para determinar o la librería o paquete de su preferencia.
las raíces reales y complejas de 7.14 En MATLAB, ejecute operaciones idénticas a las del ejem-
plo 7.7, o utilice la librería o paquete de su elección, a fin de
a) ƒ(x) = x3 – x2 + 3x – 2 encontrar todas las raíces del polinomio
b) ƒ(x) = 2x4 + 6x2 + 10
c) ƒ(x) = x4 – 2x3 + 6x2 – 8x + 8 ƒ(x) = (x – 4)(x + 2)(x – 1)(x + 5)(x – 7)

7.5 Utilice el método de Bairstow para determinar las raíces de Obsérvese que es posible usar la función poly para convertir
las raíces en un polinomio.
a) ƒ(x) = –2 + 6.2x –4x2 + 0.7x3 7.15 Use MATLAB o la librería o paquete que prefiera para
b) ƒ(x) = 9.34 – 21.97x + 16.3x2 –3.704x3 determinar las raíces de las ecuaciones en el problema 7.5.
c) ƒ(x) = x4 – 3x3 + 5x2 – x – 10 7.16 Desarrolle un subprograma para resolver cuáles son las
raíces de un polinomio, el cual utilice las rutinas IMSL o ZREAL,
7.6 Desarrolle un programa para implementar el método de o la librería o paquete de su elección. Pruébelo con la determi-
Müller. Pruébelo con la repetición del ejemplo 7.2. nación de las raíces de las ecuaciones de los problemas 7.4 y
7.7 Emplee el programa que desarrolló en el problema 7.6 para 7.5.
determinar las raíces reales del problema 7.4a. Construya una 7.17 Un cilindro circular de dos dimensiones se coloca en un
gráfica (a mano, o con Excel o algún otro paquete de graficación) flujo de velocidad alta y uniforme. Se desprenden vórtices del
para elegir valores iniciales apropiados. cilindro a frecuencia constante, la cual detectan sensores de
7.8 Desarrolle un programa para implementar el método de presión en la superficie posterior del cilindro por medio de calcu-
Bairstow. Pruébelo con la repetición del ejemplo 7.3. lar qué tan seguido oscila la presión. Dados tres puntos de los
7.9 Use el programa que desarrolló en el problema 7.8 para datos, use el método de Müller para encontrar el momento en
determinar las raíces de las ecuaciones en el problema 7.5. que la presión fue igual a cero.
7.10 Determine la raíz real de x3.5 = 80, con la herramienta Goal
Seek de Excel, o la librería o paquete de su elección. Tiempo 0.60 0.62 0.64
7.11 La velocidad de un paracaidista que cae está dada por
Presión 20 50 60
gm
v= (l – e–(c/m)t)
c 7.18 Al tratar de encontrar la acidez de una solución de hidróxi-
donde g = 9.8 m/s2. Para un paracaidista con un coeficiente de do de magnesio en ácido clorhídrico, se obtiene la ecuación si-
arrastre c = 14 kg/s, calcule la masa m de modo que la velocidad guiente:
sea v = 35 m/s en t = 8 s. Use las herramientas Goal Seek de
Excel, o alguna librería o paquete que elija, con objeto de deter- A(x) = x3 + 3.5x2 – 40
minar el valor de m.
donde x es la concentración del ion hidrógeno. Calcule la con-
7.12 Determine las raíces de las ecuaciones no lineales simultá-
centración del ion de hidrógeno para una solución saturada
neas siguientes:
(cuando la acidez es igual a cero) por medio de dos métodos
y = –x2 + x + 0.75 diferentes en MATLAB (por ejemplo, en forma gráfica y raíces
y + 5xy = x2 de una función).

Chapra-07.indd 197 6/12/06 13:51:29


198 RAÍCES DE POLINOMIOS

7.19 Considere el sistema siguiente con tres incógnitas a, u y v: donde ai y bi = las raíces del numerador y el denominador, res-
u2 – 2v2 = a2 pectivamente.
u+v=2 7.21 Desarrolle una función de archivo M para el método de
a2 – 2a – u = 0 bisección, en forma similar a la de la figura 5.10. Pruebe la
función por medio de repetir los cálculos de los ejemplos 5.3 y
Encuentre los valores reales de las incógnitas, por medio de a) 5.4.
Solver de Excel, y b) algún paquete de software de manipulación 7.22 Desarrolle una función de archivo M para el método de la
simbólica. falsa posición. La estructura de su función debe ser similar al
7.20 En el análisis de sistemas de control, se desarrollan funcio- algoritmo de la bisección que se ilustra en la figura 5.10. Pruebe
nes de transferencia que relacionan en forma matemática la di- el programa por medio de repetir el ejemplo 5.5.
námica de la entrada de un sistema con su salida. La función de 7.23 Desarrolle una función de archivo M para el método de
transferencia para un sistema de posicionamiento robotizado está Newton-Raphson, con base en la figura 6.4 y la sección 6.2.3.
dada por: Junto con el valor inicial, introduzca como argumentos la función
C (s ) s 3 + 12.5s 2 + 50.5s + 66 y derivada. Pruébelo con la repetición del cálculo del ejemplo
G (s ) = = 4 6.3.
N (s) s + 19s 3 + 122ss 2 + 296s + 192
7.24 Desarrolle una función de archivo M para el método de la
donde G(s) = ganancia del sistema, C(s) = salida del sistema, secante, con base en la figura 6.4 y la sección 6.3.2. Junto con
N(s) = entrada del sistema y s = frecuencia compleja de la trans- los dos valores iniciales, introduzca como argumento a la función.
formada de Laplace. Utilice una técnica numérica para obtener Pruébelo con la duplicación de los cálculos del ejemplo 6.6.
las raíces del numerador y el denominador, y factorícelas en la 7.25 Desarrolle una función de archivo M para el método de la
forma siguiente: secante modificado, con base en la figura 6.4 y la sección 6.3.2.
Junto con el valor inicial y la fracción de perturbación, introduz-
( s + a1 )( s + a2 )( s + a3 ) ca como argumento a la función. Pruébelo con la duplicación de
G(s) =
( s + b1 )( s + b2 )( s + b3 )( s + b4 ) los cálculos del ejemplo 6.8.

Chapra-07.indd 198 6/12/06 13:51:30

También podría gustarte