Resolución de Sistemas Lineales en MATLAB
Resolución de Sistemas Lineales en MATLAB
Laboratorio N°5
Métodos Numéricos
Sistemas Lineales
1
Laboratorio N°4
Sistemas Lineales
1. Métodos Directos
Solucion:
T (1) = 1 = a1 + a2 + a3 + a4 + a5 + a6
Quedaria:
1 1 1 1 1 1 1
0 2 6 14 30 62 31
0 6 24 78 240 726 273
0 12 60 252 1020 4092 1296
0 20 120 620 3120 15620 4420
0 30 210 1290 7770 46650 12195
f3 : f2 × − aa22
32
+ f3 = f2 (−3) + f3
f4 : f2 × − aa22
42
+ f4 = f2 (−6) + f4
f5 : f2 × − aa22
52
+ f5 = f2 (−10) + f5
f6 : f2 × − aa62
22
+ f6 = f2 (−15) + f6
Quedaria:
1 1 1 1 1 1 1
0 2 6 14 30 62 31
0 0 6 36 150 540 180
0 0 24 168 840 3720 1110
0 0 60 480 2820 15000 4110
0 0 120 1080 7320 45720 11730
f4 : f3 × − aa43 + f4 = f3 (−4) + f4
33
f5 : f3 × − aa33
53
+ f5 = f3 (−10) + f5
f6 : f3 × − aa63
33
+ f6 = f3 (−20) + f6
Quedaria:
1 1 1 1 1 11
0 2 6 14 30 62 31
0 0 6 36 150 540 180
0 0 0 24 240 1560 390
0 0 0 120 1320 9600 2310
0 0 0 360 4320 34920 8130
f5 : f4 × − aa54 + f5 = f4 (−5) + f5
44
f6 : f4 × − aa44
64
+ f6 = f4 (−15) + f6
Quedaria:
1 1 1 1 1 1 1
0 2 6 14 30 62 31
0 0 6 36 150 540 180
0 0 0 24 240 1560 390
0 0 0 0 120 1800 360
0 0 0 0 720 11520 2280
1 1 1 1 1 1 1
0 2 6 14 30 62 31
0 0 6 36 150 540 180
0 0 0 24 240 1560 390
0 0 0 0 120 1800 360
0 0 0 0 0 720 120
1 5 1 1
∴ x = 0, − , 0, , ,
12 12 2 6
Algoritmo en Matlab
Listing 1: Algoritmo que permite triangularizar la matriz y dar los valores de la solucion
1 A = zeros (6 ,7) ;
2 a =0;
3 for i =1:6
4 for j =1:7
5 if ( j ==7)
6 A (i , j ) = a +( i .^5) ;
7 a = A (i , j ) ;
8 else
9 A (i , j ) = i .^ j ;
10 end
11 end
12 end
14 A
15
16 for i =2:6
17 b = A (i ,1) ;
18 for j =1:7
19 A (i , j ) = A (i , j ) + A (1 , j ) *( - b / A (1 ,1) ) ;
20 end
21 end
22
23 for i =3:6
24 b = A (i ,2) ;
25 for j =1:7
26 A (i , j ) = A (i , j ) + A (2 , j ) *( - b / A (2 ,2) ) ;
27 end
28 end
29
30 for i =4:6
31 b = A (i ,3) ;
32 for j =1:7
33 A (i , j ) = A (i , j ) + A (3 , j ) *( - b / A (3 ,3) ) ;
34 end
35 end
36
37 for i =5:6
38 b = A (i ,4) ;
39 for j =1:7
40 A (i , j ) = A (i , j ) + A (4 , j ) *( - b / A (4 ,4) ) ;
41 end
42 end
43
44 for i =6:6
45 b = A (i ,5) ;
46 for j =1:7
47 A (i , j ) = A (i , j ) + A (5 , j ) *( - b / A (5 ,5) ) ;
48 end
49 end
50
52 A
53 a6 = A (6 ,7) / A (6 ,6) ;
/ A (1 ,1) ;
59
Resultado de la ejecucion
Podemos ver que nos sale los mismos valores obtenidos de forma teórica. Entonces, el
metodo de Doo-little.
Solucion:
Hallando la matriz A
a11 a12 a13 a14 a15 a16
a a22 a23 a24 a25 a26
21
a31 a32 a33 a34 a35 a36
A=
a41 a42 a43 a44 a45 a46
a a52 a53 a54 a55 a56
51
a61 a62 a63 a64 a65 a66
2! 3! 4! 5! 6! 7!
1!1! 1!2! 1!3! 1!4! 1!5! 1!6!
3! 4! 5! 6! 7! 8!
2!1! 2!2! 2!3! 2!4! 2!5! 2!6!
4! 5! 6! 7! 8! 9!
3!1! 3!2! 3!3! 3!4! 3!5! 3!6!
A=
5!
6! 7! 8! 9! 10!
4!1! 4!2! 4!3! 4!4! 4!5! 4!6!
6! 7! 8! 9! 10! 11!
5!1! 5!2! 5!3! 5!4! 5!5! 5!6!
7! 8! 9! 10! 11! 12!
6!1! 6!2! 6!3! 6!4! 6!5! 6!6!
2 3 4 5 7 6
3 6 10 15 21 28
4 10 20 35 56 084
A= =L·U
5 15 35 70 126 210
6 21 56 126 252 462
7 28 84 210 462 924
Ahora que ya tenemos la matriz A, haremos el algoritmo de matlab que nos permita
Algoritmo en Matlab
2 for i =1:6
3 for j =1:6
5 end
6 end
8 for j =1:6
9 L (j , j ) =1;
10 end
11 for j =1:6
12 U (1 , j ) = A (1 , j ) ;
13 end
14 for i =2:6
15 for j =1:6
16 for k =1: i -1
17 v =0;
18 if k ==1
19 v =0;
20 else
21 for p =1: k -1
22 v = v + L (i , p ) * U (p , k ) ;
23 end
24 end
25 L (i , k ) =( A (i , k ) -v ) / U (k , k ) ;
26 end
27 for k = i :6
28 s2 =0;
29 for p =1: i -1
30 s2 = s2 + L (i , p ) * U (p , k ) ;
31 end
32 U (i , k ) = A (i , k ) - s2 ;
33 end
34 end
35 end ; L , U
Resultado de la ejecucion
(x1 + x2 )2 + (x1 )2
Se define la matriz simetrica A = (aij ) a partir del polinomio cuadratico P de modo que
se cumple:
X
P (x1 , x2 , x3 , ...., x6 ) = ai,j xi xj
i,j
Encuentre los coeficientes de la Matriz A y pruebe que A es una matriz definida positiva.
de la Matriz A.
Solución:
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 0 1 1 1 1 1 0
1 1 1 1 0 0 1 1 1 1 0 0
B= T
yB =
1 1 1 0 0 0 1 1 1 0 0 0
1 1 0 0 0 0 1 1 0 0 0 0
1 0 0 0 0 0 1 0 0 0 0 0
Entonces A = B.B T
6 5 4 3 2 1
5 5 4 3 2 1
4 4 4 3 2 1
A=
3 3 3 3 2 1
2 2 2 2 2 1
1 1 1 1 1 1
Algoritmo en Matlab
2 A =[6 5 4 3 2 1; 5 5 4 3 2 1; 4 4 4 3 2 1; 3 3 3 3 2 1; 2 2 2
2 2 1; 1 1 1 1 1 1];
3 lambda = eig ( A ) ;
4 disp ( lambda ) ;
Resultado de la ejecución
Como se muestra en los resultados de ejecucion, todos los autovalores son positivos, por
Ahora hallamos la matriz L a partir del metodo de Cholesky, para ello utilizaremos Matlab
Algoritmo en Matlab
2 clear
3 clc
4 L = zeros (6) ;
5 A =[6 5 4 3 2 1; 5 5 4 3 2 1; 4 4 4 3 2 1; 3 3 3 3 2 1; 2 2 2
2 2 1; 1 1 1 1 1 1];
6 for i =1:6
7 sum =0;
8 for j =1: i -1
10 end
11 L (i , i ) = sqrt ( A (i , i ) - sum ) ;
12 for k = i +1:6
13 sum =0;
14 for j =1: i -1
15 sum = sum + L (k , j ) * L (i , j ) ;
16 end
17 L (k , i ) =( A (k , i ) - sum ) / L (i , i ) ;
18 end
19 end
21 disp ( L ) ;
23 disp ( transpose ( L ) ) ;
24 B = L * transpose ( L ) ;
26 disp ( B ) ;
Resultado de la ejecución
Figura 4: Matrices L y LT
2. Métodos iterativos
12x − 2y − z = 3
−x + 12y − 2z = 8
que el método de Jacobi es convergente por el método del radio espectral de los autovalores
Solución:
de la siguiente manera.
12 −2 −1 x
3
−1 12 −2 y = 8
−2 −1 12 z −12
Teniendo en cuenta que se quiere calcular de forma general esta expresión por el método
AX = b
(D + L + U )X = b
DX = −(L + U )X + b
X = −D−1 (L + U )X + D−1 b
X = −D−1 RX + D−1 b
siguiente forma:
12 0 0 0 −2 +1
D=
0 12 0 , R = −1 0 −2
0 0 12 −2 −1 0
1 1
0 6 12
MJ = −D−1 R =
1 1
12 0 6
1 1
6 12 0
Para ello calcularemos el radio espectral (ρ) de la matriz de Jacobi (D−1 R). Teniendo en
MJ = −D−1 R =
1 1
12 0 6
1 1
6 12 0
Reduciéndose a la expresión:
192λ3 − 8λ − 1 = 0
1 1 195i 1 195i
λ1 = , λ2 = − + , λ3 = − −
4 8 2702 8 2702
Conociendo ya estos autovalores se puede concluir que el radio espectral de la matriz ana-
1
lizada es ρ = 4 y a su vez se observa que este valor es menor que 1 comprobando ası́ la
T (1−λ )
log( ∥x1 −x0p∥1 )
n≥
log λp
Para encontrar estos valores calcularemos nuestra fórmula de iteración para el método de
jacobi.
1 1 1
Xn+1 0 6 12 Xn 4
1 1 Y + 2
n+1 = 12
Y 0 6 n 3
1 1
Zn+1 6 12 0 Zn −1
1 2 23
De esta expresión podemos calcular ∥x1 − x0 ∥1 = 4 + 3 +1= 12 y reemplazaremos todo
en la fórmula.
10−4 (1− 14 )
log( 23 )
12
n≥
log 14
n ≥ 7, 32067
b) Implemente un programa en Matlab que permita encontrar la solución del sistema por
el método iterativo de Jacobi con un error T < 10−4 con la norma suma ∥.∥1 , elija la
Solución:
Algoritmo en Matlab
1 clear
2 clc
3 format long
: ') ;
7 x = x0 ';
12 n = length ( b ) ;
13 D = zeros ( n ) ;
14 T = zeros ( n ) ;
15 c = zeros (n ,1) ;
16 for i =1 : n ; D (i , i ) = A (i , i ) ; end
17 T =A - D ;
18 T = - D \ T ;
19 c = D \b ';
20 P = zeros ( max , n ) ;
21 k =1;
23 y=T*x+c;
24 dx =y - x ;
25 x = y ; P (k ,1: n ) =x ';
27 last = k ;
28 max = k ;
29 end
30 k = k +1;
31 end
32 k = k +1;
37 disp ([ A b '])
40 disp ( x0 )
43 disp (x ')
49 disp ( dx ')
Resultado de la ejecución
Resultado:
c) Encuentre la matriz MGS de Gauss-Seidel para el proceso iterativo Xn+1 = MGS .xn + C.
los autovalores (use calculadora). Calcule el numero de iteraciones necesarias para conse-
Solucion:
donde: A = D + L + U
La matriz A es:
12 −2 −1
−1 12 −2
−2 −1 12
12 0 0 0 0 0 0 −2 −1
→D=
0 12 0 , L = −1 0 0 y U = 0 0 −2
0 0 12 −2 −1 0 0 0 0
12 0 0
D+L=
−1 12 0
−2 −1 12
144 12 25 144 0 0
T
→ adj(D + L) =
0 144 12 → adj (D + L) = 12 144 0
0 0 144 25 12 144
→ det(D + L) = 12 × 12 × 12 = 123
144 0 0
−1 1
→ (D + L) = 3 12 144 0
12
25 12 144
Reemplazamos en MGS :
144 0 0 0 −2 −1
1
MGS =− 3 12 144 0 0 0 −2
12
25 12 144 0 0 0
1 1
−λ 6 12
→ (MGS − λI) =
0
1
12 −λ 25
144
50 49
0 1728 1728 −λ
1 49 25 50
P (λ) = −λ −λ −λ +λ =0
12 1728 144 1728
→ λ1 = −0,02 , λ2 = 0 , λ3 = 0,1319
Numero de iteraciones
Sabemos:
T (1−λ∞ )
log ∥x1 −x0 ∥ ∞
n≥
log λ∞
→ x1 = B = (D + L)−1 b
144 0 0 3 432
1 1
=B= 3 12 144 0 8 =
3
1188
12
12
25 12 144 −12 −1557
1
4
x1 = 11
16
−173
192
−173 173
→ ∥x1 − x0 ∥∞ = =
192 192
Reemplazamos en la formula:
3
10−4 (1− 12 )
log 173
192
n≥ 3
log 12
n ≥ 6,766
n=7
∴ 7 iteraciones
d) Implemente un programa en Matlab que permita encontrar la solución del sistema por el
método Gauss-Seidel con un error T < 10−4 con la norma maximo ||.||∞ elija la condicion
solución:
Algoritmo en Matlab
maquina
SEIDEL \ n \ n \ n ')
que pueden
10
usuario .
Iniciales :\ n ') ;
17
de coeficientes
20 disp ( k )
espacio de trabajo
de coeficiente
23 if determinante ==0
nica ')
25 end
26
31
35 disp ( T )
37
38 if re >1
41
42 return
43 end
46 disp ( C )
47 i =0;
48
tabla
51
53 xi = T * x + C ;
54 %disp ( xi )
55 i = i +1;
59
60 x = xi ;
61 z (i ,1) = i ;
62 z (i ,2) = x (1) ;
63 z (i ,3) = x (2) ;
64 z (i ,4) = x (3) ;
65 z (i ,5) = err ;
66 end
x2 x3
Error \ n \ n ')
Resultado de la ejecución
Resultado:
Conclusiones y observaciones
1. Conclusiones
El método de eliminación gaussiana se complica cada vez que el orden de la matriz au-
menta, porque cada vez se tiene que hacer mas operación elementales. Pero este método
se harı́a fácil con un algoritmo donde se pueda ingresar cualquier matriz cuadrada
dominante, el método siempre va a converger; Sin embargo, aunque no sea ası́, es posible
que converja. Por ello, ambos métodos son útiles cuando se tiene un sistema de ecuaciones
El método de Gauss es mucho más eficiente que el de Jacobi, esto debido a la considerable
iteraciones.
2. Observaciones
El método de Jacobi realiza muchas más operaciones que el método de Gauss-Seidel esto
debido a que con Gauss el reemplazo de la variable anterior es casi inmediato; por el
contrario, al utilizar Jacobi las variables se reemplazan luego de haber calculado todas
las enteriores.
solo sirve como una cota, ya que, en realidad se necesita menos o igual iteracciones a la
calculada.
matriz con su transpuesta, esta matriz hallada no es la matriz que se debe de utilizar
teoria, esta primera matriz fue hallada con el metodo directo que se indico en clase.
Algoritmo en Matlab
2 f = [10 50 100 200 500 1000 2000 5000 10000 20000 50000 100000 200000
2000000 8000000];
5 Vo = [270 340 344 348 348 300 350 356 352 348 344 340 344 150 92];
6 Vi = [50 56 56 58 56 46 58 58 58 58 58 58 58 56 40];
9 Av = Vo ./ Vi ;
10 H =20* log10 ( Av ) ;
11
13 semilogx (f ,H , ' LineWidth ' ,1.5 , ' Color ' , 'b ') ;
14 grid on ;