Raı́ces de ecuaciones no lineales Dada una ecuación de una variable independiente x, f (x) = 0, se desea encontrar el valor o valores de x que hacen que se cumpla la igualdad, donde en general, f es una función no lineal de x, es decir, que no puede expresarse como f (x) = c0 + c1x donde c0 y c1 son constantes. l c Va D.R. en 1 zu ela, 2007 Método de bisecciones sucesivas f (x) f (x2 ) f (xnueva ) x1 xnueva x2 x f (x1 ) Se inicia con un intervalo [x1, x2] donde se sabe que existe una raı́z de la ecuación, y por lo tanto se debe cumplir que f (x1 )f (x2 ) < 0. Este intervalo se divide a la mitad calculando xnueva = x1 + x2 2 . Si f (x1 ) · f (xnueva ) < 0 se sabe que una raı́z se encuentra en el intervalo (x1 , xnueva ) y se puede continuar el algoritmo sustituyendo x2 por xnueva . En caso contrario, la raı́z debe caer en el intervalo (x2 , xnueva ) y el algoritmo puede continuarse sustituyendo x1 por xnueva . l c Va D.R. en 2 zu ela, 2007 Implementación de bisecciones sucesivas Function Bisecciones(f ,x1 ,x2 ) 1 7 x1 + x2 ; 2 if f (x1 )f (xnueva ) < 0 then x2 ← xnueva ; else x1 ← xnueva ; x − x 2 1 until < ε ó f (xnueva ) = 0 ; xnueva 8 return xnueva 2 3 4 5 6 l c Va D.R. en repeat xnueva ← 3 zu ela, 2007 Punto fijo (iteración simple) La ecuación f (x) = 0 se transforma a la forma g(x) = x, y ésta se utiliza como una regla recursiva, es decir, x ← g (x) . y y=x y = g(x) x l c Va D.R. en 4 zu ela, 2007 Punto fijo (iteración simple) La ecuación f (x) = 0 se transforma a la forma g(x) = x, y ésta se utiliza como una regla recursiva, es decir, x ← g (x) . y=x y y = g(x) x1 l c Va D.R. en x 4 zu ela, 2007 Punto fijo (iteración simple) La ecuación f (x) = 0 se transforma a la forma g(x) = x, y ésta se utiliza como una regla recursiva, es decir, x ← g (x) . y=x y g(x1 ) y = g(x) x1 l c Va D.R. en x 4 zu ela, 2007 Punto fijo (iteración simple) La ecuación f (x) = 0 se transforma a la forma g(x) = x, y ésta se utiliza como una regla recursiva, es decir, x ← g (x) . y=x y g(x1 ) x2 = g(x1 ) y = g(x) x1 l c Va D.R. en x2 x 4 zu ela, 2007 Punto fijo (iteración simple) La ecuación f (x) = 0 se transforma a la forma g(x) = x, y ésta se utiliza como una regla recursiva, es decir, x ← g (x) . y=x y g(x1 ) x2 = g(x1 ) g(x2 ) y = g(x) x1 l c Va D.R. en x2 x 4 zu ela, 2007 Punto fijo (iteración simple) La ecuación f (x) = 0 se transforma a la forma g(x) = x, y ésta se utiliza como una regla recursiva, es decir, x ← g (x) . y=x y g(x1 ) x2 = g(x1 ) x3 = g(x2 ) g(x2 ) y = g(x) x1 l c Va D.R. en x3 x2 x 4 zu ela, 2007 Punto fijo (iteración simple) La ecuación f (x) = 0 se transforma a la forma g(x) = x, y ésta se utiliza como una regla recursiva, es decir, x ← g (x) . y=x y g(x1 ) x2 = g(x1 ) x3 = g(x2 ) g(x2 ) y = g(x) x1 l c Va D.R. en x3 x2 x 4 zu ela, 2007 Punto fijo (iteración simple) La ecuación f (x) = 0 se transforma a la forma g(x) = x, y ésta se utiliza como una regla recursiva, es decir, x ← g (x) . y=x y g(x1 ) x2 = g(x1 ) x3 = g(x2 ) g(x2 ) y = g(x) x1 l c Va D.R. en x3 x4 x2 x 4 zu ela, 2007 Punto fijo (iteración simple) La ecuación f (x) = 0 se transforma a la forma g(x) = x, y ésta se utiliza como una regla recursiva, es decir, x ← g (x) . y=x y g(x1 ) x2 = g(x1 ) x3 = g(x2 ) g(x2 ) y = g(x) x1 l c Va D.R. en x3 x4 x2 x 4 zu ela, 2007 Punto fijo (iteración simple) La ecuación f (x) = 0 se transforma a la forma g(x) = x, y ésta se utiliza como una regla recursiva, es decir, x ← g (x) . y=x y g(x1 ) x2 = g(x1 ) x3 = g(x2 ) g(x2 ) y = g(x) x1 l c Va D.R. en x3 x5 x4 x2 x 4 zu ela, 2007 Punto fijo (iteración simple) La ecuación f (x) = 0 se transforma a la forma g(x) = x, y ésta se utiliza como una regla recursiva, es decir, x ← g (x) . y=x y g(x1 ) x2 = g(x1 ) x3 = g(x2 ) g(x2 ) y = g(x) x1 l c Va D.R. en x3 x5 x4 x2 x 4 zu ela, 2007 Punto fijo (iteración simple) La ecuación f (x) = 0 se transforma a la forma g(x) = x, y ésta se utiliza como una regla recursiva, es decir, x ← g (x) . y=x y g(x1 ) x2 = g(x1 ) x3 = g(x2 ) g(x2 ) y = g(x) x1 l c Va D.R. en x3 x5 x6 x4 x2 x 4 zu ela, 2007 Condición de convergencia para iteración simple El método de iteración simple converge converge a una raı́z r de la ecuación g(x) = x si g(x) y g (x) son continuas en un intervalo alrededor de r , si g (x) < 1, para todo ese intervalo, y si x1 se escoge en ese intervalo. Nótese que ésta es una condición suficiente, pero no necesaria. l c Va D.R. en 5 zu ela, 2007 Implementación del método de iteración simple Function IteracionSimple(g ,x) 4 repeat xant ← x ; x ← g(x) ; x − x ant until <ε; x 5 return x 1 2 3 l c Va D.R. en 6 zu ela, 2007 Método Newton-Rapson f (x) f (x(t)) θ x(t + 1) tan θ = f (xt ) = x(t) f (x(t)) x(t) − x(t + 1) x(t + 1) = x(t) − x←x− l c Va D.R. en x f (x(t)) f (x(t)) f (x) f (x) , (1) 7 zu ela, 2007 Implementación del método Newton-Rapson Function NewtonRapson(f ,f ,x) 1 2 4 f (x) x←x− ; f (x) x − x ant until <ε; x 5 return x 3 l c Va D.R. en repeat xant ← x ; 8 zu ela, 2007 Condición de convergencia para Newton-Rapson Tomando la idea de la condición de convergencia de iteración simple, la condición para Newton-Rapson es la siguiente d f (x) x− < 1, dx f (x) que es equivalente a f (x)f (x) <1 f (x) 2 De nuevo, ésta es una condición suficiente, pero no necesaria. l c Va D.R. en 9 zu ela, 2007 Método de la Secante El método Newton-Rapson requiere evaluar f (x). En el método de la secante, la derivada se aproxima de la siguiente manera: f (x(t)) ≈ f (x(t − 1)) − f (x(t)) x(t − 1) − x(t) Sustituyendo en la ecuación recursiva de Newton-Rapson se obtiene x(t + 1) = x(t) − f (x(t)) (x(t) − x(t − 1)) f (x(t)) − f (x(t − 1)) o lo que es lo mismo, x ← x − f (x) l c Va D.R. en x − xanterior f (x) − f (xanterior ) , . 10 zu ela, 2007 Implementación del método de la secante Function Secante(f ,x1 ,x2 ) 1 2 5 x1 − x2 x1 ← x1 − f (x1 ) ; f (x1 ) − f (x2 ) x2 ← xtemp ; x − x 2 1 until <ε; x1 6 return x 3 4 l c Va D.R. en repeat xtemp ← x1 ; 11 zu ela, 2007 Método Newton-Rapson para funciones de dos variables Siguiendo la estrategia del método de Newton-Rapson visto, es posible diseñar un algoritmo para encontrar raı́ces de funciones de la forma l c Va D.R. en f (x, y) = 0 g(x, y) = 0 12 zu ela, 2007 Método Newton-Rapson para funciones de dos variables Siguiendo la estrategia del método de Newton-Rapson visto, es posible diseñar un algoritmo para encontrar raı́ces de funciones de la forma f (x, y) = 0 g(x, y) = 0 Suponiendo que tenemos un punto inicial p0 = (x0 , y0), las ecuaciones de los planos tangentes a f y g en el punto p0 son z = (x − x0 ) fx (x0 , y0) + (y − y0) fy (x0 , y0) + f (x0 , y0) z = (x − x0 ) gx (x0 , y0) + (y − y0)gy (x0 , y0) + g(x0 , y0) donde fx = gx = l c Va D.R. en ∂f ∂x ∂g ∂x fy = gy = ∂f ∂y ∂g ∂y 12 zu ela, 2007 Si nos interesan las raı́ces, es decir los puntos para los cuales z = 0, tenemos que l c Va D.R. en (x − x0 ) fx + (y − y0) fy = −f (x0 , y0) (x − x0 ) gx + (y − y0) gy = −g(x0 , y0) 13 zu ela, 2007 Si nos interesan las raı́ces, es decir los puntos para los cuales z = 0, tenemos que (x − x0 ) fx + (y − y0) fy = −f (x0 , y0) (x − x0 ) gx + (y − y0) gy = −g(x0 , y0) Definiendo tenemos que l c Va D.R. en fx gx fy gy Δx = x − x0 Δy = y − y0 Δx Δy = −f (x0 , y0) −g(x0 , y0) 13 zu ela, 2007 Regla recursiva de Newton-Rapson para funciones de dos variables Por lo tanto la regla recursiva es x ← x + Δx y ← y + Δy donde Δx y Δy se obtienen de resolver el sistema de ecuaciones l c Va D.R. en fx gx fy gy Δx Δy = −f (x, y) −g(x, y) 14 zu ela, 2007 Regla recursiva de Newton-Rapson para funciones de tres variables El método puede generalizarse a un número más grande de variables independientes. Para el siguiente sistema de ecuaciones no lineales de tres variables independientes: f (x, y, z) = 0 g(x, y, z) = 0 h(x, y, z) = 0 La regla recursiva es la siguiente: donde Δx, Δy , Δz se obtienen ⎡ fx fy ⎣ gx gy hx hy l c Va D.R. en x ← x + Δx y ← y + Δy z ← z + Δz de resolver el sistema de ecuaciones ⎤⎡ ⎤ ⎡ ⎤ Δx fz −f (x, y, z) gz ⎦ ⎣ Δy ⎦ = ⎣ −g(x, y, z) ⎦ hz Δz −h(x, y, z) 15 zu ela, 2007 Ejemplo de dos variables independientes Encontremos una raı́z del siguiente sistemas de ecuaciones no lineales: 2 = x +y −1 g(x, y) = x−y fx = 2x fy = 2y gx = 1 El sistema de ecuaciones es 2x 1 Tomemos p0 = (2, 1): 2 f (x, y) 2y −1 Δx Δy gy = −1 = −x2 − y 2 + 1 −x + y 4 2 Δx −4 = 1 −1 Δy −1 De donde Δx = −1 y Δy = 0 por lo tanto l c Va D.R. en x ← x + Δx = 2 − 1 = 1 y ← y + Δy = 1 − 0 = 1 16 zu ela, 2007 Iterando obtenemos los siguientes valores: x y 2 1 1 1 0.7500 0.7500 0.7083 0.7083 0.7071 0.7071 Se puede comprobar que (0.7071, 0.7071) es una raı́z del juego de ecuaciones no lineales. l c Va D.R. en 17 zu ela, 2007 Método de Horner (división sintética) Supóngase dos polinomios P (x) y Q(x) de la forma P (x) = n n−1 a1 x + a2x + · · · + an x + an+1 = n+1 ai xn−i+1 (2) i=1 Q(x) = n−1 b1 x n−2 + b2 x + · · · + bn−1 x + bn = n bi xn−i (3) i=1 donde a1 = 0. Si la relación entre P (x) y Q(x) está dada por P (x) = (x − x0 )Q(x) + bn+1 , (4) Se tiene que b1 = a1 , bn+1 = P (x0 ), y bk = ak + bk−1 x0 , (5) para k = 2, 3, . . . , n + 1. l c Va D.R. en 18 zu ela, 2007 División Sintética Lo anterior puede realizarse mediante una tabla de la siguiente manera x0 a1 b1 = a1 l c Va D.R. en a2 b1x0 b2 = a2 + b1 x0 a3 b2 x0 b3 = a3 + b2 x0 ··· ··· ··· ··· an bn−1 x0 bn = an + bn−1x0 an+1 bnx0 bn+1 = an+1 + bn x0 19 zu ela, 2007 División Sintética Lo anterior puede realizarse mediante una tabla de la siguiente manera x0 a1 b1 = a1 a2 b1x0 b2 = a2 + b1 x0 a3 b2 x0 b3 = a3 + b2 x0 ··· ··· ··· ··· an bn−1 x0 bn = an + bn−1x0 an+1 bnx0 bn+1 = an+1 + bn x0 Ejemplo: Si P (x) = 2x4 − 3x2 + 3x − 4 y x0 = −2: −2 2 2 0 −4 −4 −3 8 5 3 −10 −7 −4 14 10 de donde P (x) = (x + 2)(2x3 − 4x2 + 5x − 7) + 10 y P (−2) = 10. l c Va D.R. en 19 zu ela, 2007 Dado que P (x) = (x − x0 )Q(x) + bn+1 , P (x) = Q(x) + (x − x0)Q (x). (6) (7) Por lo tanto P (x0 ) = Q(x0 ), (8) es decir, que P (x0 ) puede evaluarse obteniendo el residuo de la división de Q(x) por (x − x0 ) y evaluando Q(x0 ). l c Va D.R. en 20 zu ela, 2007 Polinomios como vectores El polinomio P (x), n n−1 P (x) = a1 x + a2x + · · · + an x + an+1 = n+1 ai xn−i+1, (9) i=1 puede ser representado por el vector de sus coeficientes, a= a1 a2 ··· an an+1 (10) de la misma manera Q(x) puede ser representado por el vector b(1 : n) b= l c Va D.R. en b1 b2 ··· bn (11) 21 zu ela, 2007 Implementación de división sintética Function Horner(a,x0 ) 3 b1 ← a1 ; for i ← 2 to n + 1 do bi ← ai + bi−1x0 ; 4 return b 1 2 l c Va D.R. en 22 zu ela, 2007 Birge-Vieta Un polinomio de la forma, n n−1 P (x) = a1 x + a2 x + · · · + an−1x + an = n n−i+1 ai x , (12) i=1 puede ser factorizado en la forma P (x) = (x − p1 )(x − p2) · · · (x − pn) = n (x − pi ), (13) i=1 donde pi es un cero (o raı́z) del polinomio porque P (pi ) = 0. El método Birge-Vieta aplica Newton-Rapson para encontrar una raı́z del polinomio P (x). Dado un punto xk , evalúa P (xk ) y P (xk ) mediante división sintética. Cuando encuentra una raı́z pi , elimina el factor (x − pi ) mediante división sintética y continúa trabajando sobre el polinomio resultante. El proceso se repite hasta encontrar todas las raı́ces del polinomio. l c Va D.R. en 23 zu ela, 2007 Ejemplo de Birge-Vieta Sea P (x) = x3 − 2x2 − 5x + 6. Valor inicial x = −(−5)/6 = 0.8333 0.8333 1 0.8333 1 1 −2 0.8333 −1.1667 0.8333 −0.3333 x←x− 0.9970 1 0.9970 1 1 1.0231 − 6.2500 −2 0.9970 −1.0030 0.9970 −0.0059 x←x− l c Va D.R. en −5 −0.9722 −5.9722 −0.2778 −6.2500 6 −4.9769 1.0231 = 0.9970 −5 −1.0000 −6.0000 −0.0059 −6.0059 0.0178 − 6.0059 6 −5.9822 0.0178 =1 24 zu ela, 2007 0.9970 1 0.9970 1 1 −2 1 −1 1 0 x←x− −5 −1 −6.0000 0 −6 0 −6 6 −6 0 =1 x = 1 es la primera raı́z. Continuamos con el polinomio x2 − x − 6. Valor inicial x = −(−1)/(−6) = −0.1667 0.1667 1 0.1667 1 1 x←x− l c Va D.R. en −1 −0.1667 −1.1667 −0.1667 −1.3333 − 5.8056 − 1.3333 −6 0.1944 −5.8056 = −4.5208 25 zu ela, 2007 −4.5208 1 −4.5208 1 −1 −4.5208 −5.5208 −4.5208 −10.0417 1 x←x− 18.9588 − 10.0417 −2.6328 1 −2.6328 1 1 x←x− l c Va D.R. en = −2.6328 −1 −2.6328 −3.6328 −2.6328 −6.2656 3.5646 − 6.2656 −6 24.9588 18.9588 −6 9.5646 3.5646 = −2.0639 26 zu ela, 2007 −2.0639 1 −2.0639 1 1 x←x− 0.3237 − 5.1278 −2.0008 1 −2.0008 1 1 x←x− l c Va D.R. en −1 −2.0639 −3.0639 −2.0639 −5.1278 −6 6.3237 0.3237 = −2.0008 −1 −2.0008 −3.0008 −2.0008 −5.0016 0.0040 − 5.0016 −6 6.0040 0.0040 = −2 27 zu ela, 2007 −2 1 −2 1 1 x←x− −1 −2 −3 −2 −5 0 −5 −6 6 0 = −2 x = −2 es la segunda raı́z. Seguimos con el polinomio P (x) = x − 3. La tercera raı́z es x = 3. l c Va D.R. en 28 zu ela, 2007 División sintética para binomios Es posible deducir un algoritmo de división sintética para binomios de la siguiente manera: 2 P (x) = (x − rx − s)Q(x) + bn (x − r) + bn+1 (14) Supóngase dos polinomios P (x) y Q(x) de la forma P (x) = n n−1 a1x + a2x + · · · + an x + an+1 = n+1 ai xn−i+1 (15) i=1 Q(x) = n−2 b1x n−3 + b2x + · · · + bn−2 x + bn−1 = n−1 n−i−1 bi x (16) i=1 donde a1 = 0. l c Va D.R. en 29 zu ela, 2007 Al multiplicar e igualar coeficientes de potencias iguales de x se tiene que b1 = a1 (17) b2 = a2 + rb1 (18) b3 = a3 + rb2 + sb1 (19) b4 = ... a4 + rb3 + sb2 (20) (21) de donde bk = ak + rbk−1 + sbk−2 (22) para k = 3, 4, . . . n + 1. En una tabla: a1 r s b1 l c Va D.R. en a2 b1 r b2 a3 b2 r b1 s b3 ··· ··· ··· ··· an−1 nn−2r bn−3 s bn−1 an bn−1r bn−2s bn an+1 bnr bn−1s bn+1 30 zu ela, 2007 Implementación de división sintética para binomios Function divSintetica(a,r ,s) 4 b1 ← a1 ; b2 ← a2 + rb1 ; for i ← 3 to n + 1 do bi ← ai + rbi−1 + sbi−2 ; 5 return b 1 2 3 l c Va D.R. en 31 zu ela, 2007 El método de Lin-Bairstow necesita calcular ∂bn /∂r , ∂bn/∂s, ∂bn+1/∂r , y ∂bn+1 /∂s. Éstas pueden obtenerse mediante una división sintética: ∂b1 ∂r ∂b2 ∂r ∂b3 ∂r ∂b4 ∂r ∂b5 ∂r ... =0 = b1 ≡ c1 = b2 + rc1 ≡ c2 = b3 + rc2 + sc1 ≡ c3 = b4 + rc3 + sc2 ≡ c4 ∂b1 ∂s ∂b2 ∂s ∂b3 ∂s ∂b4 ∂s ∂b5 ∂s ... =0 =0 = b1 = c1 = b2 + rc1 = c2 = b3 + rc2 = c3 de donde ck = bk + rck−1 + sck−2 para k = 3, 4, . . . , n + 1, y ∂bk ∂r l c Va D.R. en = ck−1 ∂bk ∂s = ck−2 32 zu ela, 2007 En una tabla a1 r s b1 b2 c1 r c1 c2 r s l c Va D.R. en a2 b1 r a3 b2r b1 s b3 c2 r c1 s c3 ··· ··· ··· ··· ··· ··· ··· an−2 bn−3 r bn−4s bn−2 cn−3r cn−4s cn−2 an−1 bn−2 r bn−3s bn−1 cn−2r cn−3s cn−1 an bn−1r bn−2s bn cn−1r cn−2s cn an+1 bn r bn−1 s bn+1 33 zu ela, 2007 Lin-Bairstow El método de Lin-Bairstow encuentra todas las raı́ces (reales y complejas) de un polinomio P (x). Dado unos valores iniciales de r y s, realiza una división sintética de P (x) por (x2 −rx−s). Utiliza el método de Newton para encontrar los valores de r y s que hagan el residuo cero, es decir, encuentra las raı́ces del sistema de ecuaciones bn (r, s) = 0 bn−1 (r, s) = 0 Utilizando la regla recursiva donde l c Va D.R. en cn−1 cn rk = rk−1 + Δr sk = sk−1 + Δs cn−2 cn−1 Δr Δs = −bn −bn+1 34 zu ela, 2007 Una vez que se encuentra un factor cuadrático de P (x) se resuelve con la fórmula p1,2 = −B± B2 2A − 4AC = r± r 2 + 4s 2 y se continúa trabajando tomando Q(x) como el nuevo polinomio P (x). l c Va D.R. en 35 zu ela, 2007 Ejemplo de Lin-Bairstow P (x) = x4 − 1.1x3 + 2.3x2 + 0.5x + 3.3 = 0 Tomando como valores iniciales s = r = −1, la primera iteración nos da: −1 −1 −1 −1 l c Va D.R. en 1 −1.1 −1.0 1 −2.1 −1.0 1 −3.1 2.3 2.1 −1.0 3.4 3.1 −1.0 5.5 0.5 −3.4 2.1 −0.8 −5.5 3.1 −3.2 3.3 0.8 3.4 0.7 36 zu ela, 2007 Ejemplo de Lin-Bairstow P (x) = x4 − 1.1x3 + 2.3x2 + 0.5x + 3.3 = 0 Tomando como valores iniciales s = r = −1, la primera iteración nos da: −1 −1 −1 −1 l c Va D.R. en 1 −1.1 −1.0 1 −2.1 −1.0 1 −3.1 cn−2 2.3 2.1 −1.0 3.4 3.1 −1.0 5.5 cn−1 0.5 −3.4 2.1 −0.8 −5.5 3.1 −3.2 cn 3.3 0.8 3.4 0.7 bn+1 bn 36 zu ela, 2007 Ejemplo de Lin-Bairstow P (x) = x4 − 1.1x3 + 2.3x2 + 0.5x + 3.3 = 0 Tomando como valores iniciales s = r = −1, la primera iteración nos da: −1 −1 −1 −1 Resolviendo el sistema 1 −1.1 −1.0 1 −2.1 −1.0 1 5.5 −3.2 −3.1 cn−2 −3.1 5.5 2.3 2.1 −1.0 3.4 3.1 −1.0 5.5 cn−1 Δr Δs 0.5 −3.4 2.1 −0.8 −5.5 3.1 −3.2 cn 3.3 0.8 3.4 0.7 bn+1 bn = 0.8 −0.7 Δr = 0.11 y Δs = −0.06. l c Va D.R. en 36 zu ela, 2007 La segunda iteración: −0.89 −1.06 −0.89 −1.06 Resolviendo el sistema 1 −1.1 −0.89 1 −1.99 −0.89 1 −2.88 4.51 −1.03 −2.88 4.51 2.3 1.77 −1.06 3.01 2.56 −1.06 4.51 Δr Δs 0.5 −2.68 2.11 −0.07 −4.01 3.05 −1.03 3.3 0.06 −3.17 0.17 = 0.07 −0.17 Δr = −0.01 y Δs = −0.06. Por lo tanto, l c Va D.R. en r = −0.900 s = −1.100 37 zu ela, 2007 Implementación de Lin-Bairstow Function LinBairstow(a) 1 2 3 4 5 6 7 8 9 10 11 if n = 2 then pk,k+1 = − a2 ± 13 else pk ← −a2 /a1 ; 14 return p 12 l c Va D.R. en r ← 0; s ← 0; k ← 1; n ← length(a) − 1; while n > 2 do b ← divSintetica(a, r, s) ; c ← divSintetica(b(1 : n), r, s) ; −1 Δr −bn cn−1 cn−2 ; = cn cn−1 −bn+1 Δs r ← r + Δr ; s ← s + Δs ; if |Δr| + |Δs| < ε then r ± r 2 + 4s pk,k+1 ← ;k ←k+2; 2 a ← b(1 : n − 1); n ← n − 2 ; a22 − 4a1 a3 2a1 ; 38 zu ela, 2007