DEBER ALGEBRA LINEAL MATLAB
1. SUMA Y RESTA DE MATRICES
% Definir las matrices
A = [3 5;3 8];
B = [5 9;7 2];
% Suma de matrices
C=A+B
% Resta de matrices
D=A–B
2. Multiplicación de una matriz por un escalar:
% Definir la matriz y el escalar
A = [8 3 5 ; 2 5 3];
B = 3;
% Multiplicación de la matriz por el escalar
B=B*A
3. Multiplicación entre dos matrices.
% Definir las matrices
A = [2 5 7; 8 2 9; 2 6 6];
B = [9 8 7; 5 2 7; 9 8 4];
% Multiplicación de las matrices
C=A*B
4. Transpuesta de una matriz
% Definir la matriz
A = [3 7 5; 4 5 6; 2 5 7];
% Calcular la transpuesta de la matriz
A_transpuesta = transpose(A); % O también se puede usar A'
% Mostrar la matriz original y su transpuesta
disp("Matriz original:");
disp(A)
disp("Transpuesta de la matriz:");
disp(A_transpuesta)
5. Determinante de una matriz
% Definir la matriz
A = [9 -2 6; -5 8 2; 2 5 7];
% Calcular el determinante de la matriz
determinante = det(A);
% Mostrar el resultado
disp("El determinante de la matriz es:")
disp(determinante)
6. Inversa de una matriz: Función inv() de Matlab
% Calcular el determinante de la matriz
determinante = det(A);
% Verificar si el determinante no es igual a cero
if determinante ~= 0
% Calcular la inversa de la matriz
inversa = inv(A);
7. Inversa de una matriz: Método de Gauss-Jordan
% Definir la matriz
A = [3 5 6 ; 0 1 4; - 4 4 5 ];
% Calcular el determinante de la matriz
determinante = det(A);
% Verificar si el determinante no es igual a cero
if determinante ~= 0
% Obtener el tamaño de la matriz
[m, n] = size(A);
% Agregar la matriz identidad al lado derecho de A
A_aumentada = [A eye(m)];
% Mostrar la matriz inicial
disp("Matriz Inicial:");
disp(rats(A_aumentada));
% Aplicar el método de Gauss-Jordan
for i = 1:m
% Dividir la fila i por el pivote
pivot = A_aumentada(i, i);
A_aumentada(i, :) = A_aumentada(i, :) / pivot;
% Reducir a cero las otras filas
for j = 1:m
if j ~= i
factor = A_aumentada(j, i);
A_aumentada(j, :) = A_aumentada(j, :) ( factor )
A_aumentada(i, :) ;
end
end
% Mostrar la matriz actualizada en cada paso
disp("Paso " + num2str(i) + ":");
disp(rats(A_aumentada));
end
% Extraer la matriz inversa de A_aumentada
inversa = A_aumentada(:, n+1:end);
% Mostrar el resultado
disp("La matriz inversa es:");
disp(rats(inversa));
else
% Mostrar un mensaje de error si el determinante es igual a cero
disp( “La matriz no tiene inversa debido a que su determinante es igual a
cero”. );
end
8. Inversa de una matriz: Método de la matriz adjunta
% Definir la matriz
A = [2 5 6 ; 0 1 4; -5 5 7];
% Calcular el determinante de la matriz
determinante = det(A);
% Mostrar el determinante de la matriz original
disp("El determinante de la matriz original es:");
disp(determinante);
% Verificar si el determinante no es igual a cero
if determinante ~= 0
% Obtener el tamaño de la matriz
[m, n] = size(A);
% Calcular la matriz de cofactores
cofactores = zeros(m, n);
for i = 1:m
for j = 1:n
% Calcular el cofactor para cada elemento de A
cofactores(i, j) = (-1)^(i+j) * det(A([1:i-1 i+1:end], [1:j-1
j+1:end]));
end
end
% Mostrar la matriz de cofactores
disp("La matriz de cofactores es:");
disp(rats(cofactores));
% Calcular la adjunta de la matriz
adjunta = cofactores';
% Mostrar la adjunta de la matriz
disp("La adjunta de la matriz es:");
disp(rats(adjunta));
% Calcular la matriz inversa dividiendo la adjunta por el determinante
inversa = adjunta / determinante;
% Mostrar el resultado
disp("La matriz inversa es:");
disp(rats(inversa));
else
% Mostrar un mensaje de error si el determinante es igual a cero
disp("La matriz no tiene inversa debido a que su determinante es igual a
cero.");
enD
% Definir la matriz de coeficientes A
A = [7 8 9 ; 2 -1 3; 3 7 1 ];
% Definir el vector de términos independientes b
b = [5; 4; 8];
% Combinar la matriz de coeficientes A y el vector de términos independientes
matriz_aumentada = [A, b];
% Mostrar la matriz aumentada inicial
disp("Matriz aumentada inicial:");
disp(matriz_aumentada);
disp("---------------------------");
% Obtener el número de filas y columnas de la matriz aumentada
[num_filas, num_columnas] = size(matriz_aumentada);
% Aplicar el método de Gauss
for pivot_fila = 1:num_filas
% Paso 1: Selección del pivote
pivot = matriz_aumentada(pivot_fila, pivot_fila);
% Paso 2: Verificar si el pivote es cero y realizar pivoteo parcial
if pivot == 0
% Buscar una fila no nula para intercambiar
for fila = pivot_fila+1:num_filas
if matriz_aumentada(fila, pivot_fila) ~= 0
% Intercambiar filas
matriz_aumentada([pivot_fila, fila], :) =
matriz_aumentada([fila, pivot_fila], :);
break;
end
end
% Mostrar la matriz aumentada después del pivoteo parcial
disp("Matriz aumentada después del pivoteo parcial:");
disp(rats(matriz_aumentada));
disp("---------------------------");
% Actualizar el pivote
pivot = matriz_aumentada(pivot_fila, pivot_fila);
end
% Paso 3: Eliminación hacia abajo
for fila = pivot_fila+1:num_filas
factor = matriz_aumentada(fila, pivot_fila) / pivot;
matriz_aumentada(fila, :) = matriz_aumentada(fila, :) - factor *
matriz_aumentada(pivot_fila, :);
end
% Mostrar la matriz aumentada después de la eliminación hacia abajo
disp("Matriz aumentada después de la eliminación hacia abajo:");
disp(rats(matriz_aumentada));
disp("---------------------------");
end
% Verificar si la última fila contiene solo ceros a excepción del último
elemento
if all(matriz_aumentada(end, 1:end-1) == 0) && matriz_aumentada(end, end) ~=
disp("El sistema de ecuaciones no tiene solución.");
else
% Verificar si hay filas de ceros
num_filas_ceros = sum(all(matriz_aumentada(:, 1:end-1) == 0, 2));
if num_filas_ceros > 0
disp("El sistema de ecuaciones tiene infinitas soluciones.");
else
% Aplicar el método de sustitución hacia atrás para obtener las
soluciones
soluciones = zeros(num_filas, 1);
for fila = num_filas:-1:1
soluciones(fila) = (matriz_aumentada(fila, end) -
matriz_aumentada(fila, 1:end-1) * soluciones) / matriz_aumentada(fila, fila);
end
disp("El sistema de ecuaciones tiene solución única.");
disp("Solución única:");
disp(rats(soluciones));
end
end
[Link]ón de un sistema de ecuaciones lineales: Método de Gauss-Jordan
% Definir la matriz de coeficientes A
A = [5 6 9; 2 -9 4; 1 5 3];
% Definir el vector de términos independientes b
b = [5; 4; 8];
% Combinar la matriz de coeficientes A y el vector de términos independientes
matriz_aumentada = [A, b];
% Mostrar la matriz aumentada inicial
disp("Matriz aumentada inicial:");
disp(matriz_aumentada);
disp("---------------------------");
% Obtener el número de filas y columnas de la matriz aumentada
[num_filas, num_columnas] = size(matriz_aumentada);
% Aplicar el método de Gauss-Jordan
for pivot_fila = 1:num_filas
% Paso 1: Selección del pivote
pivot = matriz_aumentada(pivot_fila, pivot_fila);
% Paso 2: Verificar si el pivote es cero y realizar pivoteo parcial
if pivot == 0
% Buscar una fila no nula para intercambiar
for fila = pivot_fila+1:num_filas
if matriz_aumentada(fila, pivot_fila) ~= 0
% Intercambiar filas
matriz_aumentada([pivot_fila, fila], :) =
matriz_aumentada([fila, pivot_fila], :);
break;
end
end
% Verificar si se llegó a una fila de ceros en la parte inferior
if all(matriz_aumentada(pivot_fila+1:end, pivot_fila) == 0)
% Mostrar la matriz aumentada final en forma escalonada reducida
(rref)
disp("Matriz aumentada final (rref):");
disp(rats(matriz_aumentada));
% Verificar si la última columna también es cero
if all(matriz_aumentada(end, 1:end) == 0)
disp("El sistema de ecuaciones tiene infinitas soluciones.");
else
disp("El sistema de ecuaciones no tiene solución.");
end
return;
end
% Mostrar la matriz aumentada después del pivoteo parcial
disp("Matriz aumentada después del pivoteo parcial:");
disp(rats(matriz_aumentada));
disp("---------------------------");
% Actualizar el pivote
pivot = matriz_aumentada(pivot_fila, pivot_fila);
end
% Paso 3: Hacer que el pivote sea igual a 1
matriz_aumentada(pivot_fila, :) = matriz_aumentada(pivot_fila, :) /
pivot;
% Mostrar la matriz aumentada después de hacer el pivote igual a 1
disp("Matriz aumentada después de hacer el pivote igual a 1:");
disp(rats(matriz_aumentada));
disp("---------------------------");
% Paso 4: Eliminación hacia abajo y hacia arriba
for fila = 1:num_filas
if fila ~= pivot_fila
factor = matriz_aumentada(fila, pivot_fila);
matriz_aumentada(fila, :) = matriz_aumentada(fila, :) - factor *
matriz_aumentada(pivot_fila, :);
end
end
% Mostrar la matriz aumentada después de la eliminación hacia abajo y
hacia arriba
disp("Matriz aumentada después de la eliminación hacia abajo y hacia
arriba:");
disp(rats(matriz_aumentada));
disp("---------------------------");
end
% Verificar si la última fila contiene solo ceros a excepción del último
elemento
if all(matriz_aumentada(end, 1:end-1) == 0) && matriz_aumentada(end, end) ~=
% Mostrar la matriz aumentada final en forma escalonada reducida (rref)
disp("Matriz aumentada final (rref):");
disp(rats(matriz_aumentada));
disp("El sistema de ecuaciones no tiene solución.");
else
% Mostrar la matriz aumentada final en forma escalonada reducida (rref)
disp("Matriz aumentada final (rref):");
disp(rats(matriz_aumentada));
disp("El sistema de ecuaciones tiene solución única.");
% Extraer las soluciones
soluciones = matriz_aumentada(:, end);
disp("Soluciones:");
disp(rats(soluciones));
end