Sie sind auf Seite 1von 42

UNIVERSIDAD AUTONOMA DEL CARIBE

SOLUCION DE
EJERCICIOS METODOS
NUMERICOS
Interpolacin y Mtodos Iterativos.
Ing. SAUL PEREZ PEREZ.

A continuacin se encuentran resueltos los ejercicios correspondientes a la


Interpolacin de Lagrange y los mtodos iterativos con sus respectivos
programas en Excel.

METODOS ITERATIVOS E INTERPOLACION...........................................................7


1. Para las funciones dadas

f ( x) , sean

x 0=0, x 1=0.6 y x 2=0.9 .

Construya polinomios de interpolacin de grados uno y dos para aproximar

f (0.45) , y calcule el error real......................................................................7


a)

fx=cosx .............................................................................................. 8

Programa 1....................................................................................................... 11

b fx=1+ x ............................................................................................... 12
Programa 2.................................................................................................... 15

c fx=lnx ................................................................................................. 16
d fx=tanx .................................................................................................. 16
Programa 3....................................................................................................... 19
2. Obtenga las tres primeras iteraciones de los mtodos de Jacobi y GaussSeidel para el siguiente sistema de ecuaciones, usando X (0)=0..................20
a) METODO DE JACOBI..........................................................................20
Ilustracin 4................................................................................................ 20
Programa 4....................................................................................................... 23
Ilustracin 5................................................................................................ 24
Programa 4....................................................................................................... 26
Ilustracin 6................................................................................................ 27
Ilustracin 7................................................................................................ 27
Ilustracin 8................................................................................................ 28
Programa 5....................................................................................................... 29
Ilustracin 9................................................................................................ 30
Ilustracin 10.............................................................................................. 30
Ilustracin 11.............................................................................................. 31
Programa 6................................................................................................. 32

METODOS ITERATIVOS E INTERPOLACION.


1. Para

las

funciones

dadas

f ( x) ,

sean

x 0=0, x1 =0.6 y x 2=0.9 .

Construya polinomios de interpolacin de grados uno y dos para


aproximar

f (0.45) , y calcule el error real.

(a) f ( x )=cos ( x ) , ( b ) f ( x )= 1+ x , ( c ) f ( x )=ln ( x ) , ( d ) f ( x )=tan ( x )


Obtenga una cota aproximada del error para cada uno de los valores
obtenidos con los polinomios de interpolacin.
SOLUCION.

f ( x )=cos ( x )

a)

Grado 1

Construccin de la tabla con los valores.


En este punto lo que se hace es reemplazar los valores de

xi,

en la

funcin dada y evaluarlos, lo mismo se hace para el valor a interpolar de


0.45
I

f ( x)

0
1

xi

1
0.82533
5
0.6

2
0.62160
9
0.9

Tabla 1

f ( 0.45 ) =cos ( 0.45 ) =0.900447


Teniendo en cuenta estos valores se pasa a encontrar el polinomio que
queda de la siguiente manera:

P ( x )=L 0f ( x 0 ) + L1f ( x 1 )
Donde los valores de L, se muestran en la formula siguiente y los otros
dos corresponden a

F ( 0 ) =F ( x 0 ) y F ( 0.6 )=F ( x 1 )

P ( x )=

x0.6
x0
( 1 )+
( 0.825335 )
00.6
0.60

Con esto obtenemos el polinomio siguiente:

P ( x )=1.666666 x+ 1+ 1.375558 x
P ( x )=0.291108 x +1
Como se ve en este caso solo se toman los valores para I=0, I=1
Se evala

f (0.45)

P ( 0.45 )=(0.291108 ) ( 0.45 ) +1=0.869001


Estimacin del Error:

|0.9004470.869001
|=0.034
0.900447

Er =

Ahora se hace el clculo correspondiente en MatLab.


El programa utilizado fue el siguiente.

function Lagrange(x,y,xi);
p=0;
x=input('INGRESE VECTOR DE x: ')
xi=input('INGRESE VALOR xi: ')
y=input('INGRESE VECTOR y: ')
syms t;
n=length(x);
yi=zeros(size(xi));
for i=1:n
z=ones(size(xi));
L=1;
for j=1:n
if i~=j
L=L*(t-x(j))/(x(i)-x(j));
z=z.*(xi-x(j))/(x(i)-x(j));
end
end
yi=yi+z*y(i);
p=p+L*y(i);
p=simplify(p);
end
polinomio=p
yi

En MatLab
INGRESE VECTOR DE x: [0 0.6]
x=
0

0.6000

INGRESE VALOR xi: 0.45


xi =
0.4500
INGRESE VECTOR y: [1 0.825335]
y=
1.0000

0.8253

polinomio =
1 - (7866212289146675*t)/27021597764222976
yi =
0.8690

Solucin para un polinomio de Grado 2

P ( x )=L 0f ( x 0 ) + L1f ( x 1 )+ L2f ( x 2)


Aqu se toman los 3 valores de la tabla 1.
En este punto aparecen tres valores de L y se evala tambin

P ( x )=

F ( 0.9 ) =F (x 2)

( x0.6 ) (x0.9)
( x0 )( x0.9)
( x0 ) ( x0.6 )
( 1 ) +
( 0.825335 )+
( 0.621609)
( 00.6 ) (00.9)
( 0.60 )( 0.60.9)
( 0.90 ) ( 0.90.6 )

Con lo anterior se saca el polinomio de grado 2 quedando de la siguiente


forma:

x 2+ 1.5 x +0.54 ( ) x 2 +0.9 x (


x2 +0.6 x (
(
)
)
P x=
1+
0.825335 +
0.621609 )
0.54
0.18
0.27
2

P ( x )=1.851851 x 2.777777 x+14.585194 x +4.126675 x +2.302255 x 1.381353 x

P ( x )=0.431088 x 0.032455 x+ 1
Con el polinomio obtenido se pasa a evaluar

P(0.45)

P ( 0.45 )=0.431088( 0.452 )0.032455( 0.45 ) +1


P ( 0.45 )=0.898099
Con el valor del polinomio y la evaluacin de
Estimacin del Error:

F( 0.45)

se obtiene el error.

Rn=f ( x ) P ( x )

|0.9004470.898099
|=0.0026
0.900447

Er =

En MatLab
INGRESE VECTOR DE x: [0 0.6 0.9]
x=
0

0.6000

0.9000

INGRESE VALOR xi: 0.45


xi =
0.4500
INGRESE VECTOR y: [1 0.825335 0.621609]
y=
1.0000

0.8253

0.6216

polinomio =
- (17472990774278275*t^2)/40532396646334464 (877015979435365*t)/27021597764222976 + 1
yi =
0.8981

Solucin Excel.

Para hacer la comparacin de los dos polinomios el de grado 1 y el de grado 2,


en Excel se hicieron los dos programas correspondientes a los polinomios, para
luego compararlos en la grafica y mirar el error correspondiente, a la
evaluacin de la funcin original, con los polinomios correspondientes.
El Excel contiene los comentarios respectivos para saber a que corresponde
cada valor.

Programa 1

Al observar la grafica de las funciones se observa un error mayor en el


polinomio de grado 1, puesto que no sigue la curva de la funcin, y solo la
corta en el punto donde se desea obtener el resultado. Mientras que el
polinomio de grado 2 sigue la curva de la funcin por un nmero mayor de
puntos, por esta razn tiene un menor error.

b f ( x )= 1+ x

Grado 1
Construccin de la tabla con los valores, donde se evala el punto
indicado desde f(0) hasta f(2).
I

f ( x)

0
1

xi

1
1.26491
1
0.6

2
1.37840
4
0.9

Tabla 2

f ( 0.45 ) = 1+ x=1.204159
Teniendo en cuenta estos valores se pasa a encontrar el polinomio que
queda de la siguiente manera:

P ( x )=L 0f ( x 0 ) + L1f ( x 1 )
P ( x )=

x0.6
x0
( 1 )+
( 1.264911 )
00.6
0.60

P ( x )=1.666666 x+ 1+ 2.108185 x
P ( x )=0.441579 x +1
Como se ve en este caso solo se toman los valores para I=0, I=1
Se evala

P(0.45)

P ( 0.45 )=( 0.441579 ) ( 0.45 ) +1=1.198683


Estimacin del Error:

|1.2041591.198683
|=0.0045
1.204159

Er =

EN MatLab
Se procede a calcular el polinomio de interpolacin por medio de un cdigo en
MatLab.
INGRESE VECTOR DE x: [0 0.6]
x=
0

0.6000

INGRESE VALOR xi: 0.45


xi =
0.4500
INGRESE VECTOR y: [1 1.264911]
y=
1.0000

1.2649

polinomio =
(5965265404431725*t)/13510798882111488 + 1
yi =
1.1987

Grado 2

En el anterior solo se usa L0 y L1, en este caso se utilizan los puntos para
realizar la interpolacin como muestra la siguiente formula.

P ( x )=L 0f ( x 0 ) + L1f ( x 1 )+ L2f ( x 2)


Aqu se toman los 3 valores de la tabla 2 y se realiza el clculo del polinomio.

P ( x )=

( x0.6 ) (x0.9)
( x0 )( x0.9)
( x0 ) ( x0.6 )
( 1 ) +
( 1.264911 )+
(1.378404 )
( 00.6 ) (00.9)
( 0.60 )( 0.60.9)
( 0.90 ) ( 0.90.6 )

P ( x )=

x + 1.5 x +0.54 ( ) x +0.9 x (


x +0.6 x (
1+
1.264911 ) +
1.378404 )
0.54
0.18
0.27
2

P ( x )=1.851851 x 2.777777 x+17.027283 x +6.32455 x+ 5.1052 x 3.06312 x


P ( x )=0.070232 x 2+ 0.483653 x +
Ahora Se evala

P(0.45)

P ( 0.45 )=0.070232( 0.452 )+ 0.483653( 0.45 )+ 1


P ( 0.45 )=1.203421
Estimacin del Error:

|1.2041591.203421
|=6.110
1.204159

Er =

En MatLab
Utilizando el programa en MatLab Encontramos los resultados para la
interpolacin con los valores de la tabla 2.
INGRESE VECTOR DE x: [0 0.6 0.9]
x=
0

0.6000

0.9000

INGRESE VALOR xi: 0.45


xi =
0.4500
INGRESE VECTOR y: [1 1.264911 1.378404]
y=
1.0000

1.2649

polinomio =

1.3784

(4269975396700625*t^2)/60798594969501696
(19603786371975425*t)/40532396646334464 + 1

yi =
1.2034
Solucin Excel.

De la misma forma que en el anterior se realizaron los clculos solo se cambio


la funcin por la que corresponda a este punto en especial.

Programa 2

En este caso y para la trayectoria de 10 puntos se ve que los polinomios y la


funcin estn muy juntas, por lo cual el error es muy pequeo, esto quiere
decir que dependiendo de la funcin as ser el error presente en esta, porque
no es lo mismo una funcin lineal que una cuadrtica. Dependiendo esto
tambin del nmero de puntos que se evalan de la trayectoria dada.

c f ( x ) =ln ( x )
Grado 1
Construccin de la tabla con los valores.
I

f ( x)

16,11809
57

xi

0,00000
01

1
0.51082
5
0.6

2
0.10536
0
0.9

Tabla 3

Como se observa no se puede realizar la interpolacin tomando como punto de


inicio el logaritmo natural de cero y al no tener un punto antes de

f (0.45) , no

se puede realizar la interpolacin.

Grado 1
Construccin de la tabla con los valores.

f ( 0.45 ) =ln ( x )=0.7985076


Teniendo en cuenta estos valores se pasa a encontrar el polinomio que
queda de la siguiente manera:

P ( x )=L 0f ( x 0 ) + L1f x 1
P ( x )=

x0.6
x0.0000001
(16.1180957 ) +
(0.510825 )
0.00000010.6
0.60.0000001

P ( x )=26.012122 x16.1150983
Como se ve en este caso solo se toman los valores para I=0, I=1
Se evala

P(0.45)

P ( 0.45 )=( 26.012122 ) ( 0.45 )16.1150983=4.409643


Estimacin del Error:

Rn=f ( x ) P ( x )

|0.7985076+ 4.409643|
=4.52235
|0.7985076|

Er =

Solucin en MatLab
INGRESE VECTOR DE x: [10^-7 0.6]
x=
0.0000

0.6000

INGRESE VALOR xi: 0.45


xi =
0.4500
INGRESE VECTOR y: [-16.1180957 -0.510825]
y=
-16.1181 -0.5108
polinomio =
(43930561567994041488*t)/1688849578788959375
2126644025537601173576496/131941373342887451171875

yi =
-4.4126
Grado 2
En este punto se toman los tres valores de la tabla 4 y con ellos se calculan
los valores de L.

P ( x )=L 0f ( x 0 ) + L1f ( x 1 )+ L2f ( x 2)


Luego los valores de L son multiplicados por cada uno de los f(x)
correspondientes y se saca el polinomio.

P ( x )=

( x0.6 ) (x0.9)

( 107 0.6 ) (1070.9)

(16.1180957 ) +

( x 107 ) (x0.9)
( x107 ) ( x0.6 )

(
0.510825
)
+
(
( 0.6107 ) (0.60.9)
( 0.9107 ) ( 0.90.6 )

P ( x )=27.205584 x 2 +42.335428 x16.118099


Ahora Se evala

P(0.45)

P ( 0.45 )=27.205584( 0.452 ) + 42.335428( 0.45 ) 16.118099


P ( 0.45 )=2.5762877
Estimacin del Error:

2.5762877
|0.7985076+
|=2.2263
0.7985076

Er =

Solucin en MatLab.
INGRESE VECTOR DE x: [10^-7 0.6 0.9]
x=
0.0000

0.6000

0.9000

INGRESE VALOR xi: 0.45


xi =
0.4500
INGRESE VECTOR y: [-16.1180957 -0.510825 -0.105360]
y=
-16.1181 -0.5108 -0.1054
polinomio =

- (549755813888*(10*t - 9)*(656877967163378251190000000*t 435536691828998927895825119))/13369748710462238490641505890


0634765625 - (439*((1125899906842624*t)/1013309803568371 8796093022208/79164828403778984375)*(t - 3/5))/1250
yi =
-2.5631
En Excel.

d f ( x )=tan ( x )

Grado 1
Construccin de la tabla con los valores.
I

f ( x)

0
0

xi

1
0.68413
6
0.6

2
1.26018
2
0.9

Tabla 4

f ( 0.45 ) =tan ( x )=0.483055


Teniendo en cuenta estos valores se pasa a encontrar el polinomio que
queda de la siguiente manera:

P ( x )=L 0f ( x 0 ) + L1f ( x 1 )
P ( x )=

x0.6
x 0
( 0 ) +
( 0.684136 )
00.6
0.60

P ( x )=1.140226
Como se ve en este caso solo se toman los valores para I=0, I=1
Se evala

P(0.45)

P ( 0.45 )=( 1.1406226 ) ( 0.45 )=0.51310


Estimacin del Error:

|0.4830550.513102
|=0.06
0.483055

Er =

En MatLab.
Se toman los valores de la tabla 4 y se ingresan en el programa.
INGRESE VECTOR DE x: [0 0.6]
x=

0.6000

INGRESE VALOR xi: 0.45


xi =
0.4500
INGRESE VECTOR y: [0 0.684136]
y=
0

0.6841

polinomio =
(10270248782235805*t)/9007199254740992
yi =
0.5131

Grado 2

En este punto se toman los tres valores de la tabla 4 y con ellos se calculan
los valores de L.

P ( x )=L 0f ( x 0 ) + L1f ( x 1 )+ L2f ( x 2)


Luego los valores de L son multiplicados por cada uno de los f(x)
correspondientes y se saca el polinomio.

P ( x )=

P ( x )=

( x0.6 ) (x0.9)
( x0 ) (x0.9)
( x0 )( x0.6 )
( 0 ) +
( 0.684136 ) +
(1.260182)
( 00.6 ) (00.9)
( 0.60 ) (0.60.9)
( 0.90 )( 0.90.6 )

x 2+ 0.9 x (
x 2 +0.6 x (
1.264911 )+
1.378404 )
0.18
0.27
P ( x )=3.800755 x 2+3.42068 x +4.667340 x 22.800404 x
2

P ( x )=0.866585 x +0.620176
Ahora Se evala

P(0.45)

P ( 0.45 )=0.866585( 0.452 ) +0.620276( 0.45 )


P ( 0.45 )=0.454607
Estimacin del Error:

|0.4830550.454607
|=0.058
0.483055

Er =
En MatLab

Con los valores de la tabla 4 se hace el clculo en MatLab del polinomio y de su


valor en el punto de x indicado.
INGRESE VECTOR DE x: [0 0.6 0.9]
x=
0

0.6000

0.9000

INGRESE VALOR xi: 0.45


xi =
0.4500
INGRESE VECTOR y: [0 0.684136 1.260182]
y=
0

0.6841

1.2602

polinomio =
(5*t*(4683303260501750*t
3352167313040433))/27021597764222976

yi =
0.4546

En Excel

Con el siguiente programa en Excel se muestra los valores obtenidos y la


grafica muestra el error existente entre un polinomio de grado 1 y uno de
grado 2.

Programa 3

La grafica muestra una secuencia de como un polinomio de grado 1 y uno de


grado 2 siguen la respuesta a una funcin dada y el error que da al seguir la
trayectoria de la funcin original al evaluar 10 puntos de cada uno de ellos.
2. Obtenga las tres primeras iteraciones de los mtodos de Jacobi y GaussSeidel para el siguiente sistema de ecuaciones, usando X (0)=0.

4 x 1 +x 2x 3+ x 4=2
x 1+ 4 x 2x 3x 4 =1
x 1x 2 +5 x3 + x 4 =0
x 1x 2+ x 3 +3 x 4=1
a) METODO DE JACOBI.
Convergencia:
4
1
-1
1

1
4
-1
-1

-1
-1
5
1

1
-1
1
3

4 >11+1 ; 4 >1
4 >111; 4>1

5>11+1 ; 5>1
3>11+1 ; 3>1
La matriz es triangular dominante. Por esta razn se puede pasar a realizar
los clculos correspondientes de la matriz.
Se pasa a realizar el despeje para cada variable, es decir
para cada una de las ecuaciones anteriores.

x 1=0.5+0 x1 0.25 x2 +0.25 x 30.25 x 4


x 2=0.250.25 x 10 x 2+ 0.25 x 3 +0.25 x 4

x1 , x2 , x3 y x4 ,

x 3=0+0.2 x 1+ 0.2 x 2 +0 x3 0.2 x 4


x 4=0.3333330.333333 x 1+ 0.333333 x 20.333333 x 3+ 0 x 4
En forma matricial queda que:

X =c+ Bx , representado mejor de la

siguiente manera:

Ilustracin 4

Ahora partiendo del vector siguiente:

x=[0 0 0 0]
Lo que se hace es reemplazar el vector de ceros y obtener el nuevo valor de las
x:
Primera iteracin:

x 1=0.5+ ( 0 ) ( 0 )( 0.25 )( 0 )+ ( 0.25 )( 0 )( 0.25 ) ( 0 )=0.5


x 2=0.25( 0.25 )( 0 ) ( 0 ) ( 0 ) + ( 0.25 ) ( 0 ) + ( 0.25 ) ( 0 )=0.25
x 3=0+ ( 0.2 ) ( 0 ) + ( 0.2 ) ( 0 ) + ( 0 )( 0 ) ( 0.2 ) (0)=0
x 4=0.333333( 0.333333 ) ( 0 ) + ( 0.333333 ) ( 0 ) ( 0.333333 )( 0 )+ ( 0 ) ( 0 )=0.333333
Ahora tenemos que:

x 1=0.5; x 2=0.25 ; x 3=0 ; x 4=0.333333

Una vez se tiene el nuevo vector este se reemplaza en cada una de las
ecuaciones.
Segunda Iteracin:

x 1=0.5+ ( 0 ) (0.5 )( 0.25 ) (0.25 )+ ( 0.25 ) ( 0 )( 0.25 )( 0.333333 ) =0.520833

x 2=0.25( 0.25 )(0.5 )( 0 )(0.25 ) + ( 0.25 ) ( 0 ) + ( 0.25 )( 0.333333 ) =0.041666


x 3=0+ ( 0.2 ) (0.5 ) + ( 0.2 ) (0.25 ) + ( 0 )( 0 )( 0.2 ) ( 0.333333 )=0.216666
x 4=0.333333( 0.333333 ) (0.5 )+ ( 0.333333 ) (0.25 ) ( 0.333333 ) ( 0 ) + ( 0 ) ( 0 )=0.416666
Ahora tenemos que:

x 1=0.520833; x 2=0.041666 ; x 3=0.216666 ; x 4=0.416666


Tol=0.5+ 0.520833=0.020833
Estos valores obtenidos los volvemos a reemplazar para obtener la
siguiente iteracin.
Tercera Iteracin:

x 1=0.5( 0.25 ) (0.041666 ) + ( 0.25 ) (0.216666 )( 0.25 ) ( 0.416666 ) =0.647965


x 2=0.25( 0.25 )(0.520833 ) + ( 0.25 ) (0.216666 )+ ( 0.25 ) ( 0.416666 )=0.069791
x 3=( 0.2 ) (0.520833 ) + ( 0.2 )(0.041666 )( 0.2 )( 0.416666 ) =0.195833
x 4=0.333333( 0.333333 ) (0.520833 )+ ( 0.333333 )(0.216666 ) ( 0.333333 ) (0.333333 ) =0.506938
Ahora tenemos que:

x 1=0.647965; x 2=0.069791 ; x 3 =0.195833 ; x 4 =0.506938


La tolerancia aqu es de:

Tol=0.520833+ 0.647965=0.1271

Ahora se hace el clculo correspondiente en MatLab.


El programa utilizado fue el siguiente.

function [x, varargout]=jacobiv(a,b,varargin)


a=input('ingrese a=');
b=input('ingrese b=');
% valores por defecto
n=length(a);
eps1=1e-4;
eps2=1e-4; % tol. absoluta y relativa

x=zeros(n,1);
mmax=input('ingrese el numero maximo de iteraciones mmax=')
if nargin>2
mmax=varargin{1};
end
if nargin>3
eps1=varargin{2};
end
if nargin>4
eps2=varargin{3};
end
if nargin>5
x(:)=varargin{4}; %x es un vector columna
end
errores=zeros(1,mmax);
d=diag(a);
r=(b-a*x);
normab=norm(b);
for m=1:mmax
x=x+r./d;
r=(b-a*x); % residuo
normar=norm(r);
errores(m)=normar;
if (normar<eps1+eps2*normab)
break
end
end
errores=errores(1:m)
if (m==mmax) & nargout<=3
disp('numero maximo de iteraciones sobrepasado')
end
% salida
if (nargout>1)
varargout{1}=m; % no de iteraciones
end
if (nargout>2)
varargout{2}=errores; % diferencia entre iteraciones
end
if (nargout>3)
% flag: 1 si hay convergencia, 0 en caso contrario
if m==mmax
varargout{3}=0;
else
varargout{3}=1;
end
end
return

En MatLab.
Ingresamos los valores en MatLab en el programa. Estos valores se ingresan
tipo matriz para ser resueltos.
ingrese a=[4 1 -1 1; 1 4 -1 -1; -1 -1 5 1; 1 -1 1 3]

ingrese b=[-2; -1; 0; 1]


ingrese el numero maximo de iteraciones mmax=3
mmax =
3
errores =
1.3919

0.6933

0.4430

numero maximo de iteraciones sobrepasado


ans =
-0.6479
-0.0698
-0.1958
0.5653

En Excel.

A continuacin se explica el programa con comentarios sobre como se hizo


este.

Programa 4

b) GAUSS-SEIDEL.
Se realizan los mismos pasos hasta la

x 1 de la primera iteracin, luego se

reemplaza el valor obtenido para calcular


En forma matricial queda que:

x 2 y as sucesivamente.

X =c+ Bx

Ilustracin 5

Primera iteracin:

x 1=0.5+ ( 0 ) ( 0 )( 0.25 )( 0 )+ ( 0.25 )( 0 )( 0.25 ) ( 0 )=0.5


x 2=0.25( 0.25 )(0.5 )( 0 )( 0 )+ ( 0.25 )( 0 )+ ( 0.25 ) ( 0 )=0.125
x 3=0+ ( 0.2 ) (0.5 ) + ( 0.2 ) (0.125 ) + ( 0 )( 0 )( 0.2 ) ( 0 )=0.125
x 4=0.333333( 0.333333 ) (0.5 )+ ( 0.333333 ) (0.125 ) ( 0.333333 ) (0.125 ) =0.499999
Ahora tenemos que:

x 1=0.5; x 2=0.125 ; x 3=0.125 ; x 4 =0.499999

Como se ve una vez se tiene un nuevo valor se reemplaza sin esperar a la


iteracin siguiente, siendo esta la diferencia que existe entre Jacobi y
Gauss-Seidel.
Segunda Iteracin:

x 1=0.5+ ( 0 ) (0.5 )( 0.25 ) (0.125 )+ ( 0.25 ) (0.125 ) ( 0.25 ) ( 0.499999 )=0.624999


x 2=0.25( 0.25 )(0.624999 ) + ( 0.25 ) (0.125 )+ ( 0.25 )( 0.499999 )=0.0000005
x 3=( 0.2 ) (0.624999 ) + ( 0.2 )(0.0000005 )( 0.2 ) ( 0.499999 )=0.224999

x 4=0.333333( 0.333333 ) (0.624999 )+ ( 0.333333 )(0.0000005 ) ( 0.333333 )(0.224999 )=0.616666


Ahora tenemos que:

x 1=0.624999; x 2=0.0000005 ; x3 =0.224999 x 4 =0.616666


Tol=0.5+ 0.624999=0.124999
Tercera Iteracin:

x 1=0.5( 0.25 ) (0.0000005 ) + ( 0.25 ) (0.224999 )( 0.25 ) ( 0.616666 )=0.710416


x 2=0.25( 0.25 )(0.710416 ) + ( 0.25 ) (0.224999 )+ ( 0.25 )( 0.616666 )=0.025520
x 3=( 0.2 ) (0.710416 )+ ( 0.2 )( 0.025520 ) ( 0.2 )( 0.616666 )=0.2603124
x 4=0.333333( 0.333333 ) (0.710416 )+ ( 0.333333 ) ( 0.025520 )( 0.333333 ) (0.2603124 )=0.665416
Ahora tenemos que:

x 1=0.710416; x 2=0.025520; x 3=0.2603124 ; x 4 =0.665416


L a tolerancia aqu es de:

Tol=0.624999+0.710416=0.085

|0.7104160.624999|
=0.1202351
|0.710416|

Norma=

Ahora se hace el clculo correspondiente en MatLab.


El programa utilizado fue el siguiente.

function [x, varargout]=gaussSeidelV(a,b,varargin)


a=input('Ingrese la matriz a=');
b=input('Ingrese la matriz b=');
mmax=input('ingrese el numero maximo de iteraciones=');
% valores por defecto
n=length(a); %mmax=100;
eps1=1e-4;
eps2=1e-4; % tol. absoluta y relativa
x=zeros(n,1);
if nargin>2

mmax=varargin{1};
end
if nargin>3
eps1=varargin{2};
end
if nargin>4
eps2=varargin{3};
end
if nargin>5
x(:)=varargin{4}; %x es un vector columna
end
errores=zeros(1,mmax);
l=tril(a);
r=(b-a*x);
normab=norm(b);
for m=1:mmax
x=x+l\r;
r=(b-a*x); % residuo
normar=norm(r);
errores(m)=normar;
if (normar<eps1+eps2*normab)
break
end
end
errores=errores(1:m);
if (m==mmax) & nargout<=3
disp('numero maximo de iteraciones sobrepasado')
end
% salida
if (nargout>1)
varargout{1}=m; % no de iteraciones
end
if (nargout>2)
varargout{2}=errores; % diferencia entre iteraciones
end
if (nargout>3)
% flag: 1 si hay convergencia, 0 en caso contrario
if m==mmax
varargout{3}=0;
else
varargout{3}=1;
end
end
return

En MatLab
Se ingresa a, que es la matriz de coeficientes, b que es la matriz de
resultado y el numero de iteraciones.
Ingrese la matriz a=[4 1 -1 1; 1 4 -1 -1; -1 -1 5 1; 1 -1 1 3]
Ingrese la matriz b=[-2; -1; 0; 1]

ingrese el numero maximo de iteraciones=3


errores =
0.8004

0.3614

0.1207

numero maximo de iteraciones sobrepasado


ans =
-0.7104
0.0255
-0.2603
0.6654

En Excel

A continuacin esta el programa en Excel, con los comentarios necesarios


sobre l.

Programa 4

3. Resuelva el sistema de ecuaciones en el problema anterior utilizando el


mtodo SOR con w=1.1 y w=1.3 para una tolerancia de
norma

105 en la

Muestre una tabla con los valores del vector de incgnitas

para cada iteracin y su correspondiente error.


4.

4 x 1 +x 2x 3+ x 4=2

5.

x 1+ 4 x 2x 3x 4 =1

6.

x 1x 2 +5 x3 + x 4 =0

7.

x 1x 2+ x 3 +3 x 4=1

a. W=1.1
Lo primero que se hace es sacar el Gauss-Seidel y a partir de l se saca
las ecuaciones para SOR.

Ilustracin 6

Ahora se realizo para SOR donde se multiplica por el w dado cada uno de
los coeficientes y el vector de resultado y se coloca en el valor de
despeje el valor del punto que acompaa, es decir, el 0.1 en este caso.
La matriz Sor quedo de la siguiente forma:

Ilustracin 7

A continuacin se realizaran las 3 primeras iteraciones y luego se mostrara


la tabla con el resto de clculos hechos.
Primera Iteracin.
k
x 1=0.1 ( 0 )0.275 ( 0 ) +0.275 ( 0 )0.275 ( 0 )0.55=0.55

x 2=0.275 (0.55 )0.1 ( 0 ) +0.275 ( 0 ) +0.275 ( 0 ) 0.275=0.12375


x k3=0.22 (0.55 )+ 0.22 (0.12375 ) 0.1 ( 0 )0.22 ( 0 )=0.148225
x k4=0.366666 (0.55 ) +0.366666 (0.12375 )0.366666 (0.148225 )0.1 ( 0 ) +0.433333=0.577307
Segunda Iteracin.

x k1=0.3 (0.55 )0.275 (0.12375 )+ 0.275 (0.148225 ) 0.275 ( 0.577307 )0.55= 0,66049

x 2=0.275 (0,66049 )0.1 (0.12375 )0.275 (0.14822 ) +0.275 ( 0.57730 ) 0.275=0,0370074


x k3=0.22 (0.66049 )+ 0.22 ( 0,0370074 )0.1 (0.148225 )0.22 ( 0.57730 )= -0,24935

x k4=0.366666 (0.726889 ) +0.366666 ( 0.125148 )0.366666 (0.24935 )0.1 ( 0.577307 )+ 0.433333=0.


Tol=0.55+ 0.66049=0.11049
Tercera Iteracin
k

x 1=0.1 (0.66049 ) 0.275 ( 0.0370074 ) +0.275 (0.20987 )0.275 ( 0.52328 ) 0.55=0.74313


x k2=0.275 (0.74313 )0.1 (0.03288 )0.275 (0.24935 )+ 0.275 ( 0.52328 )0.275=0.03751
x k3=0.22 (0.74313 )+ 0.22 ( 0.03751 ) 0.1 (0.24935 ) 0.22 ( 0.656113 )=0.27464

x k4=0.366666 (0.74313 ) +0.366666 ( 0.03751 )0.366666 (0.27464 ) 0.1 ( 0.656113 ) +0.366666=0.68


En la tolerancia para detener tenemos que para la tercera iteracin es de:

Tol=0.66049+ 0.74313=0.08
Y no es menor que la tolerancia dada por lo cual se debe seguir iterando.

A continuacin muestro una tabla con los valores de las iteraciones y su


correspondiente error, con la norma luego de hallar la tolerancia adecuada.

|0.753424671+0.753425|
7
=4.3666710
|0.753424671|

Norma=

Programa MatLab.
function x= relax( a,b,Nmax,w,x0)
%Metodo Sor programa que resuelve sistemas de ecuaciones lineales por
medio
%del metodo de relajacion segun la ecuacion siguinte a*x=b.
% Donde a es la matriz de coeficientes correspondiente al metodo b es el
% vector de resultado Nmax es le numero de iteraciones, w es el factor de
% relajacion y x0 es el vector inicial.
a=input('ingrese matriz a:');
b=input('ingrese vector b:');
Nmax=input('ingrese Nmax:');
eps=5e-6;
w=input('ingrese el valor w=');
x0=input('ingrese vector x0=');
D=diag(diag(a));
L=-tril(a,-1);
U=-triu(a,1);
C=inv(D-w*L);
B=C*((1-w)*D+w*U);
f=w*C*b;
x1=B*x0+f;
k=1;
while norm(x1-x0)>=eps
x0=x1;
x1=B*x0+f;
k=k+1;
if k>Nmax
ps='No converge'

break;
end
end
ss=x1

Solucin MatLab
ingrese matriz a:[4 1 -1 1; 1 4 -1 -1; -1 -1 5 1; 1 -1 1 3]
ingrese vector b:[-2; -1; 0; 1]
ingrese Nmax:20
ingrese el valor w=1.1
ingrese vector x0=[0; 0; 0; 0]

ss =

-0.7534
0.0411
-0.2808
0.6918

Programa 5

b. W=1.3
Lo primero que se hace es sacar el Gauss-Seidel y a partir de l se saca
las ecuaciones para SOR.

Ilustracin 8

Ahora se realizo para SOR y donde queda por -0.3 el valor


correspondiente a la posicin de la diagonal principal, mientras se
multiplica por 1.3 el resto de valores de la matriz quedando as esta:

Ilustracin 9

A continuacin se realizaran las 3 primeras iteraciones y luego se mostrara la


tabla con el resto de clculos hechos.
Primera Iteracin.
k
x 1=0.3 ( 0 )0.325 ( 0 )+ 0.325 ( 0 )0.325 ( 0 ) 0.65=0.65

x k2=0.325 (0.65 )0.3 ( 0 ) +0.325 ( 0 ) +0.325 ( 0 )0.325=0.11375


x k3=0.26 (0.65 ) +0.22 (0.11375 )0.3 ( 0 )0.22 ( 0 )=0.19857

x k4=0.433333 (0.65 ) +0.433333 (0.11375 )0.433333 (0.19857 )0.3 (0.19857 )0.43333=0.6850


Segunda Iteracin.

x k1=0.3 (0.65 )0.325 (0.11375 ) +0.325 (0.19857 )0.325 ( 0.68509 ) 0.65=0.70522


x k2=0.325 (0.70522 ) 0.3 (0.11375 ) +0.325 (0.19857 )+ 0.325 ( 0.68509 )0.325=0.09644

x 3=0.26 (0.70522 )+ 0.22 ( 0.09644 )0.3 (0.19857 ) 0.22 ( 0.68509 )=0.27683

x k4=0.433333 (0.70522 )+ 0.433333 ( 0 .09644 )0.433333 (0.27683 )0.3 (0.68509 )0.43333=0.62

Tercera Iteracin

x k1=0.3 (0.70522 ) 0.325 ( 0.09644 ) +0.325 (0.27683 )0.325 ( 0.62849 ) 0.65=0.76401


x k2=0.325 (0.76401 ) 0.3 ( 0.09644 ) +0.325 (0.27683 ) +0.325 ( 0.62849 )0.325=0.00866
k

x 3=0.26 (0.76401 )+ 0.22 ( 0.00866 )0.3 (0.27683 )0.22 ( 0.62849 )=0.27675

x k4=0.433333 (0.76401 )+ 0.433333 ( 0.00866 )0.433333 (0.27675 )0.3 (0.62849 )0.4333333=0.6


En la tolerancia para detener tenemos que para la tercera iteracin es de:

Tol=0.705220.76401=0.05878
Y no es menor que la tolerancia dada por lo cual se debe seguir iterando, el
resto de iteraciones se muestran en la siguiente tabla, con su respectiva
norma.

|0.7534238760.753430709|
=9.06844106
|0.753423876|

Norma=

Ilustracin 8

Solucin MatLab.
ingrese matriz a:[4 1 -1 1; 1 4 -1 -1; -1 -1 5 1; 1 -1 1 3]
ingrese vector b:[-2; -1; 0; 1]
ingrese Nmax:20
ingrese el valor w=1.3
ingrese vector x0=[0; 0; 0; 0]

ss =

-0.7534
0.0411
-0.2808
0.6918

Programa 6

Das könnte Ihnen auch gefallen