Sistem as Line a Les

64
Sistemas de lineales Programación Numérica

Transcript of Sistem as Line a Les

Sistemas de lineales

Programación Numérica

Objetivos

• Resolver un sistema de ecuaciones lineales acopladas

• Obtener la inversa de una matriz

• Calcular el determinante de una matriz

• Factorizar matrices

Solución de sistemas pequeñosLa solución de un sistema lineal de 2 ecuaciones puede obtenerse fácilmente de forma gráfica

a11x1 + a12x2 = b1

a21x1 + a22x2 = b2

Despejando x2 y graficando

22

21

22

212

12

11

12

112

ab

xaa

x

ab

xaa

x

12

11

12

112 a

bx

aa

x

22

21

22

212 a

bx

aa

x

solución

Ejemplo

Sea el sistema

3x1 + 2x2 = 18

–x1 + 2x2 = 2

Despejando

x2 = 9 – 1.5x1

x2 = 1 + 0.5x1

(4, 3)

Tipos de soluciones

No hay solución Infinidad de soluciones Sistema mal condicionado

Ejemplo

½x1 + x2 = 1

½x1 + x2 = ½

Ejemplo

½x1 + x2 = 1

x1 + 2x2 = 1

Ejemplo

½x1 + x2 = 1

0.501x1 + x2 = 0.9

Determinantes

Solución de un sistema de 3x3

La matriz del sistema es:

333231

232221

131211

aaa

aaa

aaa

A

223132211323313321122332332211

3231

222113

3331

232112

3332

232211

333231

232221

131211

aaaaaaaaaaaaaaa

aa

aaa

aa

aaa

aa

aaa

aaa

aaa

aaa

D

El determinante de A es:

Regla de Cramer

Cada incógnita de un sistema de ecuaciones lineales algebraicas puede expresarse como la razón de dos determinantes con denominados D y con numerador obtenido a partir de D, al reemplazar la columna de coeficientes de la incógnita en cuestión por las constantes independientes b1, b2, …, bn. Por ejemplo x1 se calcula con:

333231

232221

131211

33323

23222

13121

1

aaa

aaa

aaa

aab

aab

aab

x

Eliminación de Gauss simple

DefiniciónUn sistema lineal es un sistema de la forma:

E1: a11x1 + a12x2 + a13x3 +...+ a1nxn = b1

E2: a21x1 + a22x2 + a23x3 +...+ a2nxn = b2

.

En: an1x1 + an2x2 + an3x3 +...+ annxn = bn

Donde x1, x2, x3.., xn son las incógnitas.

Operaciones básicas

Se utilizarán tres operaciones para simplificar un sistema lineal:

1. La ecuación Ei puede multiplicarse por una constante distinta de cero. (Ei) (Ei)

2. La ecuación Ej puede multiplicarse por una constante distinta de cero y sumarse a otra ecuación Ei. (Ei +Ej) (Ei)3. El orden de las ecuaciones Ei y Ei puede intercambiarse. (Ei) (Ei)

EjemploE1: x1 + x2 + 3x4 = 4

E2: 2x1+ x2 – x3 + x4 = 1

E3: 3x1- x2 – x3 + 2x4 = -3

E4: -x1+2x2 +3x3 - x4 = 4

Las operaciones:

(E2 –2E1)E2, (E3 –3E1) E3, (E4 + E1)E4

Transforman el sistema en:

positivo

SimplificarE1: x1 + x2 + 3x4 = 4

E2: - x2 – x3 - 5x4 = -7

E3: - 4x2 – x3 -7x4 =-15

E4: + 3x2 +3x3 + 2x4 = 8

Las operaciones:

(E3 –4E2)E3, (E4 +3E2) E4

Transforman el sistema en:

SimplificarE1: x1 + x2 + 3x4 = 4

E2: - x2 – x3 - 5x4 = -7

E3: 3x3 +13x4 = 13

E4: -13x4 = -13

El sistema se puede resolver hacia atrás.

x4 = 1

x3 = (13-13x4)/3 = 0

x2 = -(x3 + 5x4 -7) = 2

x1 = -x2 - 3x4 + 4 = -1

Comprobación

E1: (-1)+(2)+3(1)= 4

E2: 2(-1)+(2)–(0)+(1) = 1

E3: 3(-1)-(2)–(0)+2(1)= -3

E4: -(-1)+2(2)+3(0)-(1) = 4

E1: x1 + x2 + 3x4 = 4

E2: 2x1+ x2 – x3 + x4 = 1

E3: 3x1- x2 – x3 + 2x4 = -3

E4: -x1+2x2 +3x3 - x4 = 4

x1 = -1

x2 = 2

x3 = 0

x4 = 1

Solución en Matlab%sistema de ecuacionesA = [1,1,0,3,4;2,1,-1,1,1;3,-1,-1,2,-3;-1,2,3,-1,4]x = [0 0 0 0]’;%operaciones%(E2 - 2E1) -> E2A(2,:) = A(2,:) - 2*A(1,:);%(E3 - 3E1) -> E3A(3,:) = A(3,:) - 3*A(1,:);%(E4 + E1) -> E4A(4,:) = A(4,:) + A(1,:);%(E3 - 4E2) -> E3A(3,:) = A(3,:) - 4*A(2,:);%(E4 + 3E2) -> E4A(4,:) = A(4,:) + 3*A(2,:);x(4) = A(4,5)/A(4,4);x(3) = (A(3,5)-A(3,4)*x(4))/A(3,3);x(2) = (A(2,5)-A(2,3:4)*x(3:4))/A(2,2);x(1) = (A(1,5)-A(1,2:4)*x(2:4))/A(1,1);

Actividad

Resolver

  x1 +  x2           +    x4   = 2

2x1 + x2  -  x3   +   x4= 1

 4 x1 -  x2  - 2x3 +   2 x4  = 0

 3x1 -  x2  -  x3 +   2 x4  = -3

Matrices

nmnn

m

m

ij

aaa

aaa

aaa

aA

21

22221

11211

Una matriz es un arreglo rectangular de elementos de n renglones y m columnas.

Representación matricial

nnnmnn

nm

nm

bxaxaxa

bxaxaxa

bxaxaxa

2211

22222121

11212111

El sistema de ecuaciones

Se puede representar por una matriz ampliada

nnnnn

n

n

b

b

b

aaa

aaa

aaa

A

.

..

.

.

, 2

1

21

22221

11211

b

Ejemplo

4.

3.

1.

4.

1321

2113

1112

3011

(E2 –2E1) E2, (E3 –3E1) E3, (E4 + E1) E4

(E3 –4E2) E3, (E3 +3E2) E4

8.

15.

7.

4.

1330

7140

5110

3011

13.

13.

7.

4.

13000

13300

5110

3011

Eliminación Gaussiana con sustitución hacia atrás

1,

1,2

1,1

21

22221

11211

.

..

.

.

,

nn

n

n

nnnn

n

n

a

a

a

aaa

aaa

aaa

AA

b

Se forma la matriz aumentada

Siempre que aii 0, realizamos la operación

(Ej–(aji/aii) Ei) (Ej)

Para i = 1, 2, 3, ..., n-1 y j = i + 1, i + 2, ..., n.

1,

1,2

1,1

222

11211

.

..

.

.

00

0

nn

n

n

nn

n

n

a

a

a

a

aa

aaa

A

Sustitución hacia atrás

nn

nnn a

ax

,

1,

1,1

,11,11

nn

nnnnnn a

xaax

ii

n

ij jjini

ii

iiinninninii a

xaa

a

xaxaxaax

,

1 ,1,

,

11,11,,1, ...

En general

Algoritmo Gauss

Entrada: número de incógnitas y de ecuaciones n, matriz aumentada (aij) donde 1<= i <= n y 1<= j <= n+1.

Salida: solución x1, x2 ... xn o mensaje de que no hay solución

1. Para i = 1 hasta n-1

2. Sea p el entero más pequeño con i <= p <= n y api <> 0

3. Si no se encuentra p

4. Salida(“no existe solución”)

5. terminar

continuación6. Si p<>i realice (Ei)<->(Ep)

7. Para j = i+1 hasta n

8. mij = aij/aii

9. Realice (Ej-mijEi) -> (Ej)

10. Si ann=0 entonces

11. Salida(“no existe solución”)

12. xn = an,n+1/ann

13. Para i = n – 1 hasta 1

14. xi = [ai,n+1-j=i+1 aijxj]/aii

Inversa

La inversa de una matriz A de n x n es una matriz A -1 tal que A x A-1 = A-1 x A = In

Una matriz que tiene inversa se le llama matriz no singular.

Una matriz que no tiene inversa es una matriz singular.

Se cumple que:

a. La inversa es única.

b. La inversa de una matriz no singular es no singular y (A-1)-1 = A

c. Si A y B son no singulares, (AB)-1 = B-1 A-1

Obtención de la inversaSea Bj la j-ésima columna de la matriz B de n x n.

nj

j

j

j

b

b

b

B2

1

Si AB = C, entonces la j-esima columna de C está dada por:

n

k kjnk

n

k kjk

n

k kjk

nj

j

j

nnnn

n

n

jj

nj

j

j

ba

ba

ba

b

b

b

aaa

aaa

aaa

ABC

c

c

c

1

1 2

1 1

2

1

21

22221

11211

2

1

Cont.

0

0

1

0

0

jAB

Supongamos que A-1 existe y que A-1 = B = (bij). Entonces AB = I y

Para encontrar B podemos resolver n ecuaciones lineales donde la j-ésima columna de la inversa es la solución del sistema lineal que en el lado derecho tiene la j-ésima columna de I.

Ejemplo

211

012

121

A

333231

232221

131211

211

012

121

bbb

bbb

bbb

AB

332313322212312111

231322122111

332313322212312111

222

222

222

bbbbbbbbb

bbbbbb

bbbbbbbbb

AB

Si B = A1, entonces AB = I se tiene

120202

021202

020212

332313322212312111

231322122111

332313322212312111

bbbbbbbbb

bbbbbb

bbbbbbbbb

31

31

31

92

91

94

91

95

92

333231

232221

131211

bbb

bbb

bbb

31

31

31

92

91

94

91

95

92

1A

Inversa en Matlabfunction x = inversa(B)[n dumy] = size(B);I = eye(n);A = [B,I];x = zeros(n);for i = 1 : n-1 p = i; while p < n && A(p,i) == 0; p = p + 1; end if p == n fprintf('Matriz singular...'); return; end if p ~= i temp = A(i,:); A(i,:) = A(p,:); A(p,:) = temp; end for j = i+1 : n m = A(j,i)/A(i,i); for k = 1 : 2*n A(j,k) = A(j,k) - m*A(i,k); end endend

Inversa en Matlabif A(n,n)==0 fprintf('Matriz singular...'); return;endfor k = 1: n x(n,k) = A(n,n+k)/A(n,n); for i = n-1 : -1: 1 s = A(i,n+k); for j = i+1 : n s = s - A(i,j)*x(j,k); end x(i,k) = s/A(i,i); endend

Comandos de Matlab para matrices

inv(m) – invierte una matriz cuadrada m.También m^-1.

/ – divide, A/B es equivalente a B*inv(A)

\ – divide, A\B es equivalente a inv(A)*B

det(m) – calcula el determinante de m.

trace(m) – suma los elementos de la diagonal de m.

Tarea

1. Determine cual de las siguientes matrices son no singulares y calcule su inversa. a.| 4  2  6| b.|1 2  0| c.|4 0 0|  | 3  0  7|   |2 1 -1|   |0 0 0|  |-2 -1 -3|   |3 1  1|   |0 0 3|

d.|1  1 -1  1| e.|4  0 0 0| f.|2  0 1 2|   |1  2 -4 -2|   |6  7 0 0|   |1  1 0 2|  |2  1  1  5|   |9 11 1 0|   |2 -1 3 1|  |-1 0 -2 -4|   |5  4 1 1|   |3 -1 4 3|

1164

0751

8042

6243

4264

5150

3547

6031

Álgebra lineal

Definición: dos matrices son iguales si tienen el mismo tamaño n x m y si aij = bij para todo i = 1, 2, .., n y j = 1, 2, ..., m.

Definición: la suma de dos matrices A y B del mismo tamaño n x m es igual a una matriz C donde cij = aij + bij para todo i = 1, 2, .., n y j = 1, 2, ..., m.

Definición: la multiplicación de una matriz A de tamaño n x m por una escalar es una matriz de tamaño n x m cuyos elementos son aij para todo i = 1, 2, .., n y j = 1, 2, ..., m.

Propiedades de las matrices

Si A, B y C son matrices de tamaño n x m, y y son números reales, se cumplen las siguientes propiedades:

a. A + B = B + A e. (A + B) = B + A

b. (A + B) + C = A + (B + C) f. ( + )A = A + A

c. A + 0 = 0 + A = A g. (A) = (A

d. A + (-A) = -A + A = 0 h. 1A = A

Multiplicación de matrices

Sea A una matriz de n x m y B una matriz de m x p. El producto de la matriz A por la matriz B se define como la matriz C de n x p donde los elementos de C se calculan por:

mjimjiji

m

kkjikij babababac

...22111

DefinicionesUna matriz cuadrada es la que tiene igual número de renglones que de columnas.

Una matriz diagonal es una matriz cuadrada con D =(dij) con dij = 0 simpre que i<>j.

La matriz identidad de orden n, In = (ij) es una matriz diagonal con ij = 1 si i = j y ij =0 si i<>j.

Una matriz triangular superior de n x n U = (uij) tiene, para toda j = 1, 2, ..., n, los elementos

uij = 0, para cada i = j +1, j + 2, ..., n

Una matriz triangular inferior de n x n L = (lij) tiene, para toda j = 1, 2, ..., n, los elementos

lij = 0, para cada i = 1, 2, ..., j – 1

Traspuesta

La traspuesta de una matriz A de n x m es una matriz At tal que la i_ésima columna de At es la misma que el i-ésimo renglón de A.

Se cumple que

a. (At)t = A

b. (A + B)t = At + Bt

c. (AB)t = Bt At

d. Si A-1 existe, (A-1)t = (At)-1

DeterminanteSi A es una matriz de 1 x 1, entonces det(A) = x.

Si a es de orden mayor que 1, calcule el determinante de A como sigue:

Escoja cualquier fila o columna. para cada elemento A[i, j] en esa fila o columna, forme el producto

(-1)(i+ j)*A[i, j]*det(menor(A[i, j]))

Donde det(menor(A[i, j])) es el determinante del menor de A[i, j].

det(A) = suma de todos los productos para la columna o fila seleccionada.

Propiedadesa. Si un renglón o columna tiene solo ceros, el determinante es cero.

b. Si se intercambian 2 renglones o columnas, el signo del determinante cambia

c. Si dos columnas o renglones son iguales, el determinante es cero.

d. Si se multiplica un renglón o columna por un numero real el determinante se multiplica por ese número real.

e. Si se suma un múltiplo de un renglón o columna a otro renglón o columna, el determinante no se altera.

f. El determinante de un producto de matrices es igual al producto de los determinantes de cada una.

g. El determinante de la inversa es el inverso del determinante de la matriz original.

Cálculo eficiente del determinante

Convertir la matriz en una matriz triangular superior y calcular el determinante de ésta.

El determinante de una matriz triangular superior es igual al producto de los elementos de la diagonal principal.

La matriz triangular se obtiene mediante la eliminación gaussiana.

Determinante en Matlab

function x = determinante(A)[n dumy] = size(A);for i = 1 : n-1 p = i; while p < n && A(p,i) == 0; p = p + 1; end if p == n x = 0; return; end if p ~= i temp = A(i,:); A(i,:) = A(p,:); A(p,:) = temp; end

for j = i+1 : n m = A(j,i)/A(i,i); for k = 1 : n A(j,k) = A(j,k) - m*A(i,k); end endendif A(n,n)==0 x = 0; return;endp = 1;for i = 1:n p = p*A(i,i);endx = p;

Descomposición LU

La descomposición LU transforma una matriz a en el producto de dos matrices triangulares

A = LU (1)Donde L es triangular inferior y U es triangular superior.

Un sistema Ax = b se puede escribir comoLUx = b (2)

Si hacemosUx = d (3)

ObtenemosLd = b (4)

Con (4) se obtiene z y después con (3) se obtiene x.

En los casos en que se tengan varios sistemas con la misma matriz de coeficientes es más eficiente aplicar este método que resolver cada uno mediante Gauss.

Supongamos un sistema de 3x3

3

2

1

3

2

1

333231

232221

131211

b

b

b

x

x

x

aaa

aaa

aaa

En el primer paso de eliminación gaussiana se multiplica el renglón 1 por f 21 = a21/a11 y se le resta al segundo para eliminar a21.

Luego se multiplica el renglón 1 por f 31 = a31/a11 y se le resta al tercer para eliminar a31.

El paso final es multiplicar el segundo renglón por f 32 = a’32/a’22 y restar el resultado al tercer renglón.

Los valores de f 21, f 31 y f 32 se pueden retener en a21, a31 y a32 .

Después de la eliminación

333231

232221

131211

''

''

aff

aaf

aaa

Esta matriz representa un almacenamiento eficiente de la descomposición LU de A.

A = L U

donde

33

2322

131211

''00

''0

a

aa

aaa

U

1

01

001

3231

21

ff

fL

Ejemplo

102.03.0

3.071.0

2.01.03

A

Los valores de f 21, f 31 son

f 21 = 0.1/3 = 0.033333 y

f 31 = 0.3/3 = 0.1

020.1019.01.0

29333.000333.703333.0

2.01.03 El valore de f 32 es

f 32 = 0.19/7.003333 = 0.027130

0120.10027130.01.0

29333.000333.703333.0

2.01.03

0120.1000

29333.000333.70

2.01.03

U

1027130.01.0

0103333.0

001

L

99996.92.03.0

3.07099999.0

2.01.03

0120.1000

29333.000333.70

2.01.03

1027130.01.0

0103333.0

001

A

Algoritmo

Sub Decompose(a, n) DoFor k=1, n – 1 DoFor i=k+1, n factor = ai,k/ak,k

ai,k = factor DoFor j=k+1, n ai,j = ai,j – factor * ak,j

EndDo EndDo EndDoEnd Decompose

Solución del sistemaPara resolver un sistema de ecuaciones procedemos multiplicando L por un vector d y sustituyendo hacia adelante.

33232131

22121

11

3

2

1

3

2

1

3231

21

1

01

001

bddldl

bddl

bd

b

b

b

d

d

d

ll

l

Con estos valores evaluamos U por X y sustituimos hacia atrás

1313212111

2123222

33

3

2

1

3

2

1

33

2322

131211

''

'00

''0

dxaxaxa

dxaxa

dx

d

d

d

x

x

x

a

aa

aaa

Ejemplo

4.71

3.19

85.7

102.03.0

3.071.0

2.01.03

3

2

1

x

x

x

0843.70

5617.19

85.7

4.7102713.01.0

3.193333.0

85.7

4.71

3.19

85.7

1027130.01.0

0103333.0

001

3

2

1

321

21

1

3

2

1

d

d

d

ddd

dd

d

d

d

d

Ld

00003.7

5.2

3

0843.70

5617.19

58.7

0120.1000

29333.000333.70

2.01.03

3

2

1

3

2

1

x

x

x

x

x

x

Ux

EjemploSea el sistema: -6x1 + x2 + x3 = -37 4x1 + 3x2 + x3 = -25 5x1 - 3x2 + x3 = -34

135

134

116

A

34

25

37

b

La descomposición LU nos da

15909.8333.

016667.

001

L

8182.200

6667.16667.30

116

U

180.94

667.49

37

8182.200

6667.16667.30

116

3

2

1

x

x

x

Ux

34

25

37

15909.8333.

016667.

001

3

2

1

z

z

z

Ly

z1 = -37

-.6667z1 + z2 = -25

-.8333z1 - .5909z2 + z3 = -34

2.8182x3 = -94.180

3.6667x1 + 1.6667x2 = -49.667

-6x1 + x2 + x3 = -37

X1 = 0.87097X2 = 1.64516X3 = -33.41935

PivoteoLa descomposición LU se implementa con el algoritmo de Gauss. Si se modifica el orden de las filas, se deberá tomar en cuenta este hecho.El algoritmo siguiente genera una matriz P de permutación para tomar en cuenta el intercambio de filas.La matriz de permutación se obtiene intercambiando renglones en una matriz identidad. Por ejemplo, la siguiente matriz intercambia el primer y segundo de una matriz A al premultiplicarla por A.

El guión regresaPA = LU

La ecuación original se escribePAx = Py

OLUx = y

100

001

010

P

Algoritmo en Matlabfunction [l u p]= descomposicionLU(a)%l – matriz triangular inferior%u – matriz triangular superior%p – matriz de permutacioneslu = a;[n muda] = size(a);p = eye(n);psigno = 1;for k=1:n j = k; for i = k+1:n % encontrar pivote if abs(lu(i,k))>abs(lu(j,k)) j = i; end end if j!= k % intercambia con el pivote t = lu(j,:); lu(j,:) = lu(k,:); lu(k,:) = t; t = p(j,:); p(j,:) = p(k,:); p(k,:) = t; psigno = -psigno; end

if lu (k,k) != 0 for i = k+1:n lu(i,k) = lu(i,k)/lu(k,k); for m=k+1:n lu(i,l) = lu(i,m)-lu(i,k)*lu(k,m); end end endend %fin lazo kfor i = 1:n for j = 1:n if i>j l(i,j) = lu(i,j); elseif i==j, l(i,j) = 1; elsel(i,j) = 0; end endendfor i = 1:n for j = 1:n if i<=j, u(i,j) = lu(i,j); else u(i,j) = 0; end endend

Substitución hacia adelante y hacia atrás

function y=sub_adelante(L,w)[nRow,nCol]=size(L);y=zeros(nRow,1);y(1)=w(1)/L(1,1);for n=2:nRow y(n)=( w(n) - L(n,1:n-1)*y(1:n-1) ) / L(n,n);end

function x=sub_atras(U,v)[nRow,nCol]=size(U);x=zeros(nRow,1);x(nRow)=v(nRow)/U(nRow,nRow);for n=(nRow-1):-1:1 x(n)=(v(n)-(U(n,n+1:end)*x(n+1:end))) / U(n,n);end

Guión para resolver un sistema

function x=resolver(A,b)% Resuelve Ax=b%ENTRADA:% A: matriz cuadrada% b: vector de tamaño n%%SALIDA:% x: la solución a A*x=b[L,U,P] = descomposicionLU(A);y = sub_adelante(L,P*b);x = sub_atras(U,y);

Tarea1. Factorice las siguientes matrices en la descomposición LU con Octave y con los guiones para LU. Haga a mano el producto PLU y confirme que es igual a la matriz original. Utilice 3 cifras después del punto decimal. a.| 4  2  6| b.|1 2  6| c.|1 3 8|  | 3  5  7|   |2 1 -1|   |0 7 0|  |-2 -1  3|   |3 1  1|   |1 7 3|

d.| 1 -1 -1  1| e.|4  0 4 0| f.|1  3  1  2|   | 1  2 -4 -2|   |6  7 1 5|   |8  1 -6  2|  | 2  1  1  5|   |7  1 1 0|   |2 -4  3 -1|  |-1  6 -2 -4|   |2  4 1 1|   |3 -2  4  3|2. Encuentre los determinantes de las matrices anteriores

AplicaciónUna red eléctrica puede representarse por medio de un sistema de ecuaciones.

Supongamos una red que consista solo de resistencias y fuentes de voltaje independientes.

El sistema a resolver es

RI = V

Donde R es la matriz de resistencias de la red, V es un vector donde cada componente es el voltaje de la malla e I es el vector de corrientes a determinar.

La matriz de resistencias tiene la siguiente forma

nnn

n

RR

RR

RRR

..

....

....

...

1

2221

11211

Donde Rii es la resistencia total de la malla i, y –Rij es la resistencia total entre la malla i y la malla j.

Análisis de redes

I1 I2

I4I3

R1

R2 R3

R4

R5

R6

R7

R9

V1

V2V3

2

23

1

4

3

2

1

9866

744

66535

45421 0

00

00

0

0

V

VV

V

I

I

I

I

RRRR

RRR

RRRRR

RRRRR

R8

Solución en Matlab% Calculo de las corrientes de malla en una red eléctrica% a - vector utilizado para leer los datos desde un archivo% nm = numero de mallas% nr = numero de resistencias% m1 = vector con la malla uno de cada resistencia% m2 = vector con la malla dos de cada resistencia% res = vector con los valores de las resistencias leídas% r = matriz de resistencias% v = vector con los voltajes totales de malla% amp = vector de corrientes de malla% la descripción de la red se lee desde un archivo, el formato es% nm% nr% res(1)% m1(1)% m2(1)% ...% res(nr)% m1(nr)% m2(nr)% v(1)% ...% v(nm)%

Solución en Matlabnn = 1;%almacena todos los datos en el vector aa = textread('malla.txt');nm = a(nn);nn = nn+1;nr = a(nn);nn = nn+1;%lee cada elementofor n = 1:nr res(n) = a(nn);nn = nn+1; m1(n) = a(nn);nn = nn+1; m2(n) = a(nn);nn = nn+1;end%descripcion de los datos leidosfor n = 1:nr fprintf('R%d=%6.3f entre malla %d y %d\n',n,res(n),m1(n),m2(n));end%Leer voltajes de malla y los despliegafor n = 1:nm v(n) = a(nn);nn = nn+1; fprintf('Voltaje de malla %d = %12f8:\n',n,v(n))end

Solución en Matlab%crea matriz de resistenciasr = zeros(nm);for n = 1:nr j = m1(n); k = m2(n); if k~=0 r(k,k) = r(k,k) + res(n); r(j,k) = r(j,k) - res(n); r(k,j) = r(j,k); end r(j,j) = r(j,j) + res(n);end%imprime matriz de resistenciasfprintf('Matriz de resistencias');r%calcula corrientesamp = inv(r)*v';%imprimir resultadosfor n = 1:nm fprintf('Corrientes de malla %d = %12f8:\n',n,amp(n))end

Ejemplo numérico

I1I5

I4I2

38.9

1017

9493492

837

42.1 986

4821

5732842

5670

I359.76

4821349864057324 55670 5 038.9042.1059.76

Número de mallas

Número de resistencias

Valor de resistencia

Malla 1

Malla 2

59101713349212837249492084235

Número de mallas

Número de resistencias

Resultados

R1=1017.000 entre malla 1 y 3R2=3492.000 entre malla 1 y 2R3=837.000 entre malla 2 y 4R4=949.000 entre malla 2 y 0R5=842.000 entre malla 3 y 5R6=4821.000 entre malla 3 y 4R7=986.000 entre malla 4 y 0R8=5732.000 entre malla 4 y 5R9=5670.000 entre malla 5 y 0Voltaje de malla 1 = 38.900000Voltaje de malla 2 = 0.000000Voltaje de malla 3 = 42.100000Voltaje de malla 4 = 0.000000Voltaje de malla 5 = 59.760000

Matriz de resistencias r = 4509 -3492 -1017 0 0 -3492 5278 0 -837 0 -1017 0 6680 -4821 -842 0 -837 -4821 12376 -5732 0 0 -842 -5732 12244

Corrientes de malla 1 = 0.036338Corrientes de malla 2 = 0.027346Corrientes de malla 3 = 0.028966Corrientes de malla 4 = 0.020833Corrientes de malla 5 = 0.016626

110

320

111

)

042

110

121

)

542

413

324

)

533

933

112

) dcba

6

5

4

111

143

112

3

2

1

210

121

012

3

2

1

3

2

1

x

x

x

x

x

x