Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sist Sol Maple
Sist Sol Maple
Problema 4.
Primeras 3 iteraciones del método de Jacobi.
> restart;
with(linalg):
A:=matrix(3,3,[8,1,0,2,5,0,1,0,4]);
b:=[4,3,3];
N:=matrix(3,3,[8,0,0,0,5,0,0,0,4]);
P:=evalm(N-A);
N1:=inverse(N);
M:=evalm(N1&*P);
c:=evalm(N1&*b);
`*******conversión float *****`;
M:=evalf(evalm(M));
c:=evalf(evalm(c));
`****** método iterativo ******`;
xx.0:=[0,0,0];
n:=2;
for i from 0 to n do
`************* iteración `,i+1,`************`;
xx.(i+1):=evalm(M&*(xx.i)+c);
erb.(i+1):=evalm(xx.(i+1)-xx.i);
nerb.(i+1):=norm(erb.(i+1),infinity);
od;
⎡8 0 0⎤
⎢ ⎥
N := ⎢ 0 5 0⎥
⎢ ⎥
⎣0 0 4⎦
⎡0 -1 0⎤
⎢ ⎥
P := ⎢-2 0 0⎥
⎢ ⎥
⎣-1 0 0⎦
⎡ 1 ⎤
⎢ 0 0 ⎥⎥
⎢ 8
⎢ ⎥
⎢ 1 ⎥
N1 := ⎢⎢ 0 0 ⎥⎥
⎢ 5 ⎥
⎢ ⎥
⎢ 1 ⎥
⎢⎢ 0 0 ⎥⎥
⎣ 4 ⎦
⎡ -1 ⎤
⎢ 0 0⎥⎥
⎢ 8
⎢ ⎥
⎢ -2 ⎥
M := ⎢⎢ 0 0⎥⎥
⎢ 5 ⎥
⎢ ⎥
⎢ -1 ⎥
⎢⎢ 0 0⎥⎥
⎣ 4 ⎦
⎡1 3 3⎤
c := ⎢⎢ , , ⎥⎥
⎣2 5 4⎦
2
nm :=
5
3
erb1 :=
4
Número de iteraciones para asegurar 8 decimales exactos. Si tomamos como vector incial el vector nulo, el valor de la primera
iteración coincide con c y el vector de error estimado en la primera iteración también coincide con c.
> n:='n';
ineq:=nm^n/(1-nm)*erb1<=0.5*10^(-8);
plot(ineq,n=12..30,thickness=3);
Page 7
n := n
5 ⎛2⎞ n
ineq := ⎜⎜ ⎟⎟ ≤ .5000000000 10-8
4 ⎝5⎠
0.8
0.6
0.4
0.2
0 12 14 16 18 20 22 24 26 28 30
n
El gráfico nos muestra que la desigualdad es cierta para n mayor que 21, necesitamos 22 iteraciones.
Calculamos el valor de las iteraciones.
> Digits:=14;
A:=matrix(3,3,[8,1,0,2,5,0,1,0,4]);
b:=[4,3,3];
N:=matrix(3,3,[A[1,1],0,0,0,A[2,2],0,0,0,A[3,3]]);
P:=evalm(N-A);
N1:=inverse(N);
M:=evalm(N1&*P);
c:=evalm(N1&*b);
`*******conversión float *****`;
M:=evalf(evalm(M));
c:=evalf(evalm(c));
`****** método iterativo ******`;
xx.0:=[0,0,0];
n:=21;
for i from 0 to n do
`************* iteración `,i+1,`************`;
xx.(i+1):=evalm(M&*(xx.i)+c);
erb.(i+1):=evalm(xx.(i+1)-xx.i);
nerb.(i+1):=norm(erb.(i+1),infinity);
od:
evalm(xx22);
Digits := 14
⎡8 1 0⎤
⎢ ⎥
A := ⎢ 2 5 0⎥
⎢ ⎥
⎣1 0 4⎦
b := [ 4, 3, 3 ]
⎡8 0 0⎤
⎢ ⎥
N := ⎢ 0 5 0⎥
⎢ ⎥
⎣0 0 4⎦
⎡0 -1 0⎤
⎢ ⎥
P := ⎢-2 0 0⎥
⎢ ⎥
⎣-1 0 0⎦
⎡ 1 ⎤
⎢ 0 0 ⎥⎥
⎢ 8
⎢ ⎥
⎢ 1 ⎥
N1 := ⎢⎢ 0 0 ⎥⎥
⎢ 5 ⎥
⎢ ⎥
⎢ 1 ⎥
⎢⎢ 0 0 ⎥⎥
⎣ 4 ⎦
Page 8
⎡ -1 ⎤
⎢ 0 0⎥⎥
⎢ 8
⎢ ⎥
⎢ -2 ⎥
M := ⎢⎢ 0 0⎥⎥
⎢ 5 ⎥
⎢ ⎥
⎢ -1 ⎥
⎢⎢ 0 0⎥⎥
⎣ 4 ⎦
⎡1 3 3⎤
c := ⎢⎢ , , ⎥⎥
⎣2 5 4⎦
*******conversión float *****
⎡ 0 -.12500000000000 0⎤
⎢ ⎥
M := ⎢-.40000000000000 0 0⎥
⎢ ⎥
⎣-.25000000000000 0 0⎦
c := [ .50000000000000, .60000000000000, .75000000000000 ]
****** método iterativo ******
xx0 := [ 0, 0, 0 ]
n := 21
[ .44736842105263, .42105263157894, .63815789473684 ]
Calculamos el error.
> er22:=evalm(sf-xx22);
ner22:=norm(er22,infinity);
er22 := [ .4737 10-10, .2106 10-10, -.3684 10-10 ]
ner22 := .4737 10-10
Ejercicio 6-7
Vectores obtenidos en las 10 primeras iteraciones del método de Gauss-Seidel. Usamos vectores en lugar de matrices columna.
> restart;
with(linalg):
Digits:=14;
A:=matrix(3,3,[8,1,0,2,5,0,1,0,4]);
b:=[4,3,3];
N:=matrix(3,3,[8,0,0,2,5,0,1,0,4]);
P:=evalm(N-A);
N1:=inverse(N);
M:=evalm(N1&*P);
c:=evalm(N1&*b);
`*******conversión float *****`;
M:=evalf(evalm(M));
c:=evalf(evalm(c));
`****** método iterativo ******`;
xx.0:=[0,0,0];
n:=9;
for i from 0 to n do
`************* iteración`,i+1,`************`;
xx.(i+1):=evalm(M&*(xx.i)+c);
erb.(i+1):=evalm(xx.(i+1)-xx.i);
nerb.(i+1):=norm(erb.(i+1),infinity);
od;
Warning, new definition for norm
Warning, new definition for trace
Digits := 14
⎡8 1 0⎤
⎢ ⎥
A := ⎢ 2 5 0⎥
⎢ ⎥
⎣1 0 4⎦
b := [ 4, 3, 3 ]
⎡8 0 0⎤
⎢ ⎥
N := ⎢ 2 5 0⎥
⎢ ⎥
⎣1 0 4⎦
⎡0 -1 0⎤
⎢ ⎥
P := ⎢0 0 0⎥
⎢ ⎥
⎣0 0 90⎦
Page
⎡ 1 ⎤
⎢ 0 0 ⎥⎥
⎢ 8
⎢ ⎥
⎢ -1 1 ⎥
N1 := ⎢⎢ 0 ⎥⎥
⎢ 20 5 ⎥
⎢ ⎥
⎢ -1 1 ⎥
⎢⎢ 0 ⎥⎥
⎣ 32 4 ⎦
⎡ -1 ⎤
⎢ 0 0⎥⎥
⎢ 8
⎢ ⎥
⎢ 1 ⎥
M := ⎢⎢ 0 0⎥⎥
⎢ 20 ⎥
⎢ ⎥
⎢ 1 ⎥
⎢⎢ 0 0⎥⎥
⎣ 32 ⎦
⎡1 2 5⎤
c := ⎢⎢ , , ⎥⎥
⎣2 5 8⎦
*******conversión float *****
⎡0 -.12500000000000 0⎤
⎢ ⎥
M := ⎢0 .050000000000000 0⎥
⎢ ⎥
⎣0 .031250000000000 0⎦
c := [ .50000000000000, .40000000000000, .62500000000000 ]
****** método iterativo ******
xx0 := [ 0, 0, 0 ]
n := 9
************* iteración, 1, ************
xx1 := [ .50000000000000, .40000000000000, .62500000000000 ]
erb1 := [ .50000000000000, .40000000000000, .62500000000000 ]
nerb1 := .62500000000000
************* iteración, 2, ************
xx2 := [ .45000000000000, .42000000000000, .63750000000000 ]
erb2 := [ -.05000000000000, .02000000000000, .01250000000000 ]
nerb2 := .05000000000000
************* iteración, 3, ************
xx3 := [ .44750000000000, .42100000000000, .63812500000000 ]
erb3 := [ -.00250000000000, .00100000000000, .00062500000000 ]
nerb3 := .00250000000000
************* iteración, 4, ************
xx4 := [ .44737500000000, .42105000000000, .63815625000000 ]
erb4 := [ -.00012500000000, .00005000000000, .00003125000000 ]
nerb4 := .00012500000000
************* iteración, 5, ************
xx5 := [ .44736875000000, .42105250000000, .63815781250000 ]
erb5 := [ -.625000000 10-5, .250000000 10-5, .156250000 10-5 ]
nerb5 := .625000000 10-5
************* iteración, 6, ************
xx6 := [ .44736843750000, .42105262500000, .63815789062500 ]
erb6 := [ -.31250000 10-6, .12500000 10-6, .7812500 10-7 ]
nerb6 := .31250000 10-6
************* iteración, 7, ************
xx7 := [ .44736842187500, .42105263125000, .63815789453125 ]
erb7 := [ -.1562500 10-7, .625000 10-8, .390625 10-8 ]
nerb7 := .1562500 10-7
************* iteración, 8, ************
xx8 := [ .44736842109375, .42105263156250, .63815789472656 ]
Page 10
erb8 := [ -.78125 10-9, .31250 10-9, .19531 10-9 ]
nerb8 := .78125 10-9
************* iteración, 9, ************
xx9 := [ .44736842105469, .42105263157813, .63815789473633 ]
erb9 := [ -.3906 10-10, .1563 10-10, .977 10-11 ]
nerb9 := .3906 10-10
************* iteración, 10, ************
xx10 := [ .44736842105273, .42105263157891, .63815789473682 ]
erb10 := [ -.196 10-11, .78 10-12, .49 10-12 ]
nerb10 := .196 10-11
Cálculo del error exacto.
> s:=linsolve(A,b);
sf:=evalf(evalm(s));
er10:=evalm(xx10-sf);
ner10:=norm(er10,infinity);
⎡ 17 8 97 ⎤
s := ⎢⎢ , , ⎥⎥
⎣ 38 19 152 ⎦
sf := [ .44736842105263, .42105263157895, .63815789473684 ]
er10 := [ .10 10-12, -.4 10-13, -.2 10-13 ]
ner10 := .10 10-12
Ejercicio 8
> restart;
with(linalg):
Warning, new definition for norm
Warning, new definition for trace
Calculamos la matriz M del método iterativo.
> A:=matrix(3,3,[4,1,a,1,4,1,1,1,4]);
N:=matrix(3,3,[4,0,0,0,4,0,0,0,4]);
P:=evalm(N-A);
N1:=inverse(N);
M:=evalm(N1&*P);
>
⎡4 1 a⎤
⎢ ⎥
A := ⎢ 1 4 1⎥
⎢ ⎥
⎣1 1 4⎦
⎡4 0 0⎤
⎢ ⎥
N := ⎢ 0 4 0⎥
⎢ ⎥
⎣0 0 4⎦
⎡0 -1 −a⎤
⎢ ⎥
P := ⎢-1 0 -1 ⎥
⎢ ⎥
⎣-1 -1 0⎦
⎡ 1 ⎤
⎢ 0 0 ⎥⎥
⎢ 4
⎢ ⎥
⎢ 1 ⎥
N1 := ⎢⎢ 0 0 ⎥⎥
⎢ 4 ⎥
⎢ ⎥
⎢ 1 ⎥
⎢⎢ 0 0 ⎥⎥
⎣ 4 ⎦
⎡ -1 1 ⎤
⎢ 0 − a ⎥⎥
⎢ 4 4
⎢ ⎥
⎢ -1 -1 ⎥
M := ⎢⎢ 0 ⎥
⎥
⎢ 4 4 ⎥
⎢ ⎥
⎢ -1 -1 ⎥
⎢⎢ 0 ⎥⎥
⎣ 4 4 ⎦
Exigimos que la norma de M sea inferior a 1
> ineq:=norm(M,infinity)<1;
⎛1 1 1⎞
ineq := max⎜⎜ + a , ⎟⎟ < 1
⎝ 4 4 11 2 ⎠
Page
> solve(ineq,a);
RealRange( Open( -3 ), Open( 3 ) )
Por lo tanto, si a toma valores entre -3 y 3, podemos asegurar que el método es convergente.
En el siguiente programa usamos la cota de un paso para detener las iteraciones.
> restart;
with(linalg):
Digits:=10;
a:=-1;
A:=matrix(3,3,[4,1,a,1,4,1,1,1,4]);
b:=[1,2,3];
N:=matrix(3,3,[4,0,0,0,4,0,0,0,4]);
P:=evalm(N-A);
N1:=inverse(N);
M:=evalm(N1&*P);
c:=evalm(N1&*b);
`*******conversión float *****`;
M:=evalf(evalm(M));
c:=evalf(evalm(c));
nm:=norm(M,infinity);
`****** método iterativo ******`;
xx.0:=[0,0,0];
t:=3;#nombre de decimals exactes
ermax:=0.5*10^(-t); # error máximo
n:=10; #número máximo de iteraciones
for i from 0 to n do
`*************`,i+1,`************`;
xx.(i+1):=evalm(M&*(xx.i)+c);
erb.(i+1):=evalm(xx.(i+1)-xx.i);
nerb.(i+1):=norm(erb.(i+1),infinity);
fer.(i+1):=nm/(1-nm)*nerb.(i+1);#usamos la cota en un paso para acotar el error.
if fer.(i+1)<ermax then
xs:=xx.(i+1); #La solució es guarda amb el nom xs
print(`***** precisión alcanzada ****`);
print(` solución =`, xs);
break;
fi;
od;
Warning, new definition for norm
Warning, new definition for trace
Digits := 10
a := -1
⎡4 1 -1⎤
⎢ ⎥
A := ⎢1 4 1⎥
⎢ ⎥
⎣1 1 4⎦
b := [ 1, 2, 3 ]
⎡4 0 0⎤
⎢ ⎥
N := ⎢ 0 4 0⎥
⎢ ⎥
⎣0 0 4⎦
⎡0 -1 1⎤
⎢ ⎥
P := ⎢-1 0 -1⎥
⎢ ⎥
⎣-1 -1 0⎦
⎡ 1 ⎤
⎢ 0 0 ⎥⎥
⎢ 4
⎢ ⎥
⎢ 1 ⎥
N1 := ⎢⎢ 0 0 ⎥⎥
⎢ 4 ⎥
⎢ ⎥
⎢ 1 ⎥
⎢⎢ 0 0 ⎥⎥
⎣ 4 ⎦
Page 12
⎡ -1 1 ⎤
⎢ 0 ⎥
⎢ 4 4 ⎥⎥
⎢
⎢ -1 -1 ⎥⎥
M := ⎢⎢ 0 ⎥
⎢ 4 4 ⎥
⎢ ⎥
⎢ -1 -1 ⎥
⎢⎢ 0 ⎥⎥
⎣ 4 4 ⎦
⎡1 1 3⎤
c := ⎢⎢ , , ⎥⎥
⎣4 2 4⎦
*******conversión float *****
⎡ 0 -.2500000000 .2500000000 ⎤
⎢ ⎥
M := ⎢-.2500000000 0 -.2500000000⎥
⎢ ⎥
⎣-.2500000000 -.2500000000 0 ⎦
c := [ .2500000000, .5000000000, .7500000000 ]
nm := .5000000000
****** método iterativo ******
xx0 := [ 0, 0, 0 ]
t := 3
ermax := .0005000000000
n := 10
*************, 1, ************
xx1 := [ .2500000000, .5000000000, .7500000000 ]
erb1 := [ .2500000000, .5000000000, .7500000000 ]
nerb1 := .7500000000
fer1 := .7500000000
*************, 2, ************
xx2 := [ .3125000000, .2500000000, .5625000000 ]
erb2 := [ .0625000000, -.2500000000, -.1875000000 ]
nerb2 := .2500000000
fer2 := .2500000000
*************, 3, ************
xx3 := [ .3281250000, .2812500000, .6093750000 ]
erb3 := [ .0156250000, .0312500000, .0468750000 ]
nerb3 := .0468750000
fer3 := .04687500000
*************, 4, ************
xx4 := [ .3320312500, .2656250000, .5976562500 ]
erb4 := [ .0039062500, -.0156250000, -.0117187500 ]
nerb4 := .0156250000
fer4 := .01562500000
*************, 5, ************
xx5 := [ .3330078125, .2675781250, .6005859375 ]
erb5 := [ .0009765625, .0019531250, .0029296875 ]
nerb5 := .0029296875
fer5 := .002929687500
*************, 6, ************
xx6 := [ .3332519532, .2666015625, .5998535156 ]
erb6 := [ .0002441407, -.0009765625, -.0007324219 ]
nerb6 := .0009765625
fer6 := .0009765625000
*************, 7, ************
xx7 := [ .3333129883, .2667236328, .6000366211 ]
erb7 := [ .0000610351, .0001220703, .0001831055 ]
nerb7 := .0001831055
Page 13
fer7 := .0001831055000
***** precisión alcanzada ****
solución =, [ .3333129883, .2667236328, .6000366211 ]
Observa que en el programa anterior, la cota de error coincide con el error estimado, eso se debe a que la norma de M tiene el valor
0.5.
Error exacto.
> `****** solución y error exacto *****`;
s:=linsolve(A,b);
sf:=evalf(evalm(s));
er:=evalm(sf-xs);
ner:=norm(er,infinity);
****** solución y error exacto *****
⎡1 4 3⎤
s := ⎢⎢ , , ⎥⎥
⎣ 3 15 5 ⎦
sf := [ .3333333333, .2666666667, .6000000000 ]
er := [ .0000203450, -.0000569661, -.0000366211 ]
ner := .0000569661
Método de Gauss-Seidel
> restart;
with(linalg):
A:=matrix(3,3,[4,1,a,1,4,1,1,1,4]);
N:=matrix(3,3,[4,0,0,1,4,0,1,1,4]);
P:=evalm(N-A);
N1:=inverse(N);
M:=evalm(N1&*P);
nM:=norm(M,infinity);
solve(nM<1);
Warning, new definition for norm
Warning, new definition for trace
⎡4 1 a⎤
⎢ ⎥
A := ⎢ 1 4 1⎥
⎢ ⎥
⎣1 1 4⎦
⎡4 0 0⎤
⎢ ⎥
N := ⎢ 1 4 0⎥
⎢ ⎥
⎣1 1 4⎦
⎡0 -1 −a⎤
⎢ ⎥
P := ⎢0 0 -1 ⎥
⎢ ⎥
⎣0 0 0⎦
⎡ 1 ⎤
⎢ 0 0 ⎥⎥
⎢ 4
⎢ ⎥
⎢ -1 1 ⎥
N1 := ⎢⎢ 0 ⎥⎥
⎢ 16 4 ⎥
⎢ ⎥
⎢ -3 -1 1 ⎥
⎢⎢ ⎥⎥
⎣ 64 16 4 ⎦
⎡ -1 1 ⎤
⎢0 − ⎥ a
⎢ 4 4 ⎥
⎢ ⎥
⎢ 1 1 1 ⎥⎥
M := ⎢⎢ 0 a− ⎥
⎢ 16 16 4 ⎥
⎢ ⎥
⎢ 3 3 1 ⎥
⎢⎢ 0 a + ⎥⎥
⎣ 64 64 16 ⎦
⎛1 1 1 1 1 3 3 1 ⎞
nM := max⎜⎜ + a , + a− , + a+ ⎟⎟
⎝4 4 16 16 4 64 64 16 ⎠
RealRange( Open( -3 ), Open( 3 ) )
Si a toma valores entre -3 y 3 podemos asegurar que el método es convergente.
> restart;
with(linalg):
a:=-1;
A:=matrix(3,3,[4,1,a,1,4,1,1,1,4]);
Page 14
b:=[1,2,3];
N:=matrix(3,3,[4,0,0,1,4,0,1,1,4]);
P:=evalm(N-A);
N1:=inverse(N);
M:=evalm(N1&*P);
c:=evalm(N1&*b);
`*******conversión float *****`;
M:=evalf(evalm(M));
c:=evalf(evalm(c));
nm:=norm(M,infinity);
`****** método iterativo ******`;
xx.0:=[0,0,0];
t:=3;#nombre de decimals exactes
ermax:=0.5*10^(-t); # error máximo
n:=10; #número máximo de iteraciones
for i from 0 to n do
`*************`,i+1,`************`;
xx.(i+1):=evalm(M&*(xx.i)+c);
erb.(i+1):=evalm(xx.(i+1)-xx.i);
nerb.(i+1):=norm(erb.(i+1),infinity);
fer.(i+1):=nm/(1-nm)*nerb.(i+1);#usamos la cota en un paso para acotar el error.
if fer.(i+1)<ermax then
xs:=xx.(i+1); #La solució es guarda amb el nom xs
print(`***** precisión alcanzada ****`);
print(` solución =`, xs);
break;
fi;
od;
Warning, new definition for norm
Warning, new definition for trace
a := -1
⎡4 1 -1⎤
⎢ ⎥
A := ⎢1 4 1⎥
⎢ ⎥
⎣1 1 4⎦
b := [ 1, 2, 3 ]
⎡4 0 0⎤
⎢ ⎥
N := ⎢ 1 4 0⎥
⎢ ⎥
⎣1 1 4⎦
⎡0 -1 1⎤
⎢ ⎥
P := ⎢0 0 -1⎥
⎢ ⎥
⎣0 0 0⎦
⎡ 1 ⎤
⎢ 0 0 ⎥⎥
⎢ 4
⎢ ⎥
⎢ -1 1 ⎥
N1 := ⎢⎢ 0 ⎥⎥
⎢ 16 4 ⎥
⎢ ⎥
⎢ -3 -1 1 ⎥
⎢⎢ ⎥⎥
⎣ 64 16 4 ⎦
⎡ -1 1 ⎤
⎢ 0 ⎥
⎢ 4 4 ⎥⎥
⎢
⎢ 1 -5 ⎥⎥
M := ⎢⎢ 0 ⎥
⎢ 16 16 ⎥
⎢ ⎥
⎢ 3 1 ⎥
⎢⎢ 0 ⎥⎥
⎣ 64 64 ⎦
⎡ 1 7 37 ⎤
c := ⎢⎢ , , ⎥⎥
⎣ 4 16 64 ⎦
*******conversión float *****
⎡0 -.2500000000 .2500000000 ⎤
⎢ ⎥
M := ⎢0 .06250000000 -.3125000000 ⎥
⎢ ⎥
⎣0 .04687500000 .01562500000⎦
Page 15
c := [ .2500000000, .4375000000, .5781250000 ]
nm := .5000000000
****** método iterativo ******
xx0 := [ 0, 0, 0 ]
t := 3
ermax := .0005000000000
n := 10
*************, 1, ************
xx1 := [ .2500000000, .4375000000, .5781250000 ]
erb1 := [ .2500000000, .4375000000, .5781250000 ]
nerb1 := .5781250000
fer1 := .5781250000
*************, 2, ************
xx2 := [ .2851562500, .2841796875, .6076660156 ]
erb2 := [ .0351562500, -.1533203125, .0295410156 ]
nerb2 := .1533203125
fer2 := .1533203125
*************, 3, ************
xx3 := [ .3308715820, .2653656006, .6009407043 ]
erb3 := [ .0457153320, -.0188140869, -.0067253113 ]
nerb3 := .0457153320
fer3 := .04571533200
*************, 4, ************
xx4 := [ .3338937760, .2662913799, .5999537110 ]
erb4 := [ .0030221940, .0009257793, -.0009869933 ]
nerb4 := .0030221940
fer4 := .003022194000
*************, 5, ************
xx5 := [ .3334155828, .2666576765, .5999816852 ]
erb5 := [ -.0004781932, .0003662966, .0000279742 ]
nerb5 := .0004781932
fer5 := .0004781932000
***** precisión alcanzada ****
solución =, [ .3334155828, .2666576765, .5999816852 ]
Vemos que la precisión exigida se alcanza en 5 pasos. A continuación calculamos el error.
> `****** solución y error exacto *****`;
s:=linsolve(A,b);
sf:=evalf(evalm(s));
er:=evalm(sf-xs);
ner:=norm(er,infinity);
****** solución y error exacto *****
⎡1 4 3⎤
s := ⎢⎢ , , ⎥⎥
⎣ 3 15 5 ⎦
sf := [ .3333333333, .2666666667, .6000000000 ]
er := [ -.0000822495, .89902 10-5, .0000183148 ]
ner := .0000822495
Ejercicio 9
matriz del método
> a:='a';
N:=matrix(2,2,[1,0,-a,1]);
P:=matrix(2,2,[0,a,0,0]);
N1:=inverse(N);
M:=evalm(N1&*P);
nM:=norm(M,infinity);
Page 16
solve(nM<1);
a := a
⎡1 0⎤
N := ⎢ ⎥
⎣−a 1⎦
⎡0 a⎤
P := ⎢ ⎥
⎣0 0⎦
⎡1 0⎤
N1 := ⎢ ⎥
⎣a 1⎦
⎡0 a⎤
M := ⎢ ⎥
⎣0 a2 ⎦
nM := max( a 2, a )
RealRange( Open( -1 ), Open( 1 ) )
Si tomamos -1<a<1 , podemos asegurar la convergencia del método.
Ejercicio 12
> with(linalg):
M:=matrix(3,3,[0,-0.1,-0.2,0.1,0,0.2,0.1,-0.1,0.3]);
⎡0 -.1 -.2⎤
⎢ ⎥
M := ⎢.1 0 .2 ⎥
⎢ ⎥
⎣.1 -.1 .3 ⎦
> nm:=norm(M,infinity);
nm := .5
> e0:=[1,-1,2];
n0:=norm(e0,infinity);
e0 := [ 1, -1, 2 ]
n0 := 2
> cota:=nm^5*n0;
cota := .06250
> e5:=evalm(M^5&*e0);
e5 := [ .00045, -.00067, -.00064 ]
> n5:=norm(e5,infinity);
n5 := .00067
>
Page 17