Programación y Métodos Numéricos Carlos Conde, Arturo Hidalgo y Alfredo López ETSI Minas de la Universidad Politécnica de Madrid EJERCICIOS DE MÉTODOS ITERATIVOS PARA LA RESOLUCIÓN DE SISTEMAS LINEALES DE ECUACIONES PROPUESTOS EN EXÁMENES DE LA ASIGNATURA CURSO 2001-2002 Examen de control Siendo a un número real tal que a ≠ 0 se considera el sistema compatible determinado homogéneo: ⎧1 ⎪⎪ 2 .x ⎨ ⎪ ⎪⎩ = 0 a .y = 0 2 Dicho sistema se desea resolver mediante el método de gradiente con paso óptimo partiendo de un vector semilla (x(1), y(1)) ≠ (0,0) . Además se supone que todos los cálculos aritméticos se realizan sin ningún error de redondeo. Señala entre las opciones siguientes cuál es la única correcta en su totalidad: a) Las coordenadas (x(i+1) , y(i+1) )del vector obtenido en cada iteración se relacionan con las coordenadas (x(i), y(i)) del vector con el que se comienza dicha iteración mediante la expresión: a2 .(a − 1).(y (i) )2 (i) (1 − a).(x (i) )2 (i+1) (i+1) x = (i) 2 .x , y = (i) 2 .y(i) 3 (i) 2 3 (i) 2 (x ) + a .(y ) (x ) + a .(y ) b) Las coordenadas (x(i+1) , y(i+1) )del vector obtenido en cada iteración se relacionan con las coordenadas (x(i), y(i)) del vector con el que se comienza dicha iteración mediante la expresión: x(i+1) = 3.(x (i) )2 + a2 .(a + 1).(y(i) )2 (i) (i+1) 3.(x(i) )2 + a2 .(a + 1).(y(i) )2 (i) .x , y = .y (x (i) )2 + a3 .(y(i) )2 (x(i) )2 + a3 .(y(i) )2 c) Las coordenadas (x(i+1) , y(i+1) )del vector obtenido en cada iteración se relacionan con las coordenadas (x(i), y(i)) del vector con el que se comienza dicha iteración mediante la expresión: x (i+1) a2 .(a − 1).(y (i) )2 (i) = (i) 2 .x (x ) + a3 .(y(i) )2 , y (i+1) a2 .(1 − a).(y (i) )2 (i) = (i) 2 .y (x ) + a3 .(y(i) )2 d) Ninguna de las otras tres opciones de este ejercicio es correcta. 1 Programación y Métodos Numéricos Carlos Conde, Arturo Hidalgo y Alfredo López ETSI Minas de la Universidad Politécnica de Madrid SOLUCIÓN: La matriz del sistema dado ([A]) y el vector de segundos términos ({b}) son en este caso: ⎡1 ⎤ ⎢2 0⎥ ⎧0 ⎫ [A] = ⎢ ⎥ , {b} = ⎨ ⎬ ⎩0 ⎭ ⎢0 a ⎥ ⎣⎢ 2 ⎦⎥ En una iteración genérica del método de gradiente con paso óptimo se partirá del punto (x(i) , y(i)). En él, el vector residuo puede determinarse mediante: ⎧ x (i) ⎫ ⎧ x(i) ⎫ 1 ⎧ x(i) ⎫ (i) {r } = {b} − [A]. ⎨y(i) ⎬ = −[A]. ⎨y(i) ⎬ = − 2 . ⎨a.y(i) ⎬ ⎩ ⎭ ⎩ ⎭ ⎩ ⎭ verificándose por tanto que: 1 ⎧ x (i) ⎫ (i) (i) z = [A]. r = − . ⎨ 2 (i) ⎬ 4 ⎩a .y ⎭ por lo que el parámetro de descenso estará dado por: 1 T . (x(i) )2 + a2 .(y(i) )2 r (i) i r (i) 2. (x (i) )2 + a2 .(y(i) )2 4 ρi = = = T 1 (i) 2 3 (i) 2 (x(i) )2 + a3 .(y(i) )2 r (i) i[A]i r (i) . (x ) + a .(y ) 8 Todo lo anterior nos conduce finalmente a que: { } { } { } { } { } { } ( ) ( ) ( ( ( ) (i) 2 2 (i) 2 ⎧ x(i+1) ⎫ ⎧ x (i) ⎫ ⎧ x(i) ⎫ 2. (x ) + a .(y ) (i) ⎨ (i+1) ⎬ = ⎨ (i) ⎬ + ρi . r = ⎨ (i) ⎬ + (x (i) )2 + a3 .(y (i) )2 ⎩y ⎭ ⎩y ⎭ ⎩y ⎭ { } ( ) ( ( ) .⎛ − 1 ⎞. ⎧ x ⎫ ⎜ 2 ⎟ ⎨ (i) ⎬ = ⎝ ⎠ ⎩a.y ⎭ ) ) ⎧ ⎛ (x(i) )2 + a2 .(y(i) )2 ⎞ ⎫ ⎪ x(i) . ⎜ 1 − ⎟ ⎪ (i) 2 3 (i) 2 ⎜ ⎟ ⎪ ⎪ (x ) + a .(y ) ⎪ ⎝ ⎠ ⎪ =⎨ ⎬= (i) 2 2 (i) 2 ⎛ ⎞ (x ) + a .(y ) ⎪ ⎪ (i) ⎟⎪ ⎪ y . ⎜ 1 − a. (i) 2 3 (i) 2 ⎜ ⎟⎪ (x ) a .(y ) + ⎪⎩ ⎝ ⎠⎭ ( ( ) ) ⎧ 3 (i) 2 (i) 2 2 (i) 2 ⎞ ⎫ ⎛ (i) 2 ⎪ x(i) . ⎜ (x ) + a .(y ) − (x ) − a .(y ) ⎟ ⎪ ⎜ ⎟ ⎪ ⎪ (x(i) )2 + a3 .(y(i) )2 ⎪ ⎝ ⎠ ⎪ =⎨ ⎬= (i) 2 3 (i) 2 (i) 2 3 (i) 2 ⎛ ⎞ ⎪ (i) (x ) + a .(y ) − a.(x ) − a .(y ) ⎪ ⎟⎪ ⎪y .⎜ (i) 2 3 (i) 2 ⎜ ⎟⎪ (x ) a .(y ) + ⎪⎩ ⎝ ⎠⎭ ( ) ( ) 2 ) (i) Programación y Métodos Numéricos Carlos Conde, Arturo Hidalgo y Alfredo López ETSI Minas de la Universidad Politécnica de Madrid ⎧ a2 .(a − 1).(y (i) )2 (i) ⎫ .x ⎪ ⎪ (i) 2 3 (i) 2 ⎪ (x ) + a .(y ) ⎪ =⎨ ⎬ (i) 2 ⎪ (1 − a).(x ) .y (i) ⎪ ⎪⎩ (x (i) )2 + a3 .(y(i) )2 ⎪⎭ por lo que la opción correcta es la opción a). Considera el sistema de ecuaciones lineales: ⎧x + y = 1 ⎨ y = 1 ⎩ cuya solución es (x*=0, y*=1). Dicho sistema se desea resolver por el método de la ecuación normal (es decir transformando el sistema [A].{x} = {b} en el sistema equivalente [A]T.[A].{x} = [A]T.{b} y aplicando al sistema así obtenido el método de gradiente conjugado). Si en dicho método se utiliza como vector semilla el vector (x(1) = -1, y(1) = 0) indica cual, entre las siguientes opciones, recoge el valor de la dirección de descenso que se seguiría al realizar la segunda iteración (es decir para determinar (x(3), y(3)) a partir de (x(2), y(2))): a) No ha lugar a realizar una segunda iteración pues en la primera se obtiene la solución exacta. b) El vector de descenso a seguir en la segunda iteración es: 1 ⎧−5 ⎫ ⋅⎨ ⎬ 49 ⎩15 ⎭ c) El vector de descenso a seguir en la segunda iteración es: 1 ⎧104 ⎫ ⋅⎨ ⎬ 1156 ⎩ −65 ⎭ d) El vector de descenso a seguir en la segunda iteración es: 1 ⎧12 ⎫ .⎨ ⎬ 25 ⎩−8 ⎭ SOLUCIÓN: 3 Programación y Métodos Numéricos Carlos Conde, Arturo Hidalgo y Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Según el enunciado, la matriz del sistema ([A]) y el vector de segundos términos ({b}) son: ⎡ 1 1⎤ ⎧1⎫ , {b} = ⎨ ⎬ [A] = ⎢ ⎥ ⎩1⎭ ⎣0 1⎦ Puesto que la matriz no es simétrica aplicaremos el método de la ecuación normal tal cual se describe en el enunciado, es decir, multiplicaremos la matriz del sistema y el vector de segundos términos por la traspuesta de la matriz del sistema: ⎡1 0 ⎤ [A]T = ⎢ ⎥ ⎣1 1⎦ con lo que llamaremos: ⎡1 1⎤ ⎧ 1⎫ , {c} = [A]T .{b} = ⎨ ⎬ [M] = [A]T .[A] = ⎢ ⎥ ⎩2 ⎭ ⎣1 2⎦ y aplicaremos el método de gradiente conjugado al sistema (equivalente al dado) [M].{x} = {b}. Para ello el enunciado nos indica que partamos del vector semilla: (x(1) = -1, y(1) = 0) en el que: −1 −1 {r } = {c} − [M]. ⎧⎨ 0 ⎫⎬ = ⎧⎨2⎫⎬ − ⎧⎨−1⎫⎬ = ⎧⎨3⎫⎬ (1) 1 2 ⎩ ⎭ ⎩ ⎭ ⎩ ⎭ ⎩ ⎭ El vector residuo así obtenido marcará también la primera dirección de descenso que por tanto será: ⎧2 ⎫ d(1) = ⎨ ⎬ ⎩3 ⎭ Llamando: ⎧5 ⎫ z(1) = [M]. d(1) = ⎨ ⎬ ⎩8 ⎭ puede calcularse el parámetro de descenso en esta iteración como: { } { } ρ1 { } {r }i{r } = 13 = {d }i{z } 34 (1) (1) (1) (1) por lo que: ⎧ x(2) ⎫ ⎧ x(1) ⎫ ⎧−1⎫ 13 ⎧2⎫ 1 ⎧−8 ⎫ (1) .⎨ ⎬ = .⎨ ⎬ ⎨ (2) ⎬ = ⎨ (1) ⎬ + ρ1. d = ⎨ ⎬ + ⎩ 0 ⎭ 34 ⎩3 ⎭ 34 ⎩39 ⎭ ⎩y ⎭ ⎩y ⎭ El nuevo vector residuo en este punto será: 2 ⎧5 ⎫ 1 ⎧ 3 ⎫ .⎨ ⎬ = .⎨ ⎬ {r (2) } = {r (1) } − ρ1.{z(1) } = ⎧⎨3⎫⎬ − 13 ⎩ ⎭ 34 ⎩8 ⎭ 34 ⎩−2⎭ por lo que el parámetro usado en la corrección del vector de descenso resultará: 1 T r (2) } i{r (2) } 342 .(9 + 4) { 1 α1 = = = 2 T 13 34 {r (1) } i{r (1) } { } resultando finalmente que el nuevo vector de descenso estará dado por: 4 Programación y Métodos Numéricos Carlos Conde, Arturo Hidalgo y Alfredo López ETSI Minas de la Universidad Politécnica de Madrid {d } = {r } + α .{d } = 341 . ⎧⎨−2⎫⎬ + 341 (2) (2) 3 (1) 1 ⎩ = ⎭ ⎧ 2 ⎫ 1 ⎛ ⎧ 3 ⎫ 1 ⎧2 ⎫ ⎞ = . .⎜ ⎨ ⎬ + .⎨ ⎬⎟ = 2 ⎨ ⎬ ⎩3 ⎭ 34 ⎝ ⎩−2⎭ 34 ⎩3 ⎭ ⎠ 1 ⎛ 1 ⎧104 ⎫ ⎞ 1 ⎧104 ⎫ .⎜ . ⎨ .⎨ ⎬⎟ = ⎬ 34 ⎝ 34 ⎩−65 ⎭ ⎠ 1156 ⎩−65 ⎭ Por tanto la opción correcta es la opción c). NOTA: Aunque no se pide en el ejercicio puede comprobarse que en la segunda iteración ρ2 = (34 / 13) y (x(2), y(2) ) = (0, 1) que es la solución exacta del sistema dado. Examen final – Convocatoria de septiembre de 2002 Considera la funcional cuadrática: J(x, y, z) = 2.x2 + y2 + z2 + x.y + 2.x.z + y.z – x + z + 16. Se pide responder razonadamente a las siguientes cuestiones: a) Determina el sistema de ecuaciones simétrico cuya solución se corresponde con las coordenadas del punto en el que la funcional anterior alcanza un extremo. b) Realiza, si es posible, las dos primeras iteraciones del método de gradiente conjugado para determinar las coordenadas del punto en el que J(x,y,z) alcanza su extremo. Si es posible aplicar el método inicializa la primera iteración en el punto de coordenadas (0, 0, 0) y detalla todos los pasos de cada iteración. Si no fuese posible realizar las iteraciones pedidas justifica el motivo de ello. c) Razona si el extremo que posee la funcional es un máximo o un mínimo. Solución: 5 Programación y Métodos Numéricos Carlos Conde, Arturo Hidalgo y Alfredo López ETSI Minas de la Universidad Politécnica de Madrid a) Si se considera el sistema de ecuaciones determinado y de matriz simétrica, A.x = b, las componentes del vector solución son las coordenadas del punto singular que tenga la funcional cuadrática J(x) = (½).xT:A.x – xT.b + c, pudiendo asignársele al escalar “c” cualquier valor. En el caso que nos ocupa la funcional dada depende de tres variables (x, y , z). Por tanto el sistema al que puede vincularse será de la forma: ⎡ a11 ⎢a ⎢ 12 ⎢⎣ a13 a12 a 22 a 23 a13 ⎤ ⎧ x ⎫ ⎧ b1 ⎫ ⎪ ⎪ ⎪ ⎪ a 23 ⎥⎥ . ⎨ y ⎬ = ⎨b 2 ⎬ a 33 ⎥⎦ ⎩⎪ z ⎭⎪ ⎩⎪ b3 ⎭⎪ por lo que: 1 J(x,y,z) = .{x 2 ⎡ a11 y z} ⎢⎢a12 ⎢⎣ a13 a12 a 22 a 23 a13 ⎤ ⎧ x ⎫ ⎪ ⎪ a 23 ⎥⎥ . ⎨ y ⎬ − {x a 33 ⎥⎦ ⎩⎪ z ⎭⎪ ⎧ b1 ⎫ ⎪ ⎪ y z} ⎨ b 2 ⎬ + c = ⎪ ⎪ ⎩ b3 ⎭ 1 = .(a11 .x 2 + a 22 .y 2 + a 33 .z 2 ) + a12 .x.y + a13 .x.z + a 23 .y.z - b1.x – b2.y – b3.z + c 2 Identificando los coeficientes de la expresión anterior con los de la funcional dada en el enunciado resultará que: a11 = 4, a12 = 1, a13 = 2, a22 = 2, a23 = 1, a33 = 2, b1 = 1, b2 = 0, b3 = -1, c = 0 por lo que el sistema buscado es: ⎛ 4 1 2 ⎞ ⎧x ⎫ ⎧ 1 ⎫ ⎜ ⎟⎪ ⎪ ⎪ ⎪ ⎜ 1 2 1 ⎟.⎨y⎬ = ⎨ 0 ⎬ ⎜ 2 1 2 ⎟ ⎪ z ⎪ ⎪−1⎪ ⎝ ⎠⎩ ⎭ ⎩ ⎭ NOTA: Una forma más rápida de obtener el sistema buscado consiste en considerar que el punto singular de la funcional cuadrática dada se obtendrá como aquél en el que se anule el gradiente por lo que: ⎧ 4.x + y + 2.z ⎫ ⎧0 ⎫ ⎪ ⎪ ⎪ ⎪ ∇J(x, y, z) = 0 ⇔ ⎨ x + 2.y + z ⎬ = ⎨0 ⎬ ⎪ 2.x + y + 2.z ⎪ ⎪0 ⎪ ⎩ ⎭ ⎩ ⎭ b) Al ser la funcional anterior una funcional cuadrática el método de gradiente conjugado conduce a las coordenadas de su punto singular y por tanto sí que es aplicable. Realicemos la primera iteración. 6 Programación y Métodos Numéricos Carlos Conde, Arturo Hidalgo y Alfredo López ETSI Minas de la Universidad Politécnica de Madrid El vector residuo en el punto (0, 0, 0) coincide en este caso con la dirección de descenso a seguir y está dado por: ⎧ 1 ⎫ ⎡ 4 1 2 ⎤ ⎧0 ⎫ ⎧ 1 ⎫ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ r = ⎨ 0 ⎬ − ⎢⎢1 2 1 ⎥⎥ . ⎨0 ⎬ = ⎨ 0 ⎬ = d(0) ⎪−1⎪ ⎢ 2 1 2 ⎥ ⎪0 ⎪ ⎪−1⎪ ⎩ ⎭ ⎣ ⎦ ⎩ ⎭ ⎩ ⎭ ⎧1⎫ ⎪ ⎪ (0) T (0) Denotemos por β = {r } .r = {1 0 −1} . ⎨ 0 ⎬ = 2 y por z(0) al vector: ⎪ −1⎪ ⎩ ⎭ ⎡ 4 1 2⎤ ⎧ 1 ⎫ ⎧2 ⎫ ⎪ ⎪ ⎪ ⎪ ⎢ (0) (0) z = A.d = ⎢1 2 1 ⎥⎥ . ⎨ 0 ⎬ = ⎨0 ⎬ ⎢⎣ 2 1 2 ⎥⎦ ⎩⎪−1⎭⎪ ⎩⎪0 ⎭⎪ (0) El parámetro de descenso de esta iteración se obtendrá mediante: ρ0 = β {d } (0) T = .z (0) 2 ⎧2 ⎫ {1 0 −1} . ⎪⎨0 ⎪⎬ ⎪0 ⎪ ⎩ ⎭ = 2 =1 2 Con ello se tiene que: {x } = {x } + ρ .d (1) (0) (0) 0 ⎧ x (1) ⎫ ⎧0 ⎫ ⎧1⎫ ⎧1⎫ ⎪ (1) ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⇒ ⎨ y ⎬ = ⎨0 ⎬ + 1. ⎨ 0 ⎬ = ⎨ 0 ⎬ ⎪ (1) ⎪ ⎪ ⎪ ⎪−1⎪ ⎪−1⎪ ⎩ ⎭ ⎩ ⎭ ⎩ z ⎭ ⎩0 ⎭ Antes de abordar la segunda iteración procedamos a actualizar el vector residuo (residuo del sistema en (1, 0, -1) y la dirección de descenso que se seguirá en la segunda iteración. Para ello: ⎧1⎫ ⎧2 ⎫ ⎧−1⎫ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ (1) (0) (0) r = r − ρ0 .z = ⎨ 0 ⎬ − 1. ⎨0 ⎬ = ⎨ 0 ⎬ ⎪−1⎪ ⎪ ⎪ ⎪ ⎪ ⎩ ⎭ ⎩0 ⎭ ⎩−1⎭ γ =β=2 β = {r } (1) T .r (1) ⎧ −1⎫ ⎪ ⎪ = {−1 0 −1} . ⎨ 0 ⎬ = 2 ⎪ −1⎪ ⎩ ⎭ 7 Programación y Métodos Numéricos Carlos Conde, Arturo Hidalgo y Alfredo López ETSI Minas de la Universidad Politécnica de Madrid α0 = d (1) =r (1) + α 0 .d (0) β =1 γ ⎧ −1⎫ ⎧1⎫ ⎧0⎫ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ = ⎨ 0 ⎬ + 1. ⎨ 0 ⎬ = ⎨ 0 ⎬ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎩ −1⎭ ⎩−1⎭ ⎩ −2 ⎭ Procedamos a realizar la segunda iteración. Para ello denotemos por por z(1) al vector: ⎡ 4 1 2 ⎤ ⎧ 0 ⎫ ⎧ −4 ⎫ ⎪ ⎪ ⎪ ⎪ ⎢ (1) (1) z = A.d = ⎢1 2 1 ⎥⎥ . ⎨ 0 ⎬ = ⎨−2 ⎬ ⎢⎣ 2 1 2 ⎥⎦ ⎩⎪−2 ⎭⎪ ⎩⎪−4 ⎭⎪ El parámetro de descenso de esta iteración se obtendrá mediante: ρ1 = β {d } (1) T 2 = ⎧ −4 ⎫ {0 0 −2} . ⎪⎨−2⎪⎬ ⎪ −4 ⎪ ⎩ ⎭ .z (1) = 2 1 = 8 4 Con ello se tiene que: {x } = {x } + ρ .d (2) (1) (1) 1 ⎧ x (2) ⎫ ⎧ 1 ⎫ ⎧0⎫ ⎧ 1 ⎫ ⎪ (2) ⎪ ⎪ ⎪ 1 ⎪ ⎪ ⎪ ⎪ ⇒ ⎨y ⎬ = ⎨ 0 ⎬ + .⎨ 0 ⎬ = ⎨ 0 ⎬ ⎪ z (2) ⎪ ⎪−1⎪ 4 ⎪−2 ⎪ ⎪−3 / 2 ⎪ ⎩ ⎭ ⎩ ⎭ ⎩ ⎭ ⎩ ⎭ En este punto el vector residuo estará dado por: ⎧ −1⎫ ⎧ −4 ⎫ ⎧ 0 ⎫ ⎪ ⎪ 1 ⎪ ⎪ ⎪ ⎪ (2) (1) (1) r = r − ρ1 .z = ⎨ 0 ⎬ − . ⎨−2 ⎬ = ⎨1/ 2 ⎬ ⎪ ⎪ 4 ⎪ −4 ⎪ ⎪ 0 ⎪ ⎩ −1⎭ ⎩ ⎭ ⎩ ⎭ NOTA: Aunque no se pide en el enunciado, para realizar la tercera iteración se tiene que: γ =β=2 β = {r } (2 ) T .r (2) ⎧ = ⎨0 ⎩ α1 = 1 2 ⎧ 0 ⎫ ⎫⎪ ⎪ 1 0 ⎬ . ⎨1/ 2 ⎬ = ⎭⎪ ⎪ 4 ⎩ 0 ⎭ β 1/ 4 1 = = γ 2 8 8 Programación y Métodos Numéricos d (2) z =r (2) ρ2 = (2) + α1 .d = A.d (2) {d } (2) T (2) (1) ⎧ 0 ⎫ ⎧0⎫ ⎧ 0 ⎫ ⎪ ⎪ 1 ⎪ ⎪ ⎪ ⎪ = ⎨1/ 2 ⎬ + . ⎨ 0 ⎬ = ⎨ 1/ 2 ⎬ ⎪ ⎪ 8 ⎪ −2 ⎪ ⎪−1/ 4 ⎪ ⎩ 0 ⎭ ⎩ ⎭ ⎩ ⎭ ⎡4 1 2⎤ ⎧ 0 ⎫ ⎧ 0 ⎫ ⎪ ⎪ ⎪ ⎪ = ⎢⎢1 2 1 ⎥⎥ . ⎨ 1/ 2 ⎬ = ⎨3 / 4 ⎬ ⎪ ⎪ ⎪ ⎪ ⎣⎢ 2 1 2 ⎥⎦ ⎩−1/ 4 ⎭ ⎩ 0 ⎭ β {x } = {x } + ρ .d (3) Carlos Conde, Arturo Hidalgo y Alfredo López ETSI Minas de la Universidad Politécnica de Madrid 1/ 4 = (2) 2 3 ⎧ 0 ⎫ {0 1/ 2 −1/ 4} . ⎪⎨3 / 4⎪⎬ ⎪ 0 ⎪ ⎩ ⎭ (3) ⎧x ⎫ ⎧ 1 ⎫ ⎧ 0 ⎫ ⎧ 1 ⎫ ⎪ (3) ⎪ ⎪ ⎪ 2 ⎪ ⎪ ⎪ ⎪ ⇒ ⎨ y ⎬ = ⎨ 0 ⎬ + . ⎨ 1/ 2 ⎬ = ⎨ 1/ 3 ⎬ ⎪ z (3) ⎪ ⎪−3 / 2 ⎪ 3 ⎪−1/ 4 ⎪ ⎪−5 / 3⎪ ⎭ ⎩ ⎭ ⎩ ⎭ ⎩ ⎭ ⎩ .z (2) 2 = En este punto el vector residuo estará dado por: r (3) =r (2) − ρ2 .z (2) ⎧0 ⎫ ⎪ ⎪ = ⎨0 ⎬ ⎪0 ⎪ ⎩ ⎭ c) Puesto que en el enunciado se afirma que la funcional J(x, y, z) posee un extremo (es decir un máximo o un mínimo) descartándose que sea un punto singular de otro tipo, para saber si es un máximo o un mínimo bastará con comparar el valor de la funcional en s punto singular (1, 1/3, -5/3) hallado en la “NOTA” realizada al apartado anterior con el valor de la funcional en cualquier otro punto (que por simplicidad tomaremos como el (0, 0, 0)). De esta forma se tiene que: J(1, 1/3, -5/3) = 14.6666 < 16 = J(0, 0, 0) podemos afirmar que el extremo es un mínimo. NOTAS: 1ª) Otra forma de llegar a la conclusión anterior consiste en determinar si la matriz [A] es definida positiva o definida negativa. Para ello puede observarse que la matriz [A] tiene por polinomio característico: p( λ ) = det(A- λ .I) = −λ 3 + 8.λ 2 − 14.λ + 6 busquemos una raíz por el método de Newton-Raphson. Puesto que p(0) = 6 > 0 y p(1) = -1 habrá una raíz en [0, 1] lo que nos indica que λ 0 = 0.5 puede ser un buen valor semilla con el que arrancar el esquema: 9 Programación y Métodos Numéricos Carlos Conde, Arturo Hidalgo y Alfredo López ETSI Minas de la Universidad Politécnica de Madrid −λ 3 + 8.λ 2 − 14.λ + 6 −3.λ i2 + 16.λ i − 14 De esta forma se obtiene que: λ 1 = 0.629629... , λ 2 = 0.650556... , λ 3 = 0.651105... , λ 4 = 0.651105.... Por ello tomaremos como uno de los valores propios el valor 0.651105. Para determinar los otros dos expresaremos p( λ ) en la forma: λ i +1 = λ i − −λ 3 + 8.λ 2 − 14.λ + 6 = ( λ - 0.651105).(a. λ 2 + b. λ + c) de donde a = 1, b = -7.348894... y c = 9.215092... Resolviendo la ecuación de segundo grado: λ 2 – 7.348894. λ + 9.215092 = 0 se obtienen las otras dos raíces del polinomio característico que son 1.604... y 5.744... Al ser todas ellas positivas puede afirmarse que la matriz [A] es definida positiva y por tanto J(x, y, z) tiene un mínimo. 2ª. Una tercera forma de responder este apartado consiste en analizar en el punto singular de la funcional dada su matriz Hessiana (formada por las derivadas parciales segundas). Como dicha matriz es: ⎡ ∂2 J ⎤ ∂2 J ∂2 J (x, y, z) (x, y, z) (x, y, z) ⎥ ⎢ 2 ∂x∂y ∂x∂z ⎢ ∂x ⎥ ⎢ ∂2 J ⎥ ∂2 J ∂2 J H(x, y, z) = ⎢ (x, y, z) (x, y, z) (x, y, z) ⎥ = 2 ∂y∂z ∂y ⎢ ∂y∂x ⎥ 2 2 ⎢ ∂2 J ⎥ ∂ J ∂ J ⎢ ⎥ (x, y, z) (x, y, z) (x, y, z) ∂z∂y ∂z 2 ⎣⎢ ∂z∂x ⎦⎥ ⎡ 4 1 2⎤ = ⎢⎢ 1 2 1 ⎥⎥ ⎢⎣ 2 1 2 ⎥⎦ independiente del punto en que se evalúe, se puede analizar su carácter definido positivo o negativo teniendo en cuenta que sus menores principales son: H1 = H11 = 4 > 0 H2 = 4 1 = 8 −1 = 7 > 0 1 2 4 1 2 H3= 1 2 1 = 6 > 0 2 1 2 Al ser la sucesión de signos de los menores principales + , +, + puede concluirse que J(x,y,z) alcanza en el punto singular un mínimo. 10 Programación y Métodos Numéricos Carlos Conde, Arturo Hidalgo y Alfredo López ETSI Minas de la Universidad Politécnica de Madrid CURSO 2002-03 Examen final – Convocatoria de diciembre de 2002 Considera el sistema lineal de ecuaciones dado por: ⎧4·x + y +2·z = 1 ⎪ ⎨ x +2·y + z = 3 ⎪ ⎩2·x + y +2·z = 3 Denotando por [A] a la matriz del sistema y por {b} al vector de segundos miembros: ⎡ 4 1 2⎤ ⎧ 1⎫ ⎢ ⎥ , [A] = ⎢ 1 2 1⎥ {b} = ⎪⎨3 ⎪⎬ ⎪3 ⎪ ⎢⎣ 2 1 2⎥⎦ ⎩ ⎭ se pide: a) Determinar el polinomio característico p(λ) de la matriz [A]. b) Sabiendo que la raíz de menor módulo del polinomio característico de [A], p(λ), pertenece al intervalo [0, 1], determina una contracción g(λ) definida en [0, 1] tal que la ecuación p(λ) = 0 sea equivalente a la ecuación λ = g(λ). Analiza la función g(x) para demostrar que efectivamente es una contracción en [0, 1] y utilízala para determinar la raíz de menor módulo de p(λ) partiendo de λ 0 = 0.5. En el proceso de búsqueda de la raíz debes realizar a lo sumo 5 iteraciones pudiendo detenerse el proceso cuando la distancia entre dos aproximaciones de la raíz buscada no supere el valor ε = 0.01. c) Con la misma función g(λ) utilizada en el apartado anterior, determina el número mínimo de iteraciones que asegurarían que la distancia a la raíz buscada y la aproximación que se obtuviera en la última iteración es menor o igual que la milésima parte de la distancia entre la raíz y el valor λ 0 con el que se inicialice el método. d) Sabiendo que la raíz de mayor módulo del polinomio característico de [A], p(λ), pertenece al intervalo [5, 6], determina dicha raíz mediante el método de la secante partiendo de los dos valores iniciales λ 0 = 5 y λ 1 = 6. En el proceso de búsqueda de la raíz debes realizar a lo sumo 5 iteraciones pudiendo detener el proceso 11 Programación y Métodos Numéricos Carlos Conde, Arturo Hidalgo y Alfredo López ETSI Minas de la Universidad Politécnica de Madrid cuando la distancia entre dos aproximaciones buscada no supere el valor ε = 0.01. de la raíz e) Utilizando los resultados de apartados anteriores, determina el valor del condicionamiento de la matriz [A] en el sentido de la norma ||·||2 . f) Resuelve mediante el método de gradiente conjugado el sistema lineal planteado partiendo del vector semilla {x(0) = 0, y(0) = 1, z(0) = 1} Solución: a) El polinomio característico de la matriz del sistema se obtendrá mediante: p(λ) = (4 − λ) 1 2 1 (2 − λ) 1 2 1 (2 − λ) = (4 − λ)·(2 − λ)2 + 4 − 4·(2 − λ) − (2 − λ) − (4 − λ ) = = −λ 3 + 8·λ 2 − 14·λ + 6 b) Una de las opciones para transformar la ecuación p(λ) = 0 en otra ecuación de la forma λ = g(λ) consiste en despejar λ del término de primer grado de la ecuación p(λ) = 0. Más concretamente: 1 −λ3 + 8·λ 2 − 14·λ + 6 = 0 λ = (−λ 3 + 8·λ 2 + 6) = g(λ) 14 Analicemos si esta elección de g(λ) asegura la convergencia del método de aproximaciones sucesivas en el intervalo [0, 1]. Para ello se tiene que: 1 (−λ 3 + 8·λ 2 + 6) → 14 1 → g '(λ) = (−3·λ 2 + 16·λ) → 14 1 → g"(λ) = (−6·λ + 16) 14 g(λ) = Al ser g(λ) y g’(λ) dos funciones polinómicas es evidente que ambas serán continuas en toda la recta real lo que nos permite afirmar que g(λ) ∈ C1([0,1]). Por otra parte g”(λ) es un polinomio de primer grado (una recta) que se anula en el punto λ = 16/6 = 2.6666.. > 1. Es decir que en el intervalo [0, 1] la función g”(λ) no 12 Programación y Métodos Numéricos Carlos Conde, Arturo Hidalgo y Alfredo López ETSI Minas de la Universidad Politécnica de Madrid cambia de signo. Y como g”(0) = 8/7 > 0 se verifica que g”(x) > 0 ∀λ ∈ [ 0,1] . Esto implica que g’(λ) es un función creciente en [0, 1]. Y como g’(0) = 0 y g’(1) = 13/14 puede concluirse que 0 < g’(λ) < 13/14 < 1 ∀λ ∈ [ 0,1] . El razonamiento anterior nos muestra también que g’(λ) es una función no negativa en el intervalo [0, 1]. Ello implica que g(λ) es una función no decreciente en dicho intervalo por lo que sus valores estarán comprendidos entre los valores que tome en los extremos de dicho intervalo. Puesto que estos son: g(0) = 3/7 y g(1) = 13/14 se tiene que: ⎡ 3 13 ⎤ g(λ) ∈ ⎢ , ⎥ ⊂ [ 0,1] ∀λ ∈ [ 0,1] ⎣ 7 14 ⎦ En resumen, la aplicación g(λ) es una contracción en el intervalo [0,1]. 1 (−λ 3 + 8·λ 2 + 6) , partiendo del valor λ0 = 0.5, el método 14 de aproximaciones sucesivas conduce a: Con esta contracción g(λ) = λ0 = 0.5 λ1 = g(λ0) = 0.5625... λ2 = g(λ1) = 0.5966... λ3 = g(λ2) = 0.6168... λ4 = g(λ3) = 0.6292... λ5 = g(λ4) = 0.6370... |λ1 – λ0| = 0.0625…. |λ2 – λ1| = 0.0341…. |λ3 – λ2| = 0.0201…. |λ4 – λ3| = 0.0123…. |λ5 – λ4| = 0.0077…. En esta quinta iteración ya se verifica la condición de convergencia dada en el enunciado: la distancia entre las dos últimas aproximaciones de la solución es inferior a 0.01. Por ello se tomará como valor aproximado del valor propio de menor módulo: λ min = 0.63701 . c) La constante de Lipschitz de la contracción utilizada en el apartado anterior es: 13 14 Por otra parte, denotando por λ* a la raíz existente en [0, 1], se tiene que: K = max g '(λ) = g '(1) = λ∈[ 0,1] λ i − λ * = g(λ i −1 ) − g(λ*) ≤ K· λ i −1 − λ * = K· g(λ i −2 ) − g(λ*) ≤ K 2 · λ i − 2 − λ * = ... = = K i −1 · g(λ 0 ) − g(λ*) ≤ K i · λ 0 − λ * 13 Programación y Métodos Numéricos Carlos Conde, Arturo Hidalgo y Alfredo López ETSI Minas de la Universidad Politécnica de Madrid por lo que para garantizar que |λi – λ*| < ε·| λ0 - λ*| basta con asegurar que: Ki < ε. En este caso esta desigualdad nos conduce a que: i −3·ln(10) ⎛ 13 ⎞ ⎛ 13 ⎞ K ≤ ε ⇒ ⎜ ⎟ ≤ 10 −3 ⇒ i·ln ⎜ ⎟ ≤ −3·ln(10) ⇒ i ≥ = 93.21... ⎛ 13 ⎞ ⎝ 14 ⎠ ⎝ 14 ⎠ ln ⎜ ⎟ ⎝ 14 ⎠ i Es decir que la precisión pedida se garantizaría realizando un mínimo de 94 iteraciones. d) El método de la secante en una iteración genérica, aplicado a la resolución de la ecuación f(λ) = 0, puede escribirse en la forma: λ i +1 = λ i − f(λ i ) λ ·f(λ i ) − λ i ·f(λ i −1 ) = i −1 f(λ i ) − f(λ i −1 ) λ i − λ i −1 λ i − λ i −1 (i = 1, 2, ....) Siendo f(λ) = −λ 3 + 8·λ 2 − 14·λ + 6 y tomando como λ0 = 5 y λ1 = 6, se tiene que: λ0 = 5, λ1 = 6 λ2 = 5.64705.... λ 3 = 5.73445.... λ 4 = 5.74528.... λ 5 = 5.74482.... |λ2 – λ 1| = 0.35294.... |λ 3 – λ2| = 0.08739.... |λ 4 – λ 3| = 0.01082.... |λ 5 – λ 4| = 0.00046.... En esta quinta iteración ya se verifica la condición de convergencia dada en el enunciado: la distancia entre las dos últimas aproximaciones de la solución es inferior a 0.01. Por ello se tomará como valor aproximado del valor propio de mayor módulo: λ max = 5.74482 . e) El condicionamiento en el sentido de la norma ||·||2 de una matriz simétrica puede evaluarse mediante: λ cond2([A]) = max λ min por lo que en este caso: 5.74482 = 9.018... 0.6370 NOTA: El condicionamiento exacto de la matriz es 8.82.... La diferencia entre el valor exacto y el valor aproximado hallado es debida al redondeo realizado en las aproximaciones de los valores propios de mayor y menor módulo que resultan ser: λmin = 0.6370191103... y λmax = 5.774823982..... cond2([A]) ≈ 14 Programación y Métodos Numéricos Carlos Conde, Arturo Hidalgo y Alfredo López ETSI Minas de la Universidad Politécnica de Madrid f) Resolvamos el sistema de ecuaciones lineales mediante el método de gradiente conjugado. Inicialización: {x(0)}T = {0, 1, 1} ⎧1 ⎫ ⎡ 4 1 2 ⎤ ⎧0 ⎫ ⎧−2 ⎫ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ {r } = {b} – [A]·{x } = ⎨3⎬ − ⎢⎢ 1 2 1 ⎥⎥·⎨1 ⎬ = ⎨ 0 ⎬ ⎪3⎪ ⎢ 2 1 2 ⎥ ⎪1 ⎪ ⎪ 0 ⎪ ⎩ ⎭ ⎣ ⎦⎩ ⎭ ⎩ ⎭ (0) (0) ⎧−2 ⎫ ⎪ ⎪ {d } = {r } = ⎨ 0 ⎬ , ⎪0⎪ ⎩ ⎭ (0) (0) β = {r(0)}T· {r(0)} = 4, tol = ||{r(0)}||2 = 2 1ª Iteración: ⎡ 4 1 2 ⎤ ⎧ −2 ⎫ ⎧ −8 ⎫ ⎪ ⎪ ⎪ ⎪ {z } = [A]·{d } = ⎢⎢ 1 2 1 ⎥⎥·⎨ 0 ⎬ = ⎨−2 ⎬ ⎪ ⎪ ⎪ ⎪ ⎣⎢ 2 1 2 ⎦⎥ ⎩ 0 ⎭ ⎩−4 ⎭ (0) (0) ρ = β/ ({d(0)}T· {z(0)}) = 4 / 16 = ¼ ⎧0 ⎫ ⎧−2 ⎫ ⎧−1⎫ ⎪ ⎪ 1⎪ ⎪ 1⎪ ⎪ {x } = {x } + ρ·{d } = ⎨1 ⎬ + ·⎨ 0 ⎬ = ·⎨ 2 ⎬ ⎪1 ⎪ 4 ⎪ 0 ⎪ 2 ⎪ 2 ⎪ ⎩ ⎭ ⎩ ⎭ ⎩ ⎭ (1) (0) (0) ⎧ −2 ⎫ ⎧ −8 ⎫ ⎧0 ⎫ ⎪ ⎪ 1⎪ ⎪ 1⎪ ⎪ {r } = {r } - ρ·{z } = ⎨ 0 ⎬ − ·⎨−2 ⎬ = ·⎨1 ⎬ , ⎪ 0 ⎪ 4 ⎪−4 ⎪ 2 ⎪2 ⎪ ⎩ ⎭ ⎩ ⎭ ⎩ ⎭ (1) (0) γ = β = 4, (0) β = {r(1)}T· {r(1)} = 5/4, tol = ||{r(1)}||2 = α = β / γ = 5/16 ⎧0 ⎫ ⎧−2 ⎫ ⎧−10 ⎫ ⎧ −5⎫ 1⎪ ⎪ 5 ⎪ ⎪ 1 ⎪ ⎪ 1⎪ ⎪ {d } = {r } + α·{d } = ·⎨1 ⎬ + ·⎨ 0 ⎬ = ·⎨ 8 ⎬ = ·⎨ 4 ⎬ 2 ⎪ ⎪ 16 ⎪ ⎪ 16 ⎪ ⎪ 8⎪8⎪ ⎩2 ⎭ ⎩0⎭ ⎩ 16 ⎭ ⎩ ⎭ (1) (1) (0) 2ª Iteración: 15 5 2 Programación y Métodos Numéricos Carlos Conde, Arturo Hidalgo y Alfredo López ETSI Minas de la Universidad Politécnica de Madrid ⎡ 4 1 2 ⎤ ⎧ −5⎫ ⎧0⎫ 1⎢ ⎪ ⎪ 1⎪ ⎪ ⎥ {z } = [A]·{d } = ·⎢1 2 1 ⎥·⎨ 4 ⎬ = ·⎨11 ⎬ 8 8⎪ ⎪ ⎢⎣ 2 1 2 ⎥⎦ ⎩⎪ 8 ⎭⎪ ⎩10 ⎭ (1) (1) ρ = β/ ({d } · {z }) = (1) T (1) 5 4 = 80 20 = 124 31 1 ·(124) 64 ⎧−1⎫ ⎧−5⎫ ⎧−28⎫ 1 ⎪ ⎪ 20 1 ⎪ ⎪ 1 ⎪ ⎪ (2) (1) (1) {x } = {x } + ρ·{d } = ·⎨ 2 ⎬ + · ·⎨ 4 ⎬ = ·⎨ 41 ⎬ 2 ⎪ ⎪ 31 8 ⎪ ⎪ 31 ⎪ ⎪ ⎩2⎭ ⎩8⎭ ⎩ 51 ⎭ ⎧0 ⎫ ⎧0 ⎫ ⎧ 0 ⎫ 1 ⎪ ⎪ 20 1 ⎪ ⎪ 1 ⎪ ⎪ {r } = {r } - ρ·{z } = ·⎨1 ⎬ − · ·⎨11⎬ = ·⎨−12 ⎬ , 2 ⎪ ⎪ 31 8 ⎪ ⎪ 31 ⎪ ⎪ ⎩2 ⎭ ⎩5⎭ ⎩ 6 ⎭ (2) (1) (1) γ = β = 5/4 , β = {r(2)}T· {r(2)} = 180 / 312, tol = ||{r(2)}||2 = α = β / γ = 144 / 312 ⎧ 0 ⎫ ⎧−5⎫ ⎧ −90 ⎫ 1 ⎪ ⎪ 144 1 ⎪ ⎪ 1 ⎪ ⎪ {d } = {r } + α·{d } = ·⎨ −12 ⎬ + 2 · ·⎨ 4 ⎬ = 2 ·⎨−300 ⎬ 31 ⎪ ⎪ 31 8 ⎪ 8 ⎪ 31 ⎪ 330 ⎪ ⎩ 6 ⎭ ⎩ ⎭ ⎩ ⎭ (2) (2) (1) 3ª Iteración: ⎡ 4 1 2 ⎤ ⎧ −90 ⎫ ⎧ 0 ⎫ 1 ⎢ ⎪ ⎪ 1 ⎪ ⎪ ⎥ {z } = [A]·{d } = 2 ·⎢1 2 1 ⎥·⎨−300 ⎬ = 2 ·⎨−360 ⎬ 31 31 ⎪ ⎪ ⎢⎣ 2 1 2 ⎥⎦ ⎩⎪ 330 ⎭⎪ ⎩ 180 ⎭ (2) (2) 180 ρ = β/ ({d } · {z }) = (2) T (2) 312 = 180·312 31 = 167400 30 1 ·(300·360 + 330·180) 314 ⎧ −28⎫ ⎧ −90 ⎫ ⎧−1⎫ 1 ⎪ ⎪ 31 1 ⎪ ⎪ ⎪ ⎪ (3) (2) (2) {x } = {x } + ρ·{d } = ·⎨ 41 ⎬ + · 2 ·⎨−300 ⎬ = ⎨ 1 ⎬ 31 ⎪ ⎪ 30 31 ⎪ 330 ⎪ ⎪ 2 ⎪ ⎩ 51 ⎭ ⎩ ⎭ ⎩ ⎭ 16 180 31 Programación y Métodos Numéricos Carlos Conde, Arturo Hidalgo y Alfredo López ETSI Minas de la Universidad Politécnica de Madrid ⎧ 0 ⎫ ⎧ 0 ⎫ ⎧0 ⎫ 1 ⎪ ⎪ 31 1 ⎪ ⎪ ⎪ ⎪ {r } = {r } - ρ·{z } = ·⎨−12 ⎬ − · 2 ·⎨−360 ⎬ = ⎨0 ⎬ , 31 ⎪ ⎪ 30 31 ⎪ 180 ⎪ ⎪0 ⎪ ⎩ 6 ⎭ ⎩ ⎭ ⎩ ⎭ (3) (2) (2) tol = ||{r(3)}||2 = 0 Por tanto la solución del sistema es x = -1, y = 1, z = 2. Examen final – Convocatoria de junio de 2003 Dada la funcional cuadrática: J ( x1,x 2 ) = x12 + x1x 2 + con c ∈ a) b) 1 2 x 2 - x1 - 3x 2 + c 2 , se pide: Demostrar que admite un único extremo (mínimo). Suponiendo que el punto {5, -2} sea el mínimo de J(x1, x2) cuya existencia se ha demostrado en el apartado a) y partiendo del punto {1,1}, determinar qué método de descenso de los propuestos a continuación proporciona una primera dirección de descenso tal que el mínimo de J(x1, x2) según esa dirección esté más próximo al mínimo absoluto de J(x1, x2) en el sentido de las normas . 1 , . 2 y . ∞ : b1) b2) b3) Gauss-Seidel Gradiente con paso óptimo Gradiente conjugado Solución: La funcional cuadrática del enunciado se puede escribir como: J ( x1 , x2 ) = ( x1 a) ⎛ 2 1⎞ ⎛ x1 ⎞ ⎛ 1 ⎞ x2 ) ⎜ ⎟ ⎜ ⎟ − ⎜ ⎟ ( x1 ⎝ 1 1⎠ ⎝ x2 ⎠ ⎝ 3 ⎠ x2 ) + c La condición necesaria y suficiente para que admita un único extremo y que este extremo sea mínimo es que la matriz: ⎛ 2 1⎞ A=⎜ ⎟ ⎝ 1 1⎠ sea definida positiva, para lo cual sus valores propios han de ser reales y positivos, es decir: 17 Programación y Métodos Numéricos Carlos Conde, Arturo Hidalgo y Alfredo López ETSI Minas de la Universidad Politécnica de Madrid 1 ⎞ ⎧ λ1 = 2.618033989 ⎛2−λ det ( A − λ I ) = det ⎜ ⎟ = ( 2 − λ )(1 − λ ) − 1 = 0 ⇒ ⎨λ = 0.3819660112 1− λ ⎠ ⎝ 1 ⎩ 2 y, por tanto, efectivamente, la matriz A es definida positiva. b) Los métodos de descenso consisten en, a partir de un vector dado, { { } } x( ) = x1( ) , x2( ) , generar una sucesión de vectores x( ) 0 0 0 i ∞ i =0 mediante: r ( ) = b - Ax( ) i i r ( ) ) ⋅ d( ) ( ρ= ( d( ) ) ⋅ A ⋅ d( ) T i T i x( i +1) i i = x( ) + ρ d( ) i i Siendo la elección del vector d(i) propia de cada método. En cualquier caso: ⎛ 1 ⎞ ⎛ 2 1⎞ ⎛ 1⎞ ⎛ −2 ⎞ 0 0 r ( ) = b − Ax( ) = ⎜ ⎟ − ⎜ ⎟⎜ ⎟ = ⎜ ⎟ ⎝ 3 ⎠ ⎝ 1 1⎠ ⎝ 1⎠ ⎝ 1 ⎠ b1) Método de Gauss-Seidel. La primera dirección de descenso es d(0) = {1,0}, por tanto: (r ) ⋅ d ( d( ) ) ⋅ A ⋅ d( ) (i ) ρ= i T T (i ) i ⎛1⎞ ⎟ 0⎠ −2 ⎝ = = = −1 ⎛ 2 1⎞ ⎛ 1 ⎞ 2 (1 0 ) ⎜ ⎟⎜ ⎟ ⎝ 1 1⎠ ⎝ 0 ⎠ ( −2 1) ⎜ luego: ⎛1⎞ ⎛1⎞ ⎛ 0⎞ 1 0 0 x( ) = x( ) + ρ d ( ) = ⎜ ⎟ − 1 ⋅ ⎜ ⎟ = ⎜ ⎟ ⎝1⎠ ⎝0⎠ ⎝1⎠ Si llamamos h al vector x(1) – xs, es decir al vector que une el mínimo obtenido según la primera dirección de descenso y el mínimo absoluto: 18 Programación y Métodos Numéricos Carlos Conde, Arturo Hidalgo y Alfredo López ETSI Minas de la Universidad Politécnica de Madrid h = x( ) − x s = (0 − 5, 1 + 2) = ( −5, 3) 1 h 1 = −5 + 3 = 8.0 h2= h b2) −5 + 3 = 5.830951895 2 2 = max ( −5 , 3 ) = 5.0 ∞ Método de gradiente con paso óptimo. descenso es d(0) = r(0) = {-2,1}, por tanto: (r ) ⋅ r (r( ) ) ⋅ A ⋅ r( ) (i ) ρ= i T (i ) T i La primera dirección de ⎛ −2 ⎞ ⎟ 1⎠ 5 ⎝ = = =1 ⎛ 2 1⎞ ⎛ −2 ⎞ 5 ( −2 1) ⎜ ⎟⎜ ⎟ ⎝ 1 1⎠ ⎝ 1 ⎠ ( −2 1) ⎜ ⎛ 1⎞ ⎛ −2 ⎞ ⎛ −1⎞ 1 0 0 x( ) = x( ) + ρ d ( ) = ⎜ ⎟ + 1 ⋅ ⎜ ⎟ = ⎜ ⎟ ⎝ 1⎠ ⎝1⎠ ⎝2⎠ (1) h = x − x s = (−1 − 5, 2 + 2) = ( −6, 4 ) h 1 = −6 + 4 = 10.0 h2= h b3) ∞ −6 + 4 = 7.211102551 2 2 = max ( −6 , 4 ) = 6.0 Método de gradiente conjugado. La primera dirección de descenso es la misma que la usada en el método de gradiente con paso óptimo, por tanto, el apartado b3) es idéntico al apartado b2) En consecuencia, en el sentido de cualquiera de las tres normas utilizadas, el mínimo obtenido según la primera dirección de descenso del método de Gauss-Seidel es el que está más próximo al mínimo absoluto. NOTA: El mínimo de la funcional dada en el apartado a) se alcanza en el punto {-2, 5} (coordenadas que pueden obtenerse fácilmente resolviendo el sistema de ecuaciones asociado a la funcional). 19 Programación y Métodos Numéricos Carlos Conde, Arturo Hidalgo y Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Examen final – Convocatoria de septiembre de 2003 Dado el sistema de ecuaciones lineales: ⎧ x + 2y = 3 ⎨ ⎩2 x + 5 y = 7 se pide: a) b) c) Determinar si es resoluble por el método de gradiente conjugado. Obtener la funcional cuadrática asociada a este sistema. Realizar dos iteraciones del método de gradiente conjugado a (0) T partir del vector semilla x = (2, 2) . Solución: a) El sistema dado puede escribirse como Ax = b, con: ⎛1 2⎞ A=⎜ ⎟ ⎝2 5⎠ ⎛ 3⎞ b=⎜ ⎟ ⎝7⎠ ⎛ x⎞ x=⎜ ⎟ ⎝ y⎠ Para que el método de gradiente conjugado pueda aplicarse es necesario que la matriz A sea definida positiva, lo cual puede comprobarse viendo si todos sus valores propios son reales y estrictamente positivos: 2 ⎞ ⎧ λ1 = 5.82… ⎛1 − λ det ( Α − λ I ) = det ⎜ ⎟ = (1 − λ )( 5 − λ ) − 4 = 0 ⇒ ⎨λ = 0.17 … 5−λ⎠ ⎝ 2 ⎩ 2 luego la matriz A es definida positiva. b) La funcional cuadrática asociada es: J ( x, y ) = 1 T 1 x Ax - bT x + c = ( x 2 2 = c) ⎡1 2⎤ ⎛ x ⎞ ⎛ x⎞ y) ⎢ ⎜ ⎟ − (3 7) ⎜ ⎟ + c = ⎥ ⎣2 5⎦ ⎝ y ⎠ ⎝ y⎠ 1 2 5 x + 2 xy + y 2 − 3 x + 7 y + c 2 2 La primera dirección de descenso es: ⎛ 3 ⎞ ⎡ 1 2 ⎤ ⎛ 2 ⎞ ⎛ −3 ⎞ 0 0 0 d( ) = r ( ) = b − Ax( ) = ⎜ ⎟ − ⎢ ⎥⎜ ⎟ = ⎜ ⎟ ⎝ 7 ⎠ ⎣ 2 5 ⎦ ⎝ 2 ⎠ ⎝ −7 ⎠ y el parámetro de descenso: 20 Programación y Métodos Numéricos ρ= ( ) ( d( ) ) A d( ) d( 0 0) T T d( 0) 0 Carlos Conde, Arturo Hidalgo y Alfredo López ETSI Minas de la Universidad Politécnica de Madrid ⎛ 3⎞ 7) ⎜ ⎟ 58 ⎝7⎠ = = = 0.1715976331 ⎛ 1 2 ⎞⎛ 3 ⎞ 338 (3 7) ⎜ ⎟⎜ ⎟ ⎝ 2 5 ⎠⎝ 7 ⎠ (3 ⎛ 2⎞ ⎛ −3 ⎞ ⎛ 1.485207101 ⎞ 1 0 0 x( ) = x( ) + ρ d( ) = ⎜ ⎟ + 0.1715976331⎜ ⎟ = ⎜ ⎟ ⎝ 2⎠ ⎝ −7 ⎠ ⎝ 0.798816568 ⎠ ⎛ −3 ⎞ ⎛ 1 2 ⎞ ⎛ −3 ⎞ ⎛ -0.082840237 ⎞ 1 0 0 r ( ) = r ( ) − ρ Ad( ) = ⎜ ⎟ − 0.1715976331⎜ ⎟⎜ ⎟ = ⎜ ⎟ ⎝ −7 ⎠ ⎝ 2 5 ⎠ ⎝ −7 ⎠ ⎝ 0.035502957 ⎠ ( ) (r( ) ) r( ) 1 α= 0 T r( ) T ( 0) ( -0.082840237 1 r = ⎛ -0.082840237 ⎞ 0.035502957 ) ⎜ ⎟ ⎝ 0.035502957 ⎠ = 0.0001400511176 ⎛ 3⎞ (3 7) ⎜ ⎟ ⎝7⎠ ⎛ -0.082840237 ⎞ ⎛ -3 ⎞ ⎛ -0.08326039035 ⎞ 1 1 0 d( ) = r ( ) + α d( ) = ⎜ ⎟ + 0.0001400511176 ⎜ ⎟ = ⎜ ⎟ ⎝ 0.035502957 ⎠ ⎝ -7 ⎠ ⎝ 0.03452259918 ⎠ ⎛ -0.082840237 ⎞ -0.082840237 0.035502957 (1) T (1) ( ) ⎜ ⎟ r r 0.035502957 ⎠ ⎝ = = 5.827586205 ρ= T 1 1 d( ) Ad( ) ( -0.08326039035 0.03452259918 ) ⎛ 1 2 ⎞ ⎛ -0.08326039035 ⎞ ⎜ ⎟⎜ ⎟ ⎝ 2 5 ⎠ ⎝ 0.03452259918 ⎠ ( ) ( ) ⎛ 1.485207101 ⎞ ⎛ -0.08326039035 ⎞ ⎛ 0.9999999988 ⎞ 2 1 1 x( ) = x( ) + ρ d( ) = ⎜ ⎟ + 5.827586205 ⎜ ⎟=⎜ ⎟ ⎝ 0.798816568 ⎠ ⎝ 0.03452259918 ⎠ ⎝ 0.9999999907 ⎠ Nota 1: puede comprobarse fácilmente que la solución del sistema propuesto T es (1,1) y esta debería haber sido la solución obtenida por el método de gradiente conjugado al ser éste un método exacto en n iteraciones. La diferencia se debe exclusivamente a los errores de redondeo. Dado el sistema de ecuaciones lineales: 2x + z = 3 ay = a x + z = 2 en donde a es un número real distinto de cero, se pide: 21 Programación y Métodos Numéricos Carlos Conde, Arturo Hidalgo y Alfredo López ETSI Minas de la Universidad Politécnica de Madrid a) Determinar el valor de a para que sea resoluble utilizando el método de gradiente con paso óptimo. b) Calcular el condicionamiento del sistema según la norma-2. c) ¿Qué valores de a dan lugar a un sistema mejor condicionado? Solución: a) Para que se pueda utilizar el método del gradiente con paso óptimo es necesario que la matriz del sistema sea definida positiva, lo que se puede comprobar viendo si todos sus valores propios son reales y positivos. ⎛2 0 1⎞ ⎜ ⎟ A = ⎜0 a 0⎟ ⎜1 0 1⎟ ⎝ ⎠ 2−λ det( A − λ I ) = 0 1 0 1 λ1 = a ⎧ ⎪ a−λ 0 = ( a − λ ) ⎡⎣( 2 − λ )(1 − λ ) − 1⎤⎦ = 0 ⇒ ⎨λ2 = 2.618033989 ⎪ λ = 0.381966011 0 1− λ ⎩ 3 Luego bastará con que a sea mayor que 0 para que la matriz A sea definida positiva. b) cond 2 ( A ) = λM λm siendo λM el valor propio de mayor módulo de A y λm el valor propio de menor módulo de A. Consideremos los diferentes valores de a: λM = a ⎧ a ⇒ cond 2 = a > 2.618033989 ⇒ ⎨ 0.381966011 ⎩λm = 0.381966011 ⎧λ = 2.618033989 0.381966011 ≤ a ≤ 2.618033989 ⇒ ⎨ M ⇒ ⎩ λm = 0.381966011 2.618033989 ⇒ cond 2 = = 6.854101971 0.381966011 ⎧λ = 2.618033989 2.618033989 0 < a < 0.381966011 ⇒ ⎨ M ⇒ cond 2 = λm = a a ⎩ c) Evidentemente, el menor valor que se puede obtener para el condicionamiento en norma-2 es 6.854101971, correspondiente a valores de a comprendidos entre 0.381966011 y 2.618033989. 22 Programación y Métodos Numéricos Carlos Conde, Arturo Hidalgo y Alfredo López ETSI Minas de la Universidad Politécnica de Madrid CURSO 2003-04 Examen final - Convocatoria de diciembre de 2003 Dado el sistema de ecuaciones lineales homogéneo: ax + y = 0 x + ay = 0 donde a es un número real no nulo, se pide: a) Determinar para qué valores de “a” se puede resolver el sistema dada mediante un método de descenso. b) Si se utiliza un método de Gauss - Seidel a partir del vector inicial (α, β), determinar cual ha de ser este vector para que el mínimo según la tercera dirección de descenso de la funcional cuadrática asociada sea la solución del sistema. Solución: a) Para que se pueda aplicar un método de descenso la funcional cuadrática asociada al sistema debe ser cudrática y estrictamente convexa. Ello equivale a ⎡ a 1⎤ ⎥ sea definida positiva. La simetría de la que la matriz del sistema, A = ⎢ ⎢⎣1 a ⎥⎦ matriz es evidente. Por ello para que sea definida positiva lo único que hace falta verificar es que sus dos valores propios son estrictamente positivos. Puesto que el polinomio característico de esta matriz es: a −λ 1 = λ 2 − 2aλ + (a 2 −1) p(λ ) = det ( A −λI ) = 1 a −λ se verifica que los valores propios (raíces del polinomio característico) son: 2a ± 4a 2 − 4(a 2 −1) = a ± a 2 − (a 2 −1) = a ± 1 2 Para que λ1 = (a+1) y λ 2 = (a-1) sean ambos estrictamente positivos se debe λ= tomar el parámetro a como cualquier valor tal que a > 1. b) El método de Gauss-Seidel aplicado a este sistema consiste en, partiendo de un valor (x0, y0) dado, en lo siguiente: 23 Programación y Métodos Numéricos • • Carlos Conde, Arturo Hidalgo y Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Cuando se realiza una iteración “i” con i impar seguir la dirección dada por el vecor (1, 0) obteniendo el vector (xi , yi) mediante: yi = yi-1 xi = -yi-1 / a , Cuando se realiza una iteración “i” con i par seguir la dirección dada por el vecor (0, 1) obteniendo el vector (xi , yi) mediante: xi = xi-1 , yi = -xi-1/a Por tanto, partiendo de (α, β) el método de Gauss-Seidel tras seguir la primera dirección de descenso (dada por el vector (1, 0)) nos conduce al punto (x1, y1) dado por : x1 = −β , y1 = β a Tras seguir la segunda dirección de descenso (dada por el vector (0, 1))se obtendrá el punto (x2, y2) dado por: −β x 2 = −β , y 2 = − a = β a 2 a a Finalmente, tras seguir la tercera dirección de descenso (dada nuevamente por el vector (1, 0)) se tiene el punto (x3, y3) dado por: β x3 = − a2 a = −β a3 , y3 = β a2 Puesto que la solución exacta del sistema dado es (0, 0) y en dicho punto está el mínimo de la funcional asociada al sistema, la condición para que (x3 , y3) sea la solución del sistema es que β = 0 . En resumen, si se parte de cualquier vector con su segunda componente nula ( α , 0 ) puede asegurarse que en la tercera1 iteración se obtendrá la solución exacta. 1 Obsérvese que, de hecho, se puede asegurar que en la primera iteración ya se obtiene la solución exacta. 24