Sei sulla pagina 1di 4

EJERCICIO RESUELTO SOBRE MÉTODOS ITERATIVOS DE RESOLUCIÓN DE SISTEMAS DE ECUACIONES

LINEALES

Dado el sistema de ecuaciones lineales:

𝑥 + 2𝑦 = 3
{
2𝑥 + 5𝑦 = 7

Se pide:

a) Determinar si es resoluble por el método de gradiente conjugado.


b) Obtener la funcional cuadrática asociada a este sistema.
c) Realizar dos iteraciones del método de gradiente conjugado a partir del vector semilla
𝑥 0 = (2,2)𝑇 .
Solución
a) El sistema dado puede escribirse como Ax = b, con:
1 2 3 𝑥
A=[ ] b=( ) x=(𝑦)
2 5 7

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:

1−𝛾 2 𝛾 = 5.85 …
det(A−𝛾𝐼)=det[ ] =(1-𝛾)(5-𝛾)-4=0 { 1
2 5−𝛾 𝛾2 = 0.17 …

luego la matriz A es definida positiva.

b) La funcional cuadrática asociada es:

1 1
𝑦) [1 2 𝑥 𝑥
J(x,y)= 2 𝑥 𝑇 𝐴𝑥 − 𝑏 𝑇 𝑥´ + 𝑐=2 (𝑥 ] (𝑦)-(3 7) (𝑦)+c
2 5

1 5
=2 𝑥 2 + 2𝑥𝑦 + 2 𝑦 2 -3𝑥 + 7𝑦 + 𝑐

c) La primera dirección de descenso es:


3 1 2 2 −3
𝑑(0) =𝑟 (0) =b-A𝑥 (0) =( )-[ ] ( )=( )
7 2 5 2 −7

y el parámetro de descenso:

3
(𝑑 (0) )𝑇 𝑑 (0) (3 7)( ) 58
7
𝜌 = (𝑑(0) )𝑇 𝐴𝑑(0)= 1 2 3 =338=0.1715976331
(3 7)[ ]( )
2 5 7
2 −3 1.485207101
𝑥 (1) = 𝑥 (0)+ 𝜌𝑑(0) =( )+0.1715976331( )=( )
2 −7 0.798816568

−3 1 2 −3 −0.082840237
𝑟 (1) = 𝑟 (0) + 𝜌𝐴𝑑(0) =( )-0.1715976331[ ] ( )=( )
−7 2 5 −7 0.035502957

−0.082840237
(𝑟 (1) )𝑇 𝑟 (1) (−0.082840237 0.035502957)( )
0.035502957
𝛼 = (𝑟(0) )𝑇 𝑟(0) = 3 = 0.0001400511176
(3 7)( )
7

−0.082840237 −3 −0.08326039035
𝑑(1) =𝑟 (1) + 𝛼𝑑(0) = ( )+0.0001400511176( ) = ( )
0.035502957 −7 0.03452259918

−0.082840237
(𝑑 (1) )𝑇 𝑑 (1) (−0.082840237 0.035502957)( )
0.035502957
𝜌= (1) 𝑇 (1) = 1 2 −0.08326039035 = 5.827586205
(𝑑 ) 𝐴𝑑 (−0.08326039035 0.03452259918)[ ]( )
2 5 0.03452259918

1.485207101 −0.08326039035
𝑥 (2) = 𝑥 (1)+ 𝜌𝑑(1) = ( )+5.827586205( )
0.798816568 0.03452259918
0.9999999988
=( )
0.9999999907

NOTA: puede comprobarse fácilmente que la solución del sistema propuesto es (1,1)T
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.
Algoritmo del método del gradiente conjudado

function [x] = conjgrad(Q,b,x0)

g = Q*x0 - b;

d = -g;

z = Q*d;

a = -(g'*d)/(d'*z)

x = x0 + a*d

for i = 1:size(Q)(1);

g = Q*x - b;

if( norm(g) < 1e-10 )

break;

end

B = (g'*z)/(d'*z)

d = -g + B*d

z = Q*d;

a = -(g'*d)/(d'*z)

x = x + a*d

end

end
corrida del algoritmo

conjgrad(Q,b,x0)

a = 0.17160

x = 1.48521

0.79882

B = 0.00014005

d= -0.083260

0.034523

a = 5.8276

x= 1.00000

1.00000

ans =

1.00000

1.00000

Potrebbero piacerti anche