Anda di halaman 1dari 9

practica4sr.

nb 1

Apellidos y Nombre:

Práctica 4ª: RESOLUCIÓN DE SISTEMAS


LINEALES. METODOS ITERATIVOS.

Normas vectoriales y normas matriciales. Número de condición


de una matriz.
Cuando se construye una sucesión de vectores aproximación de la solución de un sistema lineal, para estudiar la
convergencia interesa medir la distancia entre las dos últimas aproximaciones, y para medir esta distancia es
necesario utilizar el concepto de norma de un vector . Tanto en el estudio del condicionamiento de un sistema de
ecuaciones lineales cuando se resuelve mediante métodos directos, como en el estudio de la convergencia de los
métodos iterativos para la resolución de sistemas lineales, es necesario el concepto de norma de una matriz.En la
versión 4 de Mathematica, dentro del paquete <<LinearAlgebra´MatrixManipulations´, los comandos Vector-
Norm y MatrixNorm permiten obtener normas vectoriales y matriciales.El comando VectorNorm requiere que el
argumento sea un vector de números aproximados (con . decimal o dados por N[]). En la versión 5 de Mathemat-
ica no es necesario cargar ningún paquete. El comando Norm proporciona, por defecto, la norma euclídea de un
vector o de una matriz.

Por otra parte, algunos sistemas son muy sensibles a los errores de redondeo y el vector solución puede ser
bastante inexacto. En este caso se dice que el sistema es inestable o que está mal condicionado. En este tipo de
sistemas lo que suele ocurrir es que pequeños cambios en los coeficientes o en los términos independientes dan

K(A) = »»A»» . »»A-1 »»


lugar a cambios apreciables en la solución. El número de condición de una matriz A se define como :

y sirve para tener una medida del condicionamiento de una matriz. Dentro del mismo paquete <<LinearAlgebra´-
MatrixManipulations´, el comando MatrixConditionNumber permite obtener el número de condición de una
matriz. Por defecto proporciona la norma del máximo.

i
j
−1.63 y i −1.05 2.53 y
j 7.23 z j z
Ejemplo 1º.-
z j 0.56 −1.78 z
Sea el vector b = j
j
j
z
z
z
j
j
j
z
z
z
3.02
j z j z
k { k −0.54 1.47 {
, y la matriz : A = 4.33 . Hallar las tres normas vectoriales

de b: ∞b¥1 , ∞b¥2 y ∞b¥¶ . Idem para la matriz A y para su


−3.38 −0.83
inversa. Calcular el número de condición de la matriz
utilizando la norma del máximo.

A = {{3.02,-1.05,2.53},
{4.33,0.56,-1.78},{-0.83,-0.54,1.47}};MatrixForm[A]

b = 8−1.63, 7.23, −3.38<; MatrixForm@bD

Norm@b, ∞D
practica4sr.nb 2

Norm@b, 1D

‚ Abs@b@@iDDD
3

i=1

Norm@b, 2D

$%%%%%%%%%%%%%%%%
⁄ b@@iDD %%%%%%%%
3
2
i=1

Norm@AD

Max@Eigenvalues@A.Transpose@ADDD ^ .5

Norm@A, ∞D

MaxA9‚ Abs@A@@1, kDDD, ‚ Abs@A@@2, kDDD, ‚ Abs@A@@3, kDDD=E


3 3 3

k=1 k=1 k=1

Norm@A, 1D

MaxA9‚ Abs@A@@k, 1DDD, ‚ Abs@A@@k, 2DDD, ‚ Abs@A@@k, 3DDD=E


3 3 3

k=1 k=1 k=1

Norm@Inverse@ADD

Norm@Inverse@AD, 1D

Norm@Inverse@AD, ∞D

<< LinearAlgebra`MatrixManipulation`

m = MatrixConditionNumber@AD
practica4sr.nb 3

LUDecomposition@AD

i
j
1 y
z
Ejemplo 2º.-
j
j 2 z
z
Sea el sistema A. x = b, siendo A y b la matriz y vector respectivamente del ejemplo anterior. Sea x = j j z
z
j z
k −1 {
la

i
j
0.88 y
j −2.34 z z
solución exacta y xè = jj
j
z
z
z
j z
k −2.66 {
la solución aproximada. Calcular el error relativo y el residuo relativo. compro-

bar que el error relativo está acotado superiormente por el producto del residuo relativo por el nº de condición de la
matriz, e inferiormente por el cociente del residuo relativo entre el nº de condición de la matriz.

xe = 81., 2., −1.<; xa = 8.88, −2.34, −2.66<;


e = xe − xa; errorel = Norm@eD ê Norm@xeD

resi = b − A.xa; resirelat = Norm@resiD ê Norm@bD

errorel
m ∗ resirelat

resirelat ê m
errorel

El método de Jacobi

i
j
a11 a12 .. a1 n y i x1 y i b1 y
z
z j z j z
Sea el sistema :
j
j j x2 z j b2 z
j
j 21 a22 .. a2 n z z
z
j
j
j
z
z
z
j
j
j
z
z
z
j
j z
z j
j z
z j
j z
j
j .. .. .. .. z z j .. z j .. z
z
j z j z j z
j z j z
a
. =
k an1 an2 .. ann { k xn { k bn {

.Jbi − ‚ −‚ N
Para resolverlo mediante el método de Jacobi se implementa el siguiente proceso iterativo:
xHkL aij xHk−1L aij xHk−1L
i−1 n
i = 1
aii j j
j=1 k=i+1
El superíndice (k) correponde a la etapa de iteración.

i
j
4 −1 1 y
z i
j
7 y
z
Ejemplo 3º.
j
j z
z j
j −21 z
z
Consideremos el sistema de ecuaciones : A . x = b, siendo A = j j 4 −8 1 z z , y b = jj z
z
j z j z
k −2 −1 5 { k 15 {
. Realizar 5

j y
i z
j
j 2zz
iteraciones del mdo. de Jacobi partiendo de la aproximación inicial : x0 = j
j z .Calcular, en cada iteración, el
j z
1
z
k2{
error absoluto y relativo.

A = 884, −1, 1<, 84, −8, 1<, 8−2, −1, 5<<;


practica4sr.nb 4

b = 87, −21, 15<; x0 = 81., 2, 2<; xn = x0;

DoADoAxn@@iDD =
i
j y
z
j
j A@@i, kDD ∗ x0@@kDDz
z
j ‚ ‚ z ì A@@i, iDD,
i−1 3

k {
b@@iDD − A@@i, kDD ∗ x0@@kDD −

8i, 3<E; Print@xnD; erabs = Norm@xn − x0D; errel = erabs ê Norm@xnD;


k=1 k=i+1

Print@"El error relativo es: ", errelD; x0 = xn, 8iter, 5<E


Print@"El error absoluto es: ", erabsD;

El método de Gauss-Seidel

i a11 a12 .. a1 n z
j y j y j
i x1 z y
i b1 z
Considerando el mismo sistema anterior:
j
j z
z j
j z
z j
j b2 z
z
j
j z
z j
j z
z j
j z
z
j
j z j
z j z z j j z
z
j
j z
z j z j z
j j z
z j z j j z z
a21 a 22 .. a 2 n x2
. =
k an1 an2 .. ann { k xn { k bn {
.. .. .. .. .. ..

.Jbi − ‚ −‚ N
Para resolverlo mediante el método de Gauss-Seidel se implementa el siguiente proceso iterativo:
xHkL aij xHkL aij xHk−1L
i−1 n
i = 1
aii j j
j=1 k=i+1
El superíndice (k) correponde a la etapa de iteración.

Ejemplo 4º.
Consideremos el sistema de ecuaciones del ejemplo anterior . Realizar 5 iteraciones del mdo. de Gauss-Seidel
partiendo de la misma aproximación inicial .Calcular el error absoluto y relativo.

A = 884, −1, 1<, 84, −8, 1.<, 8−2, −1, 5<<;

b = 87, −21, 15<; x0 = 81., 2, 2<; xn = x0;

DoADoAxn@@iDD =
i
j y
z
j
j z ì A@@i, iDD,
jb@@iDD − ‚ A@@i, kDD ∗ xn@@kDD − ‚ A@@i, kDD ∗ x0@@kDDz z
i−1 3

k {
8i, 3<E; Print@xnD; erabs = Norm@xn − x0D; errel = erabs ê Norm@xnD;
k=1 k=i+1

Print@"El error relativo es: ", errelD; x0 = xn, 8iter, 5<E


Print@"El error absoluto es: ", erabsD;

La condición necesaria y suficiente para que un método iterativo de resolución de sistemas lineales sea conver-
gente es que el radio espectral de la matriz de paso sea menor que la unidad. (Se recuerda que el radio espectral de
una matriz es igual al mayor de los valores popios de la matriz en módulo o valor absoluto) con Mathematica
resulta muy sencillo calcular el radio espectral de una matriz utilizando el comando Eigenvalues.
Sea el sistema :
practica4sr.nb 5

i a11 a12
j
.. a1 n y i x1 y
z j z j y
i b1 z i a11 a12
j
.. a1 n y
z
j
j .. a2 n z
z j
j x2 z
z j
j z
z j
j a21 a22 .. a2 n z
z
j
j z
z j
j z
z j
j z , siendo A = j z
j
j z.j z j z z j
j z
z.
j
j .. .. z z
z
j
j z
z j
j z
z j
j .. .. z z
j j z
z j z j z
j z j
j z
z
a21 a22 b2
=
k an1 an2 .. ann { k xn { k bn { k an1 an2 .. ann {
.. .. .. .. .. ..

i
j
a11 0 .. 0 y
z i
j
.. 0 y
z
Definamos las matrices :
j
j z
z j
j .. 0 zz
j 0 a22 .. 0 z j −a21 z
D= j z , L=j z
0 0
j
j z
z j
j z
j
j
j
z
z
z
j
j
j .. .. z
z
z
z
0
j z j z
y

k 0 0 .. ann { k −an1 −an2 .. 0 {


.. .. .. .. .. ..

i
j
0 −a12 .. −a1 n y
z
j
j .. −a2 n z
z
j
j z
z
U=j j z
z
j
j z
z
j z
0 0
j z
.

k0 0 {
.. .. .. ..
0 ..
Entonces la matriz de paso del método de Jacobi es :
T j = D-1 .HL + UL

TG = HD - LL-1 .U
y la del método de Gauss-Seidel :

Ejemplo 5º.
Calcular las matrices de paso de los métodos de Jacobi y Gauss-Seidel de los ejemplos anteriores,y sus respectivos
radios espectrales,comprobando que son menores que la unidad.

d = Table@A@@i, iDD, 8i, 3<D; diag = DiagonalMatrix@dD

L = −A; Do@L@@i, jDD = 0, 8i, 3<, 8j, i, 3<D; L

U = −A; Do@U@@i, jDD = 0, 8i, 3<, 8j, i<D; U

Para el método de Jacobi T = D-1 .HL + UL:

Tj = Inverse@diagD.HL + UL; MatrixForm@TjD

Max@Abs@Eigenvalues@TjDDD

Para el método de Gauss-Seidel T = HD - LL-1 .U :

Tg = Inverse@diag − LD.U; MatrixForm@TgD

Max@Abs@Eigenvalues@TgDDD
practica4sr.nb 6

Resolución de sistemas no lineales. El método de Newton. El


comando FindRoot.
Sea el sistema 9 , y sea J(x,y) la matriz Jacobiana de f1 y f2 respecto a x e y. Sea Pk Hxk , yk L la
f1Hx, yL = 0
f2Hx, yL = 0

i f1HPk L zy
1º.- Evaluar F(Pk ) = jj
aproximación de la solución correspondiente a la etapa k. Los pasos correspondientes a la siguiente etapa son:
z.
k f2HPk L {
2º.- Calcular la matriz jacobiana en Pk , J(Pk ).
3º.- Resolver el sistema lineal : J(Pk ).Dp = - F( J(Pk ).)
4º.- Calcular la siguiente aproximación : Pk+1 = Pk + Dp .

Ejemplo 6º :
Sea el sistema :
9 2
x2 - y = 0.2
,
y - x = 0.3
Representar gráficamente para obtener la aproximación inicial correspondiente a la raiz del primer cuadrante, y
calcular 3 iteraciones del método de Newton .

f@x_, y_D = x ^ 2 − y − .2; g@x_, y_D = y ^ 2 − x − .3;

<< Graphics`ImplicitPlot`

graf1 = ImplicitPlot@f@x, yD 0, 8x, −2, 2<D

graf2 = ImplicitPlot@g@x, yD 0, 8x, −2, 2<D

Show@graf1, graf2D

jacob@x_, y_D = 88∂x f@x, yD, ∂y f@x, yD<, 8∂x g@x, yD, ∂y g@x, yD<<;
indep@x_, y_D = 8−f@x, yD, −g@x, yD<;

Print@MatrixForm@jacob@x, yDD, " ", MatrixForm@indep@x, yDDD

x0 = 1.2; y0 = 1.2; itermax = 3;


practica4sr.nb 7

Do@Print@"Jacob= ", MatrixForm@jacob@x0, y0DD,


" ", "Term.In= ", MatrixForm@indep@x0, y0DDD;
sol = LinearSolve@jacob@x0, y0D, indep@x0, y0DD;
Print@"Delta= ", MatrixForm@solDD;
x0 = x0 + sol@@1DD; y0 = y0 + sol@@2DD;
Print@"K= ", k, " x= ", x0, " y= ", y0D, 8k, itermax<D

à El comando FindRoot
Como en el caso de una sola ec. no lineal, el comando FindRoot nos permite obtener una solución numérica
(aproximada) de un sistema de ecuaciones no lineales partiendo de una aproximación inicial. Una de sus ociones
nos permite especificar el nº máximo de iteraciones a realizar. Si se alcanza el nº máximo de iteraciones sin haber
obtenido la solución el comando FindRoot nos devuelve la aproximación calculada en la última etapa que se puede
utilizar como aproximación inicial de un nuevo comando FindRoot.
Es conveniente realizar una representación gráfica, cuando sea posible, para obtener una buena aproximación
inicial.
El comando FindRoot puede resolver ec. no lineales en variable compleja. Para ello solo es preciso incluir la
unidad imaginaria I en la aproximación inicial. Por ejemplo:

FindRoot[Sin[x] == 2, {x, 1}]

FindRoot[Sin[x] == 2, {x, I}]

Para resolver el sistema anterior utilizando el comando FindRoot:

FindRoot@8f@x, yD 0, g@x, yD 0<, 8x, 1.2<, 8y, 1.2<D

Ejercicios
1º.- El sistema lineal :
0.04 x1 + 0.01 x2 - 0.01 x3 = 0.06
0.20 x1 + 0.50 x2 - 0.20 x3 = 0.30

tiene como solución exacta xe = 81.827586, 0.6551724, 1.965517< y como solución aproximada xa =
x1 + 2 x2 + 4 x3 = 11

81.8, 0.64, 1.9<. Calcular , para las normas l1 , l2 y l¶ :


a) la norma del vector error absoluto y del vector residuo.
b) el error relativo y el residuo relativo.
c) la norma y el número de condición de la matriz de coeficientes, comprobando que cualquiera de las
normas es mayor que el radio espectral de la matriz.

mat = 88.04, .01, −.01<, 8.2, .5, −.2<, 81, 2, 4<<; b = 8.06, .3, 11<;
xe = 81.827586, 0.6551724, 1.965517<; xa = 81.8, .64, 1.9<;
practica4sr.nb 8

i
j
−1 11 −1 3 y i x y i 25 y
z j j z i
j
0y
z
z
2º.- Resolver el sistema :
j
j z
z j
j z
z j
j z
z j
j 0zz
j
j 2 −1 10 −1 z z j
j yzz j
j −11 z
z j
j z
z
j
j z
z j
j z
z j
j z
z j
j z
z
j
j z
z j
j z
z j
j z
z j
j z
z
j
j z j z j
z j z
z j z
j z
. = , partiendo de la aproximación inicial x0= y

k 0 3 −1 8 { k t { k 15 { k0{
10 −1 2 0 z 6 0

utilizando el método de Jacobi , con un error absoluto menor que 10-3 y fijando un número máximo de iteraciones
Nmax = 20.

mat = 88−1, 11, −1, 3<, 82, −1, 10, −1<, 810., −1, 2, 0<, 80, 3, −1, 8<<;

ind = 825, −11, 6, 15<; x0 = 80, 0, 0, 0<; eps = .001; Nmax = 20; n = 4;

i
j
0 y ixy i1y
zj z j z
3º.-Dado el siguiente sistema :
j 0 z j j 0z
j
j z
z j
j yzz
z j
j z
z
−2 1
j z j z j z
0
j
j z
z j
j z
z j
j z
z
j
j z
z j z j
j z
j zj j z z j j z z
1 −2 1
j z z
. =

k 0 1 −2 { k t { k 0 {
0 1 −2 1 z 0

i
j
0.7 y
z
j 0.5 z
0
j
j z
z
j
j
Realizar 4 etapas del método de Gauss-Seidel partiendo de la aproximación inicial : j z
z
j z
z
j
j z
z
j z
. Comprobar la

k 0.1 {
0.3

convergencia del método.

En lugar de trabajar con la matriz, introducimos las ecuaciones directamente (se ahorra espacio de memoria)

i
j
0 y
z
j
j z
j 0 zz
−2 1 0
j
mat = j z
z
j
j z;
j 1 −2 1 zz
−2
j z
1 1
j z
k 0 1 −2 {
0
0

x0 = .7; y0 = .5; z0 = .3; t0 = .1;

4º- Resolver el siguiente sistema mediante los métodos de Jacobi y Gauss-Seidel para n=10, 50 y 100. Obtener las
soluciones con un error menor que 10-3 utilizando la norma del máximo. Comparar el nº de iteraciones requeridos
por cada método.
practica4sr.nb 9

i y i
j y
z
i
j 0 yz j 1
j z
z j
j z
z
j
j z j
z j z
z j
j z
z
1

j j z
0 z j z j z
x
j z j z j z
− 1

j − 12 z j z
1 0 0 . . 2

j
j z
z j z j
j z
z
z j z
2

j j z j z
x2
j z
0
j
j 0 0 zz j
j z
z j
j z
z

j z
1

j z j z
1 0 . .
j
j z
z j
j z
z j z
x3
j z
2 0
j
j z
z j
j z
z j
j z
z
j
j . zz j z j z
− −

z j z
1 1

j z
1 0 . .
j z j z j z
.
j j z j z
2 2

j
j . zz j z j z
z j z j z
=
j z j z
. .
j j z j z
. . . . . . .

j
j 1 z
z j
j z
z j
j z
z
j
j −2 zz j
j z
z j
j z
z
.

j z j z
. . . . . . .

j
j z j
z j
j
z
z
z j
j
j
z
z
z
1 { j z j z
− 12 .

j z
0 . . 0 1 .

k 0 k xn { k {
xn−1 0
. . . 0 − 1
2
0

5º.- Resolver el siguiente sistema no lineal primero utilizando el método de Newton y a continuación con el
comando FindRoot:

x2 - 81 Hy + 0.2L2 + senHzL + 1.06 = 0


3 x - cos(y.z) - 1/2 = 0

10 p-3
e-xy + 20 z + ÅÅÅÅÅÅÅÅ
ÅÅÅÅÅÅÅÅÅ = 0
Tomar como aproximación inicial x1H0L = 0.1, x2H0L = 0.1 y x3H0L = - 0.1
3

f1@x_, y_, z_D = 3 x − Cos@y ∗ zD − .5;


f2@x_, y_, z_D = x ^ 2 − 81 Hy + .2L ^ 2 + Sin@zD + 1.06;
f3@x_, y_, z_D = Exp@−x ∗ yD + 20 z + H10 Pi − 3L ê 3;

Anda mungkin juga menyukai