You are on page 1of 3

Alumno:Guevara Barrera , Luis Alberto

GRUPO:A

CURSO:MATLAB

function x=jacobi(A,b,x0,tol,max)

A:Es la matriz del Sistema

B:Es el vector del Sistema es decir es una matriz columna

Tol:Es el error Maximo que esta permitido el programa hacer

n = length(b); Será el número de ecuaciones que tengamos

for k = 1:max; Significa que la iteración empieza desde la iteración 1 hasta la ultima iteración
que es cuando el error máximo <tol

for j=1:n , Servirá para que los resultados de la iteración anterior los ponga en la iteración
siguiente

x(j) = (b(j) - A(j,[1:j-1,j+1:n])*x0([1:j-1,j+1:n]))/A(j,j); Eso es lo que resulta de


despejar cada sistema de ecuaciones en el jacobi , y se pone así porque en el jacobi los
resultados obtenidos para el X1 ,X2,X3 de la iteración “n” se colocaran en X1 ,X2,X3 de la
iteración “n-1”

end

display(k), es para que nos muestre lo que obtuvo de cada iteración

errorabs = norm(x'- x0,inf);El programa hara sus calculos mientras se cumpla la condicion de que
la norma sea mayor que el error que hemos establecido

display(x)

x0=x'; Nosotros ingresamos una matriz fila y luego lo convertimos en una matriz columna
pause
if errorabs < tol , Significa que el programa se detiene para verificar la condición del “if” ,
entonces si cumple con el “if<tol” nos da la respuesta

break , Sino cumple se detiene y nos da el la solución hasta donde llego

end ,Cierre del bucle for

end, Cierre del bucle if

x=x';Nos da la solución aproximada pero en matriz columna


function x = gaussseidel(A,b,x0,tol,max)

A:Es la matriz del Sistema

B:Es el vector del Sistema es decir es una matriz columna

Tol:Es el error Maximo que esta permitido el programa hacer

n = length(b); Será el número de ecuaciones que tengamos

for k = 1:max , Significa que la iteración empieza desde la iteración 1 hasta la ultima iteración
que es cuando el error máximo <tol
for j=1:n, Esto es el pivote de una matriz es decir su diagonal principal tiene que ser 1 y va
desde uno hasta n porque la matriz tiene n filas
if j==1 ; Matlab comprobara si la diagonal de la matriz tiene valor 1

x(1) = (b(1) - A(1,2:n)*x0(2:n))/A(1,1); Para el X1 se obtendrá del x2 y el x3 pero


obtenidos del punto obtenido del sistema de ecuaciones o de la iteración anterior

elseif j==n

x(n) = (b(n) - A(n,1:n-1)*x(1:n-1)')/A(n,n); Aca como se vey a cambia porque el X2 se


obtendra apartir del ultimo x1 q acaba de hallar y del x3 que sera de la iteración anterior

else

x(j) = ( b(j) - A(j,1:j-1)*x(1:j-1)' - A(j,j+1:n)*x0(j+1:n) )/A(j,j); Aca como se vey a cambia


porque el X3 se obtendra apartir del ultimo x1 q acaba de hallar y del x2 que tambien acaba de
hallar en esas misma iteración

end

end

display(k) ,para que nos muestre el resultado de cada iteración

errorabs = norm(x'- x0,inf); El programa hara sus calculos mientras se cumpla la condicion de que
la norma sea mayor que el error que hemos establecido

display(x)

x0=x'; Nosotros ingresamos una matriz fila y luego lo convertimos en una matriz columna

pause
if errorabs < tol .Significa que el programa se detiene(pause) para verificar la condición del “if” ,
entonces si cumple con el “if<tol” nos da la respuesta

break, Sino cumple se detiene y nos da el la solución hasta donde llego


end , Cierre del bucle for

end, Cierre del bucle if

x=x'; Nos da la solución aproximada pero en matriz columna

You might also like