Está en la página 1de 3

Prcticas de Matemticas con

Mathematica .
Matemticas II . Ingeniera Tcnica Industrial Mecnica.
Prctica n 2. Resolucin de sistemas lineales: Mtodo
de Jacobi.

Departamento de Matemtica Aplicada.


E.P.S. de Zamora
Universidad de Salamanca
Veremos en esta prctica la utilizacin del Mathematica para la resolucin de un sistema de ecuaciones
lineales mediante el mtodo de Jacobi.
Ejemplo 1: Calcule mediante el mtodo de Jacobi la solucin aproximada del sistema
7x+3y+z=5
x+4y=-3
2x+y-7z=-6
Primero introducimos los datos en el formato del Mathematica

a = 887, 3, 1<, 81, 4, 0<, 82, 1, -7<<; b = 85, -3, -6<;


y consideramos como aproximacin inicial la dada por

x0 = 80, 0, 0<;

Indicamos otros datos necesarios en la ejecucin del programa como el nmero de ecuaciones y la tolerancia
requerida:

n = Length@x0D;
tol = 10^H-4L;
Si en la iteracin n el valor de la solucin es xn, entonces el valor de la siguiente iteracin viene dado por la
frmula:

xn1 = Table@
Hb@@iDD - HSum@a@@i, jDD xn@@jDD, 8j, 1, i - 1<D + Sum@a@@i, jDD
xn@@jDD, 8j, i + 1, n<DLL a@@i, iDD, 8i, 1, n<D
Comenzando con xn=x0, al ejecutar lo anterior resulta la primera aproximacin

Prctica de resolucin de sistemas (Jacobi) (4-2011).nb

xn = x0;
xn1 = Table@
Hb@@iDD - HSum@a@@i, jDD xn@@jDD, 8j, 1, i - 1<D + Sum@a@@i, jDD
xn@@jDD, 8j, i + 1, n<DLL a@@i, iDD, 8i, 1, n<D
5
3 6
: ,- , >
7
4 7

Si identificamos el valor obtenido con xn y seguimos iterando con la misma frmula obtendremos las sucesivas aproximaciones proporcionadas por el mtodo de Jacobi. Esto lo podemos incluir en una funcin donde
hay que indicar el valor inicial, la tolerancia y el nmero mximo de iteraciones (por defecto ponemos 100):

metodoJacobi@x0_, tol_, maxiter_: 100D := Hxn = x0;


Do@xn1@@iDD = Hb@@iDD - HSum@a@@i, jDD xn@@jDD, 8j, 1, i - 1<D +
Sum@a@@i, jDD xn@@jDD, 8j, i + 1, n<DLL
a@@i, iDD, 8i, 1, n<D; cont = 1;
While@HMax@Abs@Hxn1 - xnL xn1DD > tolL && cont < maxiter,
cont++; xn = xn1;
Do@xn1@@iDD = Hb@@iDD - HSum@a@@i, jDD xn@@jDD, 8j, 1, i - 1<D +
Sum@a@@i, jDD xn@@jDD, 8j, i + 1, n<DLL a@@i, iDD,
8i, 1, n<DD; 8cont, xn1, N@Max@Abs@a.xn - bDDD<L

El criterio de paro lo podemos referir al error relativo: Max[Abs[(xn1-xn)/xn1]]>tol


o al error absoluto: Max[Abs[xn1-xn]]>tol, y as, mientras estos errores sean mayores que la tolerancia se
seguir iterando (siempre que el nmero mximo de iteraciones se mantenga menor que maxiter).
Veamos la ejecucin de la funcin anterior para distintos valores de los parmetros. La salida que se obtiene es
el nmero de iteraciones realizado, el valor aproximado y una medida del error cometido obtenida como el
mximo de los valores absolutos al sustituir el valor obtenido en la expresin a.x-b (esto debera ser cero si el
valor obtenido es solucin de la ecuacin):

metodoJacobi@80, 0, 0<, 10^H-4LD


:9, :

5 165 186 949


5 165 261 696

,-

5 903 082 055

5 903 156 224

10 330 438 495


10 330 523 392

Si utilizamos valores reales el formato de salida es con decimales:

>, 0.000250503>

metodoJacobi@80., 0, 0<, 10^H-8LD

916, 81., -1., 1.<, 4.26355 10-8=


Si queremos ms precisin se los podemos indicar:

SetPrecision@metodoJacobi@80., 0, 0<, 10^H-16LD, 20D

832.000000000000000000, 81.0000000000000000000,
-1.0000000000000000000, 1.0000000000000000000<, 0<

Llegados a este punto podemos comprobar si los valores enteros que parecen ser la solucin en realidad lo son:

a.81, -1, 1< - b


80, 0, 0<

Prctica de resolucin de sistemas (Jacobi) (4-2011).nb

Ejemplo 2: Calcule mediante el mtodo de Jacobi la solucin aproximada del sistema de ecuaciones
x+0.3636 y+0.273 z=0.18182
0.75 x+y+0.125 z=1.25
0.5 x+0.5 y+z=0.25
Como ya tenemos definida la funcin en el problema anterior, slo habr que indicar quienes son la matriz de
coeficientes y el vector de trminos independientes:

a = 881, 0.3636 , 0.273 <, 80.75 , 1, 0.125 <, 80.5 , 0.5 , 1<<;
b = 80.18182, 1.25, 0.25<;
metodoJacobi@80., 0, 0<, 10^H-4LD

844, 8-0.260657, 1.49113, -0.365261<, 0.0000319472<

Si tomamos la solucin inicial ms prxima a la solucin verdadera necesitaremos menos iteraciones:

metodoJacobi@8-0.2, 1.5, -0.3<, 10^H-4LD

836, 8-0.260637, 1.49115, -0.365234<, 0.0000288222<

Si pedimos demasiada precisin llegamos al nmero mximo de iteraciones por defecto antes de alcanzar la
precisin deseada:

metodoJacobi@8-0.2, 1.5, -0.3<, 10^H-12LD

9100, 8-0.260646, 1.49114, -0.365247<, 1.05952 10-11=

Tendremos que aumentar el nmero mximo de iteraciones (si no se pone nada en la tercera variable se toma el
valor por defecto, 100, y si se le indica qu nmero mximo de iteraciones queremos, ese ser el valor mximo
que considere el programa):

metodoJacobi@8-0.2, 1.5, -0.3<, 10^H-12L, 200D

9115, 8-0.260646, 1.49114, -0.365247<, 3.28737 10-13=


metodoJacobi@8-0.2, 1.5, -0.3<, 10^H-12L, 50D

950, 8-0.260646, 1.49114, -0.365247<, 1.1276 10-6=

También podría gustarte