to get the file - OCW UPM - Universidad Politécnica de Madrid

Anuncio
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
Descargar