Problema 1

Desarrollar el algoritmo de sustitución regresiva con el que se puede resolver un sistema de ecuaciones lineales cuya matriz de coeficientes es triangular superior suponiendo que todos los elementos diagonales son distitnos de cero. Sugerencia: primero calcular \(x_N = b_N/a_{NN}\) y luego usar la regla.

\[x_k = \dfrac{b_k - \sum^{N}_{j=k+1}a_{kj}x{j}}{a_{kk}}\]

Use este algoritmo para resolver el sistema de ecuaciones lineal:

\[\begin{bmatrix} 4x_1 & - & x_2 & + & 2x_3 & + & 3x_4 & = & 20 \\ & - & 2x_2 & + & 7x_3 & - & 4x_4 & = & -7 \\ & & & & 6x_3 & + & 5x_4 & = & 4 \\ & & & & & & 3x_4 & = & 6 \end{bmatrix}\]
A = [4 -1 2 3;0 -2 7 -4;0 0 6 5;0 0 0 3];
b = [20;-7;4;6];
N = length(b);

% Solucion del ultimo valor
x(N) = b(N)/A(N,N);

% Algoritmo para demás soluciones
for i = N-1:-1:1,
    ind = N - i;
    x(i) = 0;
    for j = 1:ind
    x(i) = x(i) - A(i,i+j)*x(i+j);
    endfor
    x(i) = (b(i) + x(i))/A(i,i);
endfor
fprintf('Soluciones:')
disp(x)
## Soluciones:   3  -4  -1   2

Problema 2

Implementar un proceso de eliminación de Gauss que utilice parcial pivoting.

\[\begin{bmatrix} x_1 & + & 2x_2 & + & x_3 & + & 4x_4 & = & 13 \\ 2x_1 & & & + & 4x_3 & + & 3x_4 & = & 28 \\ 4x_1 & + & 2x_2 & + & 2x_3 & & x_4 & = & 20 \\ -3x_1& + & x_2 & + & 3x_3 & + & 2x_4 & = & 6 \end{bmatrix}\]
A = [1 2 1 4;
     2 0 4 3;
     4 2 2 1;
     -3 1 3 2];
     
b = [13;28;20;6];

% Matriz aumentada
Ab = [A b];
n = length(b);
[n m] = size(Ab);

disp('Matriz aumentada original: ')
disp(Ab)
disp(' ')

% Partial pivoting
for i = 1:n-1,
  for j = i+1:n,
    if abs(Ab(j,i)) > abs(Ab(i,i)) 
      T = Ab(j,:);
      Ab(j,:) = Ab(i,:);
      Ab(i,:) = T;
    endif
  endfor
endfor

disp('Matriz aumentada luego de partial pivoting: ')
disp(Ab)
disp(' ')

% Eliminacion de Gauss
for i = 1:n 
    for j = i+1:n 
        M = -Ab(j,i)/Ab(i,i); % Multiplicador       
        Ab(j,:) = Ab(j,:) + M*Ab(i,:);        
    endfor
endfor

disp('Matriz aumentada luego de eliminacion de Gauss: ')
disp(Ab)
disp(' ')


% Back-substitution
% Solucion del ultimo valor
x(n) = Ab(n,n+1)/Ab(n,n);
A = Ab(1:n,1:n);
b = Ab(:,m);
% Algoritmo para demás soluciones
for i = n-1:-1:1,
    ind = n - i;
    x(i) = 0;
      for j = 1:ind
        x(i) = x(i) - A(i,i+j)*x(i+j);
      endfor
    x(i) = (b(i) + x(i))/A(i,i);
endfor
fprintf('Soluciones:')
disp(x)
## Matriz aumentada original: 
##     1    2    1    4   13
##     2    0    4    3   28
##     4    2    2    1   20
##    -3    1    3    2    6
##  
## Matriz aumentada luego de partial pivoting: 
##     4    2    2    1   20
##     1    2    1    4   13
##     2    0    4    3   28
##    -3    1    3    2    6
##  
## Matriz aumentada luego de eliminacion de Gauss: 
##     4.0000    2.0000    2.0000    1.0000   20.0000
##          0    1.5000    0.5000    3.7500    8.0000
##          0         0    3.3333    5.0000   23.3333
##          0         0         0   -9.0000  -18.0000
##  
## Soluciones:   3.0000  -1.0000   4.0000   2.0000