PDF de programación - Programación: método de Jacobi para resolver sistemas de ecuaciones lineales en forma matricial

Imágen de pdf Programación: método de Jacobi para resolver sistemas de ecuaciones lineales en forma matricial

Programación: método de Jacobi para resolver sistemas de ecuaciones lineales en forma matricialgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 19 de Noviembre del 2017)
4.003 visualizaciones desde el 19 de Noviembre del 2017
104,5 KB
4 paginas
Creado hace 7a (28/04/2016)
Programaci´on: forma matricial

del m´etodo de Jacobi

para resolver sistemas de ecuaciones lineales

Objetivos. Programar una funci´on que resuelva sistemas de ecuaciones lineales con el
m´etodo iterativo de Jacobi en la forma matricial.

Requisitos. Operaciones con vectores (operaciones lineales y el producto punto), matri-
ces triangulares, soluci´on de sistemas con matrices triangulares, ciclo while, la idea del
m´etodo de Jacobi.

1. Multiplicaci´on y divisi´on de vectores componente a componente. Dados dos
vectores a, b ∈ Rn, denotemos por a (cid:12) b al vector de longitud n cuya j-´esima componente
es

(a (cid:12) b)j = ajbj.

Si adem´as bj (cid:54)= 0 para cada j ∈ {1, . . . , n}, entonces denotemos por a (cid:11) b al vector de
longitud n cuya j-´esima componente es

(a (cid:11) b)j =

aj
bj

.

En el lenguaje de MATLAB (y en GNU Octave, Scilab, FreeMat) la multiplicaci´on y
divisi´on por componentes se denotan por .* y ./:

a = [6; -5; 1]
b = [-2; 2; 3]
a .* b
a ./ b

2. Multiplicaci´on de una matriz diagonal por un vector. Se d = [dj]n
j=1 un vector.
Se denota por diag(d) la matriz diagonal con entradas diagonales d1, . . . , dn. Por ejemplo,
si n = 3, entonces

0
0

 d1
 v1

v2
v3

0
d2
0

0
0
d3

 .
 d1v1

d2v2
d3v3

 =

diag(d) =

 d1

0
d2
0

0
0
d3

 = d (cid:12) v.

Notamos que

diag(d)v =

0
0
En general, si d, v ∈ Rn, entonces

diag(d)v = d (cid:12) v.

Programaci´on: m´etodo de Jacobi en forma matricial, p´agina 1 de 4

3. Multiplicaci´on de una matriz por un vector, prueba num´erica.

d = [5; -1; 2; 3]
v = [-3; 2; 3; 5]
diag(d)
diag(d) * v
d .* v
4. Soluci´on de sistemas de ecuaciones lineales con matrices diagonales. Si d, b ∈
Rn y dj (cid:54)= 0 para cada j ∈ {1, . . . , n}, entonces el sistema de ecuaciones lineales

diag(d)x = b

tiene una ´unica soluci´on la cual se puede calcular como

x = b (cid:11) d.

Prueba num´erica:

d = [-2; 3; 2];
b = [5; -1; 0];
x = b ./ d;
norm(diag(d) * x - b)

5. Sacar el vector de las entradas diagonales de una matriz. Dada una matriz A,
denotemos por d al vector de sus entradas diagonales y consideremos la matriz diagonal
D con entradas diagonales A1,1, . . . , An,n:

(cid:3)n

j=1,

d =(cid:2)Aj,j
 ,

 A1,1

A2,2
A3,3

d =

D = diag(d).

 ,

D =

 A1,1

 .

0
0

0

0 A2,2
0

0 A3,3

Por ejemplo, para n = 3,

 A1,1 A1,2 A1,3

A2,1 A2,2 A2,3
A3,1 A3,2 A3,3

A =

En el lenguaje de MATLAB el vector d se puede obtener con el comando diag:

A = rand(3)
d = diag(A)
D = diag(d)

Programaci´on: m´etodo de Jacobi en forma matricial, p´agina 2 de 4

Idea del m´etodo de Jacobi en forma matricial
6. Sea A ∈ Mn(R) tal que Aj,j (cid:54)= 0 para cada j ∈ {1, . . . , n}. Denotemos por d al vector
de las entradas diagonales de A y por D a la matriz diagonal generada por el vector d:

d =(cid:2)Aj,j

(cid:3)n

j=1,

D = diag(d).

Entonces el sistema de ecuaciones lineales Ax = b se puede escribir en las siguientes formas
equivalentes:

Ax = b

⇐⇒ b − Ax = 0
⇐⇒ Dx = Dx + (b − Ax)
⇐⇒ x = x + D−1(b − Ax)
⇐⇒ x = x + (b − Ax) (cid:11) d.

Empezando con alg´un vector x(0), construimos una sucesi´on de vectores (x(s))∞
la f´ormula recursiva

s=0 mediante

x(s+1) = x(s) + (b − Ax(s)) (cid:11) d.

(1)
7. Residuo y su modificaci´on. Es c´omodo guardar el residuo b − Ax en una variable
r. Notamos que si el vector x se modifica mediante la f´ormula

x(s+1) = x(s) + p(s),

entonces el vector residuo correspondiente se cambia de la siguiente manera:

r(s+1) = b − Ax(s+1) = b − A(cid:0)x(s) + p(s)(cid:1) = r(s) − Ap(s).

En el algoritmo podemos usar los siguientes comandos:

p = r ./ d;
q = A * p;
x = x + p;
r = r - q;

8. Condici´on de terminaci´on. El ciclo while debe terminarse cuando el n´umero s de
las iteraciones realizadas es mayor o igual al n´umero m´aximo de iteraciones permitidas
smax o cuando la norma del residuo es menor que la “tolerancia” dada. En otras palabras,
la condici´on de terminaci´on es

(s ≥ smax)



((cid:107)r(cid:107) < tol).

Escriba la condici´on de continuaci´on.

Programaci´on: m´etodo de Jacobi en forma matricial, p´agina 3 de 4

9. Esquema del algoritmo.

function [x, s] = JacobiSolveMatrixForm(A, b, tol, smax),

d = ???;
n = length(b); x = zeros(n, 1); r = b;
s = ???;
while (s ??? smax) && (norm(r) ??? tol),

p = ???;
q = ???;
x = ???;
r = ???;
s = s + 1;

end

end

10. Prueba con matrices peque˜nas. Para garantizar la convergencia hacemos la matriz
estrictamente diagonal dominante. En vez de generar una matriz aleatoria puede construir
el ejemplo a mano.

function smallTestJacobiSolve(),

n = 4;
A = 2 * rand(n) - ones(n) + n * eye(n);
b = 2 * rand(n, 1) - ones(n, 1);
[x, s] = JacobiSolveMatrixForm(A, b, 1.0E-5, 100);
display(s); display(norm(A * x - b));

end

11. Pruebas con matrices grandes. Elegir n de tal manera que el tiempo de ejecuci´on
sea de 1 a 100 segundos, medir el tiempo de ejecuci´on con el comando cputime.

function largeTestJacobiSolve(),

...

end

Programaci´on: m´etodo de Jacobi en forma matricial, p´agina 4 de 4
  • Links de descarga
http://lwp-l.com/pdf7578

Comentarios de: Programación: método de Jacobi para resolver sistemas de ecuaciones lineales en forma matricial (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad