Raíces de Polinomios en Ingeniería
Raíces de Polinomios en Ingeniería
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.
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
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
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)
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).
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.
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 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:
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
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
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.
f(x) = (x – 4)(x + 6) = x2 + 2x – 24
entre el factor x – 4.
r = a2 = 1
a2 = 0
s = a1 = 2
a1 = r = 1
r = s + rt = 2 + 1(4) = 6
Para i = 0,
s = a0 = 24
a0 = r = 6
r = –24 + 6(4) = 0
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
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.
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.
Raíz Parábola
estimada
x1 x0 x x2 x1 x0 x
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.
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)
f ( x1 ) − f ( x 0 ) f ( x 2 ) − f ( x1 )
δ0 = δ1 = (7.23)
x1 − x 0 x 2 − x1
δ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
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.
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
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
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.
FIGURA 7.4
Seudocódigo para el método de Müller.
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)
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)
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
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
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
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
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%
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-
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.
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.
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.
B11 =A11–COS(A11)
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:
Con el valor: 0
Aceptar Cancelar
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.
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
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
B1:B2 Estimar
Agregar
Cambiar
Reestablecer
todo
Eliminar
Ayuda
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
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
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.
Función Descripción
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
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)
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
que tiene tres raíces reales: 0.5, 1.0, 2 y un par de raíces complejas: –1 ± 0.5i.
ans =
–0.2500
Para evaluar la derivada f ′(x) = 5x4 – 14x3 + 8.25x2 + 4.25x – 3.875 con
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];
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
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)
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)
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
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
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).
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.