Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Trabajo3 - Metodos Iterativos
Trabajo3 - Metodos Iterativos
a) Resolver:
* Creacin de la matriz function [A,B]=sistema(n) format short A(1,1)=4; A(n,n)=4; for i=1:n for j=1:n if i==j A(i,j)=4; elseif j==(i-1) A(i,j)=-1; elseif j==(i+1) A(i,j)=-1; elseif j==(i+4) A(i,j)=-1; elseif j==(i-4) A(i,j)=-1; end end end B=[1.902207,1.051143,1.175689,3.480083,0.819600,-0.264419,0.412789,1.175689,0.91337,-0.150209,0.264419,1.051143,1.966694,0.913337,0.819600,1.902207]; * Resultado
function X=Jacobi1(XO,tol,max) % Datos de entrada % XO: vector inicial de orden nx1 % tol: tolerancia % max: nmero mximo de iteraciones % % Datos de salida % X: matriz de orden nx1 con la aproximacion a la solucion de AX=B. % format long [A,B]=sistema(16); n=length(B); c=0; for k=1:max % Construccion de las siguientes iteraciones for j=1:n X(j)=(B(j)-A(j,[1:j-1,j+1:n])*XO([1:j-1,j+1:n]))/A(j,j); end % Condicin de paro ea=abs(norm(X'-XO)); er=ea/(norm(X)+eps); if(ea<tol)|(er<tol) disp('Se alcanzo la tolerancia con exito en la iteracion') disp(k) disp('y la solucion aproximada es') X=X'; c=1; break else XO=X'; end end % Cuando no cumple la condicin de paro if c==0 disp('El metodo no cumple el criterio de paro propuesto para') dis(max) disp('iteraciones.') end
* Ejecucin del cdigo - En primer lugar, creamos el vector XO, el cual contiene el vector inicial nx1
function X=GSeidel(XO,tol,max) % Datos de entrada % XO: vector inicial de orden nx1 % tol: tolerancia % max: nmero mximo de iteraciones % % Datos de salida % X: matriz de orden nx1 con la aproximacion a la solucion de AX=B. % format long [A,B]=sistema(16); n=length(B); c=0; for k=1:max % Construccion de las siguientes iteraciones for j=1:n if j==1 X(1)=(B(1)-A(1,2:n)*XO(2:n))/A(1,1); elseif j==n X(n)=(B(n)-A(n,1:n-1)*(X(1:n-1))')/A(n,n); else X(j)=(B(j)-A(j,1:j-1)*(X(1:j-1))'-A(j,j+1:n)*XO(j+1:n))/A(j,j); end end % condicin de paro ea=abs(norm(X'-XO)); er=ea/(norm(X)+eps); if(ea<tol)|(er<tol) disp('Se alcanzo la tolerancia con exito en la iteracion') disp(k); disp('y la solucion aproximada es') X=X'; c=1; break else XO=X'; end end % no cumplimiento de la condicion de paro if c==0 disp('El metodo no cumple el criterio de paro propuesto para') disp(max) disp('iteraciones.') end end
* Ejecucin del cdigo - En primer lugar, creamos el vector XO, el cual contiene el vector inicial nx1
function X=metSOR(XO,w,tol,max) % Datos de entrada % XO: vector inicial de orden nx1 % tol: tolerancia % max: nmero mximo de iteraciones % w: valor de omega % % Datos de salida % X: matriz de orden nx1 con la aXOroximacion a la solucion de AX=B. % format long [A,B]=sistema(16); n=length(B); c=0; for k=1:max % Construccion de las siguientes iteraciones for j=1:n if j==1 X(1)=(1-w)*XO(j)+ w*(B(1)-A(1,2:n)*XO(2:n))/A(1,1); elseif j==n X(n)=(1-w)*XO(j)+ w*(B(n)-A(n,1:n-1)*(X(1:n-1))')/A(n,n); else X(j)=(1-w)*XO(j)+ w*(B(j)-A(j,1:j-1)*(X(1:j-1))' ... -A(j,j+1:n)*XO(j+1:n))/A(j,j); end end %condicion de XOaro ea=abs(norm(X'-XO)); er=ea/(norm(X)+eps); if(ea<tol)|(er<tol) disp('Se alcanzo la tolerancia con exito en la iteracion') disp(k) disp('y la solucion aproximada es') XO=X'; c=1; break else XO=X'; end end if c==0 disp('El metodo no cumple el criterio de paro propuesto para') disp(max) disp('iteraciones.') end
* Ejecucin del cdigo - En primer lugar, creamos el vector XO, el cual contiene el vector inicial nx1
Jacobi
Gauss-Seidel
SOR
81
45
24
Solucin
1.3989 1.4893 1.7434 2.4813 2.2041 1.7639 1.8272 2.4976 2.3529 1.7996 1.7166 2.1535 1.9971 1.5152 1.3507 1.3516
1.3989 1.4894 1.7434 2.4813 2.2042 1.7640 1.8273 2.4977 2.3530 1.7997 1.7167 2.1536 1.9971 1.5152 1.3508 1.3516
1.3990 1.4894 1.7434 2.4814 2.2043 1.7641 1.8273 2.4978 2.3531 1.7997 1.7168 2.1536 1.9972 1.5153 1.3508 1.3517