Solución de ecuaciones lineales con MATLAB.
Consideremos un conjunto de n
ecuaciones lineales con n variables, representado por:
a11x1 + a12x2
+ a13x3 + ... + a1nxn = b1
a21x1 + a22x2
+ a23x3 + ... + a2nxn = b2
a31x1 + a32x2
+ a33x3 + ... + a3nxn = b3
an1x1 + an2x2
+ an3x3 + ... + annxn = bn
donde aij son los
coeficientes, xi son las variables a calcular y bi los términos independietes.
El sistema anterior puede representarse de forma
compacta por:
Ax=b
donde :
|a11 a12
a13 ... a1n |
|a21
a22 a23 ... a2n |
A = |a31
a32 a33 ... a3n |
| |
|an1
an2 an3 ... ann |
|b1|
|b2|
b= |b3|
| |
|bn|
|x1|
|x2|
x= |x3|
| |
|xn|
La solución de este sistema
de ecuaciones esta dado por:
x = A\b
o de manera equivalente por
x = inv(A)*b
Ejemplo 1.
Para el circuito eléctrico
mostrado en la figura calcular el valor de la corriente en cada una de las
mallas.
Los valores de resistencia y de fuentes de voltaje en cada elemento son
R = [1, 1, 1, 2, 3, 1] y E = [10, 0, 5, 0, 0, 0]
Solución:
A=[1,0,0; 1,-1,0; 0,-1,0; 1,0,-1; 0,1,-1; 0, 0, 1];
R=[1, 1, 1, 2, 3, 1]';
E=[10,0,5,0,0,0]';
n = 6;
Relem = zeros(n, n);
for i=1:6,
Relem(i,i) = R(i), end;
Rmalla = A'*Relem*A
Emalla = A'*E
Imalla = Rmalla\Emalla
I = A*Imalla
Ejemplo 2.
Encontrar la línea recta que aproxima al conjunto de puntos dados por X
=[1, 2, 3, 4, 5, 6, 7] y Y = [2.5, 4.5, 6, 10, 11.2, 12, 14.3].
La ecuación de la línea recta esta dada por Yi = mXi
+ b, por lo tanto:
X1 m + b = Y1
X2 m + b = Y2
...
XN m +
b = YN
En forma matricial podemos escribir:
Lo cual es equivalente al sistema de ecuaciones Cp=y, donde :
y
dado que tenemos un sistema de ecuaciones sobredeterminado, donde el número
de ecuaciones es mayor que el número de incógnitas, no podemos calcular la
solución exacta. Si multiplicamos ambos
lados de la ecuación por CT
CTCp=CTy
Tenemos un sistema de ecuaciones que si podemos resolver. La solución la
calculamos haciendo
p = [CTC]-1
CTy
La solución utilizando Matlab es:
% Valores
iniciales
X =[1, 2, 3, 4, 5, 6, 7]';
Y = [2.5, 4.5, 6, 10, 11.2, 12,
14.3]';
% Grafica los
puntos dados
plot(X, Y, '*')
% Calcula la
matriz C
C = [X, ones(length(X),1)]
% Calculo de
los parametros
p = inv(C'*C)*C'*Y
% Calcula los
puntos de acuerdo con los parametros
Yc = C*p;
% Grafica la
linea calculada
hold on;
plot(X, Yc)