Upload
higinio
View
49
Download
3
Embed Size (px)
Citation preview
Prácticas de Matemáticas con Mathematica .
Matemáticas II . Ingeniería Técnica Industrial Mecánica. Práctica nº 2. Resolución de sistemas lineales: Método
de Jacobi.
Departamento de Matemática Aplicada.E.P.S. de Zamora
Universidad de Salamanca
Veremos en esta práctica la utilización del Mathematica para la resolución de un sistema de ecuacioneslineales mediante el método de Jacobi.
Ejemplo 1: Calcule mediante el método de Jacobi la solución 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 aproximación inicial la dada por
x0 = 80, 0, 0<;
Indicamos otros datos necesarios en la ejecución del programa como el número de ecuaciones y la toleranciarequerida:
n = Length@x0D;
tol = 10^H-4L;
Si en la iteración n el valor de la solución es xn, entonces el valor de la siguiente iteración viene dado por lafórmula:
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<DComenzando con xn=x0, al ejecutar lo anterior resulta la primera aproximación
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
7, -
3
4,
6
7>
Si identificamos el valor obtenido con xn y seguimos iterando con la misma fórmula obtendremos las sucesi-vas aproximaciones proporcionadas por el método de Jacobi. Esto lo podemos incluir en una función dondehay que indicar el valor inicial, la tolerancia y el número máximo 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@[email protected] - bDDD<LEl criterio de paro lo podemos referir al error relativo: Max[Abs[(xn1-xn)/xn1]]>tolo al error absoluto: Max[Abs[xn1-xn]]>tol, y así, mientras estos errores sean mayores que la tolerancia seseguirá iterando (siempre que el número máximo de iteraciones se mantenga menor que maxiter).
Veamos la ejecución de la función anterior para distintos valores de los parámetros. La salida que se obtiene esel número de iteraciones realizado, el valor aproximado y una medida del error cometido obtenida como elmáximo de los valores absolutos al sustituir el valor obtenido en la expresión a.x-b (esto debería ser cero si elvalor obtenido es solución de la ecuación):
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>, 0.000250503>
Si utilizamos valores reales el formato de salida es con decimales:
metodoJacobi@80., 0, 0<, 10^H-8LD916, 81., -1., 1.<, 4.26355 ´ 10-8=Si queremos más precisión se los podemos indicar:
SetPrecision@metodoJacobi@80., 0, 0<, 10^H-16LD, 20D832.000000000000000000, 81.0000000000000000000,
-1.0000000000000000000, 1.0000000000000000000<, 0<Llegados a este punto podemos comprobar si los valores enteros que parecen ser la solución en realidad lo son:
a.81, -1, 1< - b
80, 0, 0<
2 Práctica de resolución de sistemas (Jacobi) (4-2011).nb
Ejemplo 2: Calcule mediante el método de Jacobi la solución 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 función en el problema anterior, sólo habrá que indicar quienes son la matriz decoeficientes y el vector de términos 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-4LD844, 8-0.260657, 1.49113, -0.365261<, 0.0000319472<Si tomamos la solución inicial más próxima a la solución verdadera necesitaremos menos iteraciones:
[email protected], 1.5, -0.3<, 10^H-4LD836, 8-0.260637, 1.49115, -0.365234<, 0.0000288222<Si pedimos demasiada precisión llegamos al número máximo de iteraciones por defecto antes de alcanzar laprecisión deseada:
[email protected], 1.5, -0.3<, 10^H-12LD9100, 8-0.260646, 1.49114, -0.365247<, 1.05952 ´ 10-11=Tendremos que aumentar el número máximo de iteraciones (si no se pone nada en la tercera variable se toma elvalor por defecto, 100, y si se le indica qué número máximo de iteraciones queremos, ese será el valor máximoque considere el programa):
[email protected], 1.5, -0.3<, 10^H-12L, 200D9115, 8-0.260646, 1.49114, -0.365247<, 3.28737 ´ [email protected], 1.5, -0.3<, 10^H-12L, 50D950, 8-0.260646, 1.49114, -0.365247<, 1.1276 ´ 10-6=
Práctica de resolución de sistemas (Jacobi) (4-2011).nb 3