MÉTODO DE JACOBI
En este método es necesario despejar la primera de las variables de la primera ecuación, la segunda variable de la segunda ecuación y así de una manera sucesiva.
"El sistema de aplicación Jacobi consiste en realizar una secuencia de transformaciones de tipo ortogonal, donde cada transformación es denominada como "Rotación de Jacobi, y corresponde a una rotación cuyo objetivo es eliminar un elemento de la matriz".
Se rota de manera sucesiva la matriz hasta que el error es lo suficientemente pequeño para ser considerada una matriz de tipo diagonal. Este método ademas de resolver sistemas de ecuaciones de tipo lineales solo es posible aplicarse a sistemas de tipo cuadrado, es decir, a sistemas que tengan tantas ecuaciones como numero de incógnitas.
PSEUDOCODE JACOBI
function iterjacobi
Imprimir(' ');
Imprimir(' METODO DE JACOBI: ');
Imprimir(' ');
Imprimir(' METODO ITERATIVO UTILIZADO PARA SOLUCIONAR UN SISTEMA DE ');
Imprimir(' ECUACIONES LINEALES. EN CADA ECUACION TfinREMOS VALORES ');
Imprimir(' INICIALES PARA HALLAR NUEVOS VALORES Y ASI MISMO CON ESTOS ');
Imprimir(' CALCULAR UNA NUEVA ITERACION. ');
Imprimir(' ');
A=Ingrese(' INGRESE LA MATRIZ DE COEFICIENTES A= ');
b=Ingrese(' INGRESE LA MATRIZ DE TERMINOS INDEPfinIENTES b= ');
x=Ingrese(' INGRESE EL VECTOR (EN COLUMNAS) CON LAS APROXIMACIONES
INICIALES= ');
tole=Ingrese(' INGRESE EL VALOR DE LA TOLERANCIA ');
detA=det(A);
if detA==0
Imprimir(' EL DETERMINANTE ES CERO, EL SISTEMA NO TIENE SOLUCION UNICA ')
fin
n=length(b);
D=diag(diag(A));
L=-tril(A,- 1);
U=-triu(A,1);
Mostrar('\n A= \n');
Imprimir(' ');
Imprimir(A)
Imprimir(' ');
Mostrar('\n LA MATRIZ D CALCULADA ES IGUAL A: \n')
Imprimir(' ');
Mostrar('\n D= \n');
Imprimir(' ');
Imprimir(D)
Mostrar('\n LA MATRIZ L CALCULADA ES IGUAL A: \n')
Imprimir(' ');
Mostrar('\n L= \n');
Imprimir(' ');
Imprimir(L)
Imprimir(' ');
Mostrar('\n LA MATRIZ U CALCULADA ES IGUAL A: \n')
Imprimir(' ');
Mostrar('\n U= \n');
Imprimir(' ');
Imprimir(U)
Imprimir(' ');
Mostrar('\n SOLUCION: \n')
Mostrar('\n LA MATRIZ DE TRANSICION DE JACOBI ES :\n')
Tj=inv(D)*(L+U);
Imprimir(' ');
Mostrar('\n Tj \n');
Imprimir(' ');
Imprimir(Tj);
respec=max(abs(eig(Tj)));
Imprimir(' ');
Mostrar(' EL RADIO ESPECTRAL ES IGUAL A %g \n',respec)
Imprimir(' ');
if respec>1
Imprimir(' EL RADIO ESPECTRAL ES MAYOR QUE 1 ')
Imprimir(' EL METODO NO CONVERGE ')
return
fin
Mostrar('\n EL VECTOR DE ITERACION DE JACOBI ES: \n')
Cj=inv(D)*b;
Imprimir(' ');
Mostrar('\n Cj \n');
Imprimir(' ');
Imprimir(Cj);
i=0;
err=tole+1;
while err>tole
xinic=Tj*x+Cj;
err=norm(xinic-x);
x=xinic;
i=i+1;
fin
Mostrar('\n SOLUCION HALLADA EN %g ITERACIONES: \n',i)
Imprimir(' ');
para in=1:n
Mostrar(' X%g=%g\n',in,xinic(in))
fin
Imprimir(' ');
Imprimir(' CON UN ERROR DE ');
Imprimir(' ');
Mostrar(' %g \n',err);
break
fin
function iterjacobi
clc
clear
format short
disp(' ');
disp(' METODO DE JACOBI: ');
disp(' ');
disp(' METODO ITERATIVO UTILIZADO PARA SOLUCIONAR UN SISTEMA DE ');
disp(' ECUACIONES LINEALES. EN CADA ECUACION TENDREMOS VALORES ');
disp(' INICIALES PARA HALLAR NUEVOS VALORES Y ASI MISMO CON ESTOS ');
disp(' CALCULAR UNA NUEVA ITERACION. ');
disp(' ');
A=input(' INGRESE LA MATRIZ DE COEFICIENTES A= ');
b=input(' INGRESE LA MATRIZ DE TERMINOS INDEPENDIENTES b= ');
x=input(' INGRESE EL VECTOR (EN COLUMNAS) CON LAS APROXIMACIONES INICIALES= ');
tole=input(' INGRESE EL VALOR DE LA TOLERANCIA ');
detA=det(A);
if detA==0
disp(' EL DETERMINANTE ES CERO, EL SISTEMA NO TIENE SOLUCION UNICA ')
end
n=length(b);
D=diag(diag(A));
L=-tril(A,-1);
U=-triu(A,1);
fprintf('\n A= \n');
disp(' ');
disp(A)
disp(' ');
fprintf('\n LA MATRIZ D CALCULADA ES IGUAL A: \n')
disp(' ');
fprintf('\n D= \n');
disp(' ');
disp(D)
fprintf('\n LA MATRIZ L CALCULADA ES IGUAL A: \n')
disp(' ');
fprintf('\n L= \n');
disp(' ');
disp(L)
disp(' ');
fprintf('\n LA MATRIZ U CALCULADA ES IGUAL A: \n')
disp(' ');
fprintf('\n U= \n');
disp(' ');
disp(U)
disp(' ');
fprintf('\n SOLUCION: \n')
fprintf('\n LA MATRIZ DE TRANSICION DE JACOBI ES :\n')
Tj=inv(D)*(L+U);
disp(' ');
fprintf('\n Tj \n');
disp(' ');
disp(Tj);
respec=max(abs(eig(Tj)));
disp(' ');
fprintf(' EL RADIO ESPECTRAL ES IGUAL A %g \n',respec)
disp(' ');
if respec>1
disp(' EL RADIO ESPECTRAL ES MAYOR QUE 1 ')
disp(' EL METODO NO CONVERGE ')
return
end
fprintf('\n EL VECTOR DE ITERACION DE JACOBI ES: \n')
Cj=inv(D)*b;
disp(' ');
fprintf('\n Cj \n');
disp(' ');
disp(Cj);
i=0;
err=tole+1;
while err>tole
xinic=Tj*x+Cj;
err=norm(xinic-x);
x=xinic;
i=i+1;
end
fprintf('\n SOLUCION HALLADA EN %g ITERACIONES: \n',i)
disp(' ');
for in=1:n
fprintf(' X%g=%g\n',in,xinic(in))
end
disp(' ');
disp(' CON UN ERROR DE ');
disp(' ');
fprintf(' %g \n',err);
return
end