Está en la página 1de 40

IN S T I T U T O P O L I T E C N I C O N A C I O N A L

Escuela Superior de Ingeniería Química e Industrias


Extractivas

°ᵜ°Métodos
Numéricos°ᵜ°
 
PROYECTO 1
Alumna: Fiscal Ireta Claudia Anabel
Profesor:

M. en C. Hipólito Ruiz Martínez

Grupo: 1IM44
Periodo 17/1
CONTENIDOS

1) Newton-Raphson univariable.
Teoría……………………….Pág. 3

Codificación……………… ..Pág. 4

Ejemplos…………………….Pág. 5

2) Bisección.
Teoría……………………….Pág. 9

Codificación……………… ..Pág. 9

Ejemplos…………………….Pág. 11

5) Jacobi.
Teoría……………………….Pág. 20

Codificación………………...Pág. 21

Ejemplos…………………….Pág. 22

3) Gauss-Seidel.
Teoría……………………….Pág. 27

Codificación……………… ..Pág. 28

Ejemplos…………………….Pág. 29

4) Newton-Raphson multivariable.
Teoría……………………….Pág. 32

Codificación……………… ..Pág. 32

Ejemplos…………………….Pág. 35

2
Newton-Raphson univariable.
Fundamentación teórica:
Es un método de segundo orden de convergencia cuando se trata de raíces reales no repetidas.
Consiste en un procedimiento que lleva la ecuación f(x)=0 o a la forma g(x), de modo que g’( ̅)=0.
Su deducción se presenta en seguida a partir de la gráfica mostrada.

Vamos a suponer que un valor inicial 0’ se sitúa en el eje horizontal. Trácese una tangente a la curva en el punto ( 0’f( 0)), y a partir de ese punto sígase por la tangente hasta su
intersección con el eje x; el punto de corte 1 es una nueva aproximación a ̅. El proceso se repite comenzando con 1, se obtiene una nueva aproximación 2 y así sucesivamente
hasta que un valor satisfaga | ( )| ≤ . Si lo anterior no se cumpliera en un máximo de iteraciones (Nmax), debe reiniciarse con un nuevo valor de 0.

La ecuación central del algoritmo se obtiene así:


1= 0 −
La pendiente de la tangente a la curva en el punto ( 0’f( 0)) es:
′( ) = ( 0) , así que Δ = ( 0) , y sustituyendo = − ( 0) .
0 1 0 ′
Δ ′( 0)( 0)

En general es lo siguiente:

= − ( ) = ( ) ℎ | ( )| ≤
′( )
+1

3
Código del programa en Matlab (Newton-Raphson univariable):
%Programa Newton-Raphson univariable. ESIQIE IPN
%Métodos Numéricos a cargo del profesor M. en C. Hipólito Ruíz
Martínez %Realizado por Claudia Anabel Fiscal Ireta periódo 2017/1
%Este programa toma en cuenta el criterio de convergencia como
|f(xi)|<=Ep
%************************************************************************
*
clear,clc
disp('Método de Newton-Raphson univariable')
x=sym('x');
fx=input('Ingrese la función: ');
disp('La derivada de la función es: ')
%Esta sentencia se está dejando abierta para mostrar la derivada de la
%función y copiarla fácilmente a mano sin ningún comando de salida
(disp o
%fprintf) por mera comodidad del fabricador del programa.
fdx=diff(fx)
x0=input('Ingrese el valor propuesto inicial: ');
max=input('Ingrese el número máximo de iteraciones: ');
Ep=input('Ingrese valor de épsilon: ');
k=1;
fprintf('ITERACIÓN: %3i \n',k)
fx0=subs(fx,'x',x0);
fdx0=subs(fdx,'x',x0);
fx0=double(fx0);
fdx0=double(fdx0);
div=fx0./fdx0;
xi=(x0-(div));
fprintf('xi= %20.6f\n',xi)
dif=abs(fx0);
fprintf('|fxi|: %20.6f\n',dif)
%Los valores siguientes son para iteraciones a mano, evitando el
cálculo en la calculadora.
disp('**Los siguientes valores sirven para iteración a mano: **')
fprintf('fxi: %20.6f\n',fx0)
fprintf('fdxi: %20.6f\n',fdx0)
fprintf('div: %20.6f\n',div)
if dif<=Ep
disp('Le atinaste!! :D suertudo!!.')
else
k=2;
fprintf('ITERACIÓN: %3i \n',k)
while k<=max
fxi=subs(fx,'x',xi);
fdxi=subs(fdx,'x',xi);
fxi=double(fxi);
fdxi=double(fdxi);
div=(fxi./fdxi);
xin=(xi-(div));
xin=double(xin);
fprintf('xi= %20.6f\n',xin)
dif=abs(fxi);
fprintf('|fxi|: %20.6f\n',dif)
%Los valores son para iteraciones a mano, evitando el cálculo en la

4
%calculadora.
disp('**Los siguientes valores sirven para iteración a mano: **')
fprintf('fxi: %20.6f\n',fxi)
fprintf('fdxi: %20.6f\n',fdxi)
fprintf('div: %20.6f\n',div)
if dif<=Ep
disp('****************************' )
disp('Haz encontrado la raíz :D.')
break
else
k=k+1;
fprintf( 'ITERACION: %3i \n',k)
xi=xin;
end
end
end

Ejemplos resueltos que comprueban la funcionalidad del programa (Newton-


Raphson univariable):
1) ()= − + ;

Método de Newton-Raphson univariable


Ingrese la función: x^3-5*x+1
La derivada de la función es:
fdx = 3*x^2 - 5
Ingrese el valor propuesto inicial: 7
Ingrese el número máximo de iteraciones: 10
Ingrese valor de épsilon: .0001
ITERACIÓN: 1
xi= 4.823944
|fxi|: 309.000000
**Los siguientes valores sirven para iteración a mano: **
fxi: 309.000000
fdxi: 142.000000
div: 2.176056
ITERACIÓN: 2
xi= 3.448635
|fxi|: 89.135537
**Los siguientes valores sirven para iteración a mano: **
fxi: 89.135537
fdxi: 64.811297
div: 1.375309
ITERACION: 3
xi= 2.641193
|fxi|: 24.771729
**Los siguientes valores sirven para iteración a mano: **
fxi: 24.771729
fdxi: 30.679251
div: 0.807442
ITERACION: 4
xi= 2.250758
|fxi|: 6.218728
**Los siguientes valores sirven para iteración a mano: **

5
fxi: 6.218728
fdxi: 15.927695
div: 0.390435
ITERACION: 5
xi= 2.138150
|fxi|: 1.148348
**Los siguientes valores sirven para iteración a mano: **
fxi: 1.148348
fdxi: 10.197730
div: 0.112608
ITERACION: 6
xi= 2.128489
|fxi|: 0.084195
**Los siguientes valores sirven para iteración a mano: **
fxi: 0.084195
fdxi: 8.715050
div: 0.009661
ITERACION: 7
xi= 2.128419
|fxi|: 0.000598
**Los siguientes valores sirven para iteración a mano: **
fxi: 0.000598
fdxi: 8.591392
div: 0.000070
ITERACION: 8
xi= 2.128419
|fxi|: 0.000000
**Los siguientes valores sirven para iteración a mano: **
fxi: 0.000000
fdxi: 8.590503
div: 0.000000
****************************
Haz encontrado la raíz :D.
2) ( ) = + ;

Método de Newton-Raphson univariable


Ingrese la función: x^2+10*cos(x)
La derivada de la función es:
fdx = 2*x - 10*sin(x)
Ingrese el valor propuesto inicial: pi/2
Ingrese el número máximo de iteraciones: 15
Ingrese valor de épsilon: .0001
ITERACIÓN: 1
xi= 1.930559
|fxi|: 2.467401
**Los siguientes valores sirven para iteración a mano: **
fxi: 2.467401
fdxi: -6.858407
div: -0.359763
ITERACIÓN: 2
xi= 1.968120
|fxi|: 0.206535
**Los siguientes valores sirven para iteración a mano: **

6
fxi: 0.206535
fdxi: -5.498684
div: -0.037561
ITERACION: 3
xi= 1.968873
|fxi|: 0.003977
**Los siguientes valores sirven para iteración a mano: **
fxi: 0.003977
fdxi: -5.284758
div: -0.000752
ITERACION: 4
xi= 1.968873
|fxi|: 0.000002
**Los siguientes valores sirven para iteración a mano: **
fxi: 0.000002
fdxi: -5.280339
div: -0.000000
****************************
Haz encontrado la raíz :D.
3) ( ) = + − +− .

Método de Newton-Raphson univariable


Ingrese la función: exp(x)+2^-x+9*cos(x)-7.5
La derivada de la función es:
fdx = exp(x) - 9*sin(x) - 1/2^x*log(2)
Ingrese el valor propuesto inicial: 4
Ingrese el número máximo de iteraciones: 20
Ingrese valor de épsilon: .0001
ITERACIÓN: 1
xi= 3.327350
|fxi|: 41.277857
**Los siguientes valores sirven para iteración a mano: **
fxi: 41.277857
fdxi: 61.366051
div: 0.672650
ITERACIÓN: 2
xi= 2.932923
|fxi|: 11.618866
**Los siguientes valores sirven para iteración a mano: **
fxi: 11.618866
fdxi: 29.457576
div: 0.394427
ITERACION: 3
xi= 2.777899
|fxi|: 2.608637
**Los siguientes valores sirven para iteración a mano: **
fxi: 2.608637
fdxi: 16.827262
div: 0.155024
ITERACION: 4
xi= 2.752889
|fxi|: 0.319687
**Los siguientes valores sirven para iteración a mano: **
fxi: 0.319687

7
fdxi: 12.782562
div: 0.025010
ITERACION: 5
xi= 2.752262
|fxi|: 0.007633
**Los siguientes valores sirven para iteración a mano: **
fxi: 0.007633
fdxi: 12.174158
div: 0.000627
ITERACION: 6
xi= 2.752262
|fxi|: 0.000005
**Los siguientes valores sirven para iteración a mano: **
fxi: 0.000005
fdxi: 12.159059
div: 0.000000
****************************
Haz encontrado la raíz :D.

8
Bisección.
Fundamentación teórica:

En este método se requieren dos valores iniciales para ambos lados de la raíz, y
que sus valores funcionales correspondientes sean de signos opuestos.
En este caso, el valor de se obtiene como punto medio entre .

=( + )

El algoritmo de solución es el siguiente:

1. Proponer valores de “a” y “b”.

2. Evaluar f(a) y f(b), si f(a)*f(b) son negativos (signos contrarios cada uno), se puede
continuar con el método, de lo contrario, se deben proponer valores diferentes de
“a” y b” y reevaluar.
3. Calcular el punto medio ( )

4. Evaluar f(m) y considerar lo siguiente para reasignar valores:

-Si f(m)*f(a)>0 (positivo) a=m y b=b.

-Si f(m)*f(a)<0 (negativo) a=a y b=m.

5. Repetir pasos 3 y 4 hasta llegar al criterio de convergencia: |f(m)|≤Ep

Código del programa en Matlab (Bisección):


%Programa para el método numérico de bisección (univariable). %Métodos
numéricos, Profesor Hipólito Ruíz, ESIQIE,IPN. %Realizado por Claudia Anabel
Fiscal Ireta, periodo 2017/1
%************************************************************************
clear,clc
format compact
disp('Médodo de bisección: ')
disp('Proponer valor de a y b: ')
a=input('Ingrese valor de a: ');
b=input('Ingrese valor de b: ');
x=sym('x');
fx=input('Ingrese la función original (con respecto a "x"): ');
fa=subs(fx,'x',a);
fa=double(fa);
fprintf('fa= %20.6f \n',fa)
fb=subs(fx,'x',b);

9
fb=double(fb);
fprintf('fb= %20.6f \n',fb)
fafb=(fa.*fb);
fafb=double(fafb);
fprintf('fa*fb %20.6f \n',fafb)
if fafb<0
disp('El método puede continuar.')
pause(1)
else
disp('No es posible continuar con el método.')
disp('Ingresa valores válidos de "a" y "b".')
disp('El programa se cerrará.')
pause(5)
break
end
f=input('Ingrese el número máximo de iteraciones: ');
Ep=input('Ingrese el valor de epsilon para el criterio de convergencia:
');
k=1;
while k<=f
fprintf('ITERACION: %3i \n',k)
fprintf('a= %20.6f \n',a)
fprintf('b= %20.6f \n',b)
fa=subs(fx,'x',a);
fa=double(fa);
fprintf('fa= %20.6f \n',fa)
fb=subs(fx,'x',b);
fb=double(fb);
fprintf('fb= %20.6f \n',fb)
m=((a+b)./2);
m=double(m);
fprintf('m= %20.6f \n',m)
fm=(subs(fx,'x',m));
fm=double(fm);
fmi=abs(fm);
if fmi<=Ep
disp('El valor a llegado al criterio de convergencia.')
fmfa=(fm.*fa);
fmfa=double(fmfa);
fprintf('fm= %20.6f \n',fm)
fprintf('fm*fa= %20.6f \n',fmfa)
fa=subs(fx,'x',a);
fa=double(fa);
fprintf('fa= %20.6f \n',fa)
fb=subs(fx,'x',b);
fb=double(fb);
fprintf('fb= %20.6f \n',fb)
res=[k, a, b, fa, fb, m, fm, fmfa];
disp(num2str(res))
break
else
fprintf('fm= %20.6f \n',fm)
end
fmfa=(fm.*fa);
fmfa=double(fmfa);
fprintf('fm*fa= %20.6f \n',fmfa)

10
res=[k, a, b, fa, fb, m, fm, fmfa];
disp(num2str(res))
if fmfa<0
%Porque f(m)*f(a) son mayores que cero, es decir, positivo.
disp( 'La nueva "b" es sustituida por "m" (-).')
b=m;

else
%Porque f(m)*f(a) son menores que cero, es decir, negativo.
disp( 'La nueva "a" es sustituida por "m" (+).')
a=m;
end
k=k+1;
end

Ejemplos resueltos que comprueban la funcionalidad del programa


(Bisección):
1) ()= − + ;

Médodo de bisección:
Proponer valor de a y b:
Ingrese valor de a: 3
Ingrese valor de b: 1
Ingrese la función original (con respecto a "x"): x^3-5*x+1
fa= 13.000000
fb= -3.000000
fa*fb -39.000000
El método puede continuar.
Ingrese el número máximo de iteraciones: 20
Ingrese el valor de epsilon para el criterio de convergencia: .0001
ITERACION: 1
a= 3.000000
b= 1.000000
fa= 13.000000
fb= -3.000000
m= 2.000000
fm= -1.000000
fm*fa= -13.000000
1 3 1 13 -3 2 -1 -13
La nueva "b" es sustituida por "m" (-).
ITERACION: 2
a= 3.000000
b= 2.000000
fa= 13.000000
fb= -1.000000
m= 2.500000
fm= 4.125000
fm*fa= 53.625000
2 3 2 13 -1 2.5 4.125 53.625
La nueva "a" es sustituida por "m" (+).
ITERACION: 3
a= 2.500000
b= 2.000000
fa= 4.125000

11
fb= -1.000000
m= 2.250000
fm= 1.140625
fm*fa= 4.705078
3 2.5 2 4.125 -1 2.25 1.1406 4.7051
La nueva "a" es sustituida por "m" (+).
ITERACION: 4
a= 2.250000
b= 2.000000
fa= 1.140625
fb= -1.000000
m= 2.125000
fm= -0.029297
fm*fa= -0.033417
4 2.25 2 1.1406 -1 2.125 -0.029297 -0.033417
La nueva "b" es sustituida por "m" (-).
ITERACION: 5
a= 2.250000
b= 2.125000
fa= 1.140625
fb= -0.029297
m= 2.187500
fm= 0.530029
fm*fa= 0.604565
5 2.25 2.125 1.1406 -0.029297 2.1875 0.53003 0.60456
La nueva "a" es sustituida por "m" (+).
ITERACION: 6
a= 2.187500
b= 2.125000
fa= 0.530029
fb= -0.029297
m= 2.156250
fm= 0.244049
fm*fa= 0.129353
6 2.1875 2.125 0.53003 -0.029297 2.1563 0.24405 0.12935
La nueva "a" es sustituida por "m" (+).
ITERACION: 7
a= 2.156250
b= 2.125000
fa= 0.244049
fb= -0.029297
m= 2.140625
fm= 0.105808
fm*fa= 0.025822
7 2.1563 2.125 0.24405 -0.029297 2.1406 0.10581 0.025822
La nueva "a" es sustituida por "m" (+).
ITERACION: 8
a= 2.140625
b= 2.125000
fa= 0.105808
fb= -0.029297
m= 2.132813
fm= 0.037865
fm*fa= 0.004006
8 2.1406 2.125 0.10581 -0.029297 2.1328 0.037865 0.0040064
La nueva "a" es sustituida por "m" (+).

12
ITERACION: 9
a= 2.132813
b= 2.125000
fa= 0.037865
fb= -0.029297
m= 2.128906
fm= 0.004187
fm*fa= 0.000159
9 2.1328 2.125 0.037865 -0.0292972.1289 0.0041867 0.00015853
La nueva "a" es sustituida por "m" (+).
ITERACION: 10
a= 2.128906
b= 2.125000
fa= 0.004187
fb= -0.029297
m= 2.126953
fm= -0.012579
fm*fa= -0.000053
10 2.12891 2.125 0.00418669 -0.0292969 2.12695 -0.0125794 -5.26662e-05
La nueva "b" es sustituida por "m" (-).
ITERACION: 11
a= 2.128906
b= 2.126953
fa= 0.004187
fb= -0.012579
m= 2.127930
fm= -0.004202
fm*fa= -0.000018
11 2.12891 2.12695 0.00418669 -0.0125794 2.12793 -0.00420246 -1.75944e-05
La nueva "b" es sustituida por "m" (-).
ITERACION: 12
a= 2.128906
b= 2.127930
fa= 0.004187
fb= -0.004202
m= 2.128418
El valor a llegado al criterio de convergencia.
fm= -0.000009
fm*fa= -0.000000
fa= 0.004187
fb= -0.004202
12 2.12891 2.12793 0.00418669 -0.00420246 2.12842 -9.40741e-06 -3.93859e-08
2) ()= + ;

Médodo de bisección:
Proponer valor de a y b:
Ingrese valor de a: 1
Ingrese valor de b: 4
Ingrese la función original (con respecto a "x"): x^2+10*cos(x)
fa= 6.403023
fb= 9.463564
fa*fb 60.595417
No es posible continuar con el método.
Ingresa valores válidos de "a" y "b".

13
El programa se cerrará.
INICIANDO NUEVAMENTE Y PROBANDO OTROS VALORES DE “a” y “b”:
Médodo de bisección:
Proponer valor de a y b:
Ingrese valor de a: pi
Ingrese valor de b: pi/2
Ingrese la función original (con respecto a "x"): x^2+10*cos(x)
fa= -0.130396
fb= 2.467401
fa*fb -0.321738
El método puede continuar.
Ingrese el número máximo de iteraciones: 25
Ingrese el valor de epsilon para el criterio de convergencia: .0001
ITERACION: 1
a= 3.141593
b= 1.570796
fa= -0.130396
fb= 2.467401
m= 2.356194
fm= -1.519415
fm*fa= 0.198125
1 3.1416 1.5708 -0.1304 2.4674 2.3562 -1.5194 0.19813
La nueva "a" es sustituida por "m" (+).
ITERACION: 2
a= 2.356194
b= 1.570796
fa= -1.519415
fb= 2.467401
m= 1.963495
fm= 0.028480
fm*fa= -0.043273
2 2.3562 1.5708 -1.5194 2.4674 1.9635 0.02848 -0.043273
La nueva "b" es sustituida por "m" (-).
ITERACION: 3
a= 2.356194
b= 1.963495
fa= -1.519415
fb= 0.028480
m= 2.159845
fm= -0.890772
fm*fa= 1.353453
3 2.3562 1.9635 -1.5194 0.02848 2.1598 -0.89077 1.3535
La nueva "a" es sustituida por "m" (+).
ITERACION: 4
a= 2.159845
b= 1.963495
fa= -0.890772
fb= 0.028480
m= 2.061670
fm= -0.463483
fm*fa= 0.412858
4 2.1598 1.9635 -0.89077 0.02848 2.0617 -0.46348 0.41286
La nueva "a" es sustituida por "m" (+).
ITERACION: 5
a= 2.061670
b= 1.963495

14
fa= -0.463483
fb= 0.028480
m= 2.012583
fm= -0.225061
fm*fa= 0.104312
5 2.0617 1.9635 -0.46348 0.02848 2.0126 -0.22506 0.10431
La nueva "a" es sustituida por "m" (+).
ITERACION: 6
a= 2.012583
b= 1.963495
fa= -0.225061
fb= 0.028480
m= 1.988039
fm= -0.100114
fm*fa= 0.022532
6 2.0126 1.9635 -0.22506 0.02848 1.988 -0.10011 0.022532
La nueva "a" es sustituida por "m" (+).
ITERACION: 7
a= 1.988039
b= 1.963495
fa= -0.100114
fb= 0.028480
m= 1.975767
fm= -0.036264
fm*fa= 0.003631
7 1.988 1.9635 -0.10011 0.02848 1.9758 -0.036264 0.0036305
La nueva "a" es sustituida por "m" (+).
ITERACION: 8
a= 1.975767
b= 1.963495
fa= -0.036264
fb= 0.028480
m= 1.969631
fm= -0.004003
fm*fa= 0.000145
8 1.9758 1.9635 -0.036264 0.02848 1.9696 -0.0040029 0.00014516
La nueva "a" es sustituida por "m" (+).
ITERACION: 9
a= 1.969631
b= 1.963495
fa= -0.004003
fb= 0.028480
m= 1.966563
fm= 0.012211
fm*fa= -0.000049
9 1.9696 1.9635 -0.0040029 0.02848 1.9666 0.012211 -4.8879e-05
La nueva "b" es sustituida por "m" (-).
ITERACION: 10
a= 1.969631
b= 1.966563
fa= -0.004003
fb= 0.012211
m= 1.968097
fm= 0.004097
fm*fa= -0.000016
10 1.96963 1.96656 -0.00400288 0.012211 1.9681 0.00409713 -1.64003e-05

15
La nueva "b" es sustituida por "m" (-).
ITERACION: 11
a= 1.969631
b= 1.968097
fa= -0.004003
fb= 0.004097
m= 1.968864
El valor a llegado al criterio de convergencia.
fm= 0.000045
fm*fa= -0.000000
fa= -0.004003
fb= 0.004097
11 1.96963 1.9681 -0.00400288 0.004097131.96886 4.5393e-05 -1.81703e-07
3) ( ) = + − +− .

Médodo de bisección:
Proponer valor de a y b:
Ingrese valor de a: 4
Ingrese valor de b: -1
Ingrese la función original (con respecto a "x"): exp(x)+2^-x+9*cos(x)-7.5
fa= 41.277857
fb= -0.269400
fa*fb -11.120247
El método puede continuar.
Ingrese el número máximo de iteraciones: 30
Ingrese el valor de epsilon para el criterio de convergencia: .0001
ITERACION: 1
a= 4.000000
b= -1.000000
fa= 41.277857
fb= -0.269400
m= 1.500000
fm= -2.028123
fm*fa= -83.716561
1 4 -1 41.2779 -0.2694 1.5 -2.02812 -83.7166
La nueva "b" es sustituida por "m" (-).
ITERACION: 2
a= 4.000000
b= 1.500000
fa= 41.277857
fb= -2.028123
m= 2.750000
fm= -0.027439
fm*fa= -1.132608
2 4 1.5 41.2779 -2.02812 2.75 -0.0274386 -1.13261
La nueva "b" es sustituida por "m" (-).
ITERACION: 3
a= 4.000000
b= 2.750000
fa= 41.277857
fb= -0.027439
m= 3.375000
fm= 13.064716
fm*fa= 539.283503

16
3 4 2.75 41.27786 -0.02743863 3.375 13.06472 539.2835
La nueva "a" es sustituida por "m" (+).
ITERACION: 4
a= 3.375000
b= 2.750000
fa= 13.064716
fb= -0.027439
m= 3.062500
fm= 5.028779
fm*fa= 65.699571
4 3.375 2.75 13.0647 -0.0274386 3.0625 5.02878 65.6996
La nueva "a" es sustituida por "m" (+).
ITERACION: 5
a= 3.062500
b= 2.750000
fa= 5.028779
fb= -0.027439
m= 2.906250
fm= 2.169572
fm*fa= 10.910296
5 3.0625 2.75 5.02878 -0.0274386 2.90625 2.16957 10.9103
La nueva "a" es sustituida por "m" (+).
ITERACION: 6
a= 2.906250
b= 2.750000
fa= 2.169572
fb= -0.027439
m= 2.828125
fm= 0.993103
fm*fa= 2.154608
6 2.9063 2.75 2.1696 -0.027439 2.8281 0.9931 2.1546
La nueva "a" es sustituida por "m" (+).
ITERACION: 7
a= 2.828125
b= 2.750000
fa= 0.993103
fb= -0.027439
m= 2.789063
fm= 0.463924
fm*fa= 0.460725
7 2.8281 2.75 0.9931 -0.027439 2.7891 0.46392 0.46072
La nueva "a" es sustituida por "m" (+).
ITERACION: 8
a= 2.789063
b= 2.750000
fa= 0.463924
fb= -0.027439
m= 2.769531
fm= 0.213588
fm*fa= 0.099089
8 2.7891 2.75 0.46392 -0.027439 2.7695 0.21359 0.099089
La nueva "a" es sustituida por "m" (+).
ITERACION: 9
a= 2.769531
b= 2.750000
fa= 0.213588

17
fb= -0.027439
m= 2.759766
fm= 0.091920
fm*fa= 0.019633
9 2.7695 2.75 0.21359 -0.0274392.7598 0.09192 0.019633
La nueva "a" es sustituida por "m" (+).
ITERACION: 10
a= 2.759766
b= 2.750000
fa= 0.091920
fb= -0.027439
m= 2.754883
fm= 0.031953
fm*fa= 0.002937
10 2.75977 2.75 0.0919197 -0.0274386 2.75488 0.0319529 0.00293711
La nueva "a" es sustituida por "m" (+).
ITERACION: 11
a= 2.754883
b= 2.750000
fa= 0.031953
fb= -0.027439
m= 2.752441
fm= 0.002185
fm*fa= 0.000070
11 2.75488 2.75 0.0319529 -0.0274386 2.75244 0.00218539 6.98298e-05
La nueva "a" es sustituida por "m" (+).
ITERACION: 12
a= 2.752441
b= 2.750000
fa= 0.002185
fb= -0.027439
m= 2.751221
fm= -0.012645
fm*fa= -0.000028
12 2.75244 2.75 0.00218539 -0.0274386 2.75122 -0.0126445 -2.76333e-05
La nueva "b" es sustituida por "m" (-).
ITERACION: 13
a= 2.752441
b= 2.751221
fa= 0.002185
fb= -0.012645
m= 2.751831
fm= -0.005234
fm*fa= -0.000011
13 2.75244 2.75122 0.00218539 -0.0126445 2.75183 -0.00523406 -1.14385e-05
La nueva "b" es sustituida por "m" (-).
ITERACION: 14
a= 2.752441
b= 2.751831
fa= 0.002185
fb= -0.005234
m= 2.752136
fm= -0.001525
fm*fa= -0.000003
14 2.75244 2.75183 0.00218539 -0.00523406 2.75214 -0.00152545 -3.33372e-06
La nueva "b" es sustituida por "m" (-).

18
ITERACION: 15
a= 2.752441
b= 2.752136
fa= 0.002185
fb= -0.001525
m= 2.752289
fm= 0.000330
fm*fa= 0.000001
15 2.75244 2.75214 0.00218539 -0.00152545 2.75229 0.00032969 7.20503e-07
La nueva "a" es sustituida por "m" (+).
ITERACION: 16
a= 2.752289
b= 2.752136
fa= 0.000330
fb= -0.001525
m= 2.752213
fm= -0.000598
fm*fa= -0.000000
16 2.75229 2.75214 0.00032969 -0.00152545 2.75221 -0.000597952 -1.97139e-07
La nueva "b" es sustituida por "m" (-).
ITERACION: 17
a= 2.752289
b= 2.752213
fa= 0.000330
fb= -0.000598
m= 2.752251
fm= -0.000134
fm*fa= -0.000000
17 2.75229 2.75221 0.00032969 -0.000597952 2.75225 -0.000134148 -4.42274e-08
La nueva "b" es sustituida por "m" (-).
ITERACION: 18
a= 2.752289
b= 2.752251
fa= 0.000330
fb= -0.000134
m= 2.752270
El valor a llegado al criterio de convergencia.
fm= 0.000098
fm*fa= 0.000000
fa= 0.000330
fb= -0.000134
18 2.75229 2.75225 0.00032969 -0.000134148 2.75227 9.77665e-05 3.22326e-08

19
Jacobi.
Fundamentación teórica:

Es un método iterativo de sustitución simultánea, que parte de un vector de valores iniciales:


1
=(2)
3

este es el vector aproximación a la solución x después de k iteraciones, entonces se tiene


para la siguiente aproximación:
1 − 12 2 − 13 3
1 +1 11
+1 = ( 2 +1) = 2 − 21 1 − 23 3

3 +1 22

− −
31 32
3 1 3

( 33 )

y para un sistema de n ecuaciones con n incógnitas y usando notación más compacta y de


mayor utilidad en programación se tiene:
+1 = 1 ∗ [ −∑ , ∗ ]
=1 ≠

Tanto para este método como para el de Gauss-Seidel, se llegará a una convergencia siempre
que se cumpla el criterio de la diagonal dominante, en donde el valor absoluto de la suma de
los elementos de la fila o columna son menores que el que ocupa la posición en la diagonal de
la matriz, es decir:

| 1≤ ≤
| > ∑ | ,| | | > ∑ | ,|
=1 =1
≠ ≠

Se debe tomar en cuenta que este teorema no será de mucha utilidad si se toma al pie de la
letra, ya que difícilmente un sistema de ecuaciones lineales posee matrices con coeficientes
diagonalmente dominantes, sin embargo, si se arreglan ecuaciones para para tener el sistema
lo más cercano posible a las condiciones del teorema, algún beneficio se puede obtener.

20
Código del programa en Matlab (Jacobi):
%ESIQIE IPN, periódo 17/1... 2016
%Solución de sistema de ecuaciones, Método de
Jacobi %Realizado por Claudia Anabel Fiscal Ireta
%A cargo del M. en C. Hipólito Ruíz Martínez, Grupo 1IM44, ESIQIE,
IPN clear, clc
A=input('Ingresa la matriz de coeficientes del sistema entre []: ');
b=input('Ingresa la matriz de valores del sistema entre []: ');
x0=input('Ingresa la matriz de valores iniciales: ');
Nmax=input('Ingresa el número máximo de iteraciones: ');
Ep=input('Ingrese valor de épsilon: ');
[n,m]=size(A);
p=length(b);
if(n==p && m==p)
for k=1:1:Nmax
fprintf('Iteración:%3i\n',k)
%
for i=1:1:n
suma=0;
for j=1:1:n
if(i~=j)
suma=suma+A(i,j)*x0(j);
end
end
x(i)=(b(i)-suma)/A(i,i);
dif(i)=abs(x0(i)-x(i));
end
for i=1:1:n
fprintf('Para x(%2i)=%12.6f su
diferencia= %12.6f\n',i,x(i),dif(i))
end
q=0;
for i=1:1:n
if dif(i)<=Ep
q=q+1;
end
x0(i)=x(i);
if(q==n)
disp('**************************************')
disp('Las raices por método de Jacobi
son:'),disp(x')
disp('**************************************')
break
end
end
%x0(i)=x(i);
end
%%%%%%%%%%%%%%%%%%%%%%%%
else disp('Las dimensiones de matrices no coinciden.
Verifica.') end

21
Ejemplos resueltos que comprueban la funcionalidad del programa (Jacobi):
1) 12 1 − 2 + 4 3 = 10; 3 1 − 15 2 − 2 3 = 20; −2 1 + 3 2 + 18 3 = 30

Ingresa la matriz de coeficientes del sistema entre []: [12 -1 4; 3 -15 -2; -2 3 18]
Ingresa la matriz de valores del sistema entre []: [10 20 30]
Ingresa la matriz de valores iniciales: [0 0 0]
Ingresa el número máximo de iteraciones: 30
Ingrese valor de épsilon: .0001
Iteración: 1
Para x( 1)= 0.833333 su diferencia= 0.833333
Para x( 2)= -1.333333 su diferencia= 1.333333
Para x( 3)= 1.666667 su diferencia= 1.666667
Iteración: 2
Para x( 1)= 0.166667 su diferencia= 0.666667
Para x( 2)= -1.388889 su diferencia= 0.055556
Para x( 3)= 1.981481 su diferencia= 0.314815
Iteración: 3
Para x( 1)= 0.057099 su diferencia= 0.109568
Para x( 2)= -1.564198 su diferencia= 0.175309
Para x( 3)= 1.916667 su diferencia= 0.064815
Iteración: 4
Para x( 1)= 0.064095 su diferencia= 0.006996
Para x( 2)= -1.577469 su diferencia= 0.013272
Para x( 3)= 1.933711 su diferencia= 0.017044
Iteración: 5
Para x( 1)= 0.057307 su diferencia= 0.006787
Para x( 2)= -1.578342 su diferencia= 0.000873
Para x( 3)= 1.936700 su diferencia= 0.002989
Iteración: 6
Para x( 1)= 0.056238 su diferencia= 0.001069
Para x( 2)= -1.580098 su diferencia= 0.001756
Para x( 3)= 1.936091 su diferencia= 0.000609
Iteración: 7
Para x( 1)= 0.056295 su diferencia= 0.000057
Para x( 2)= -1.580231 su diferencia= 0.000133
Para x( 3)= 1.936265 su diferencia= 0.000174
Iteración: 8
Para x( 1)= 0.056226 su diferencia= 0.000069
Para x( 2)= -1.580243 su diferencia= 0.000012
Para x( 3)= 1.936294 su diferencia= 0.000028
**************************************
Las raices por método de Jacobi son:
0.0562
-1.5802
1.9363
**************************************
2) 19 1 − 5 2 + 10 3 − 4 = 28; 1 − 15 2 + 11 3 − 2 4 = 21; 5 1 + 3 2 + 10 3 − 3 4 = 17; −2 1 + 5
2 + 13 3 − 24 4 = 32;

Ingresa la matriz de coeficientes del sistema entre []: [19 -5 10 -1; 1 -15 11 -2; 5 3 10 -3; -2 5 13 -24]
Ingresa la matriz de valores del sistema entre []: [28 21 17 32]
Ingresa la matriz de valores iniciales: [0 0 0 0]

22
Ingresa el número máximo de iteraciones: 30
Ingrese valor de épsilon: .0001
Iteración: 1
Para x( 1)= 1.473684 su diferencia= 1.473684
Para x( 2)= -1.400000 su diferencia= 1.400000
Para x( 3)= 1.700000 su diferencia= 1.700000
Para x( 4)= -1.333333 su diferencia= 1.333333
Iteración: 2
Para x( 1)= 0.140351 su diferencia= 1.333333
Para x( 2)= 0.122690 su diferencia= 1.522690
Para x( 3)= 0.983158 su diferencia= 0.716842
Para x( 4)= -0.826974 su diferencia= 0.506360
Iteración: 3
Para x( 1)= 0.944995 su diferencia= 0.804644
Para x( 2)= -0.559398 su diferencia= 0.682088
Para x( 3)= 1.344925 su diferencia= 0.361768
Para x( 4)= -0.786925 su diferencia= 0.040049
Iteración: 4
Para x( 1)= 0.577202 su diferencia= 0.367793
Para x( 2)= -0.245798 su diferencia= 0.313599
Para x( 3)= 1.159245 su diferencia= 0.185681
Para x( 4)= -0.800123 su diferencia= 0.013198
Iteración: 5
Para x( 1)= 0.756760 su diferencia= 0.179558
Para x( 2)= -0.404724 su diferencia= 0.158926
Para x( 3)= 1.245102 su diferencia= 0.085857
Para x( 4)= -0.804717 su diferencia= 0.004595
Iteración: 6
Para x( 1)= 0.669508 su diferencia= 0.087252
Para x( 2)= -0.329179 su diferencia= 0.075545
Para x( 3)= 1.201622 su diferencia= 0.043480
Para x( 4)= -0.806284 su diferencia= 0.001567
Iteración: 7
Para x( 1)= 0.712189 su diferencia= 0.042682
Para x( 2)= -0.366672 su diferencia= 0.037493
Para x( 3)= 1.222115 su diferencia= 0.020493
Para x( 4)= -0.806826 su diferencia= 0.000542
Iteración: 8
Para x( 1)= 0.691509 su diferencia= 0.020681
Para x( 2)= -0.348726 su diferencia= 0.017946
Para x( 3)= 1.211859 su diferencia= 0.010256
Para x( 4)= -0.807094 su diferencia= 0.000268
Iteración: 9
Para x( 1)= 0.701615 su diferencia= 0.010106
Para x( 2)= -0.357590 su diferencia= 0.008864
Para x( 3)= 1.216735 su diferencia= 0.004876
Para x( 4)= -0.807187 su diferencia= 0.000093
Iteración: 10
Para x( 1)= 0.696711 su diferencia= 0.004904
Para x( 2)= -0.353328 su diferencia= 0.004262
Para x( 3)= 1.214314 su diferencia= 0.002422
Para x( 4)= -0.807234 su diferencia= 0.000047
Iteración: 11
Para x( 1)= 0.699105 su diferencia= 0.002394
Para x( 2)= -0.355425 su diferencia= 0.002097
Para x( 3)= 1.215473 su diferencia= 0.001159

23
Para x( 4)= -0.807249 su diferencia= 0.000015
Iteración: 12
Para x( 1)= 0.697942 su diferencia= 0.001163
Para x( 2)= -0.354413 su diferencia= 0.001012
Para x( 3)= 1.214900 su diferencia= 0.000572
Para x( 4)= -0.807258 su diferencia= 0.000008
Iteración: 13
Para x( 1)= 0.698509 su diferencia= 0.000567
Para x( 2)= -0.354909 su diferencia= 0.000496
Para x( 3)= 1.215176 su diferencia= 0.000275
Para x( 4)= -0.807260 su diferencia= 0.000002
Iteración: 14
Para x( 1)= 0.698234 su diferencia= 0.000276
Para x( 2)= -0.354669 su diferencia= 0.000240
Para x( 3)= 1.215040 su diferencia= 0.000135
Para x( 4)= -0.807262 su diferencia= 0.000002
Iteración: 15
Para x( 1)= 0.698368 su diferencia= 0.000134
Para x( 2)= -0.354787 su diferencia= 0.000117
Para x( 3)= 1.215105 su diferencia= 0.000065
Para x( 4)= -0.807262 su diferencia= 0.000000
Iteración: 16
Para x( 1)= 0.698303 su diferencia= 0.000065
Para x( 2)= -0.354730 su diferencia= 0.000057
Para x( 3)= 1.215073 su diferencia= 0.000032
Para x( 4)= -0.807262 su diferencia= 0.000000
**************************************
Las raices por método de Jacobi son:
0.6983
-0.3547
1.2151
-0.8073
**************************************
3) −8 1 + 3 2 + 5 3 + 2 4 = 10; 1 + 9 2 + 8 3 + 4 4 = 15; 0 1 + 2 + 4 3 + 4 = −2; 2 1 + 2 + 3
− 6 4 = −3;

Ingresa la matriz de coeficientes del sistema entre []: [-8 3 5 2; 1 9 8 4; 0 1 4 1; 2 1 1 -6]


Ingresa la matriz de valores del sistema entre []: [10 15 -2 -3]
Ingresa la matriz de valores iniciales: [0 0 0 0]
Ingresa el número máximo de iteraciones: 30
Ingrese valor de épsilon: .0001
Iteración: 1
Para x( 1)= -1.250000 su diferencia= 1.250000
Para x( 2)= 1.666667 su diferencia= 1.666667
Para x( 3)= -0.500000 su diferencia= 0.500000
Para x( 4)= 0.500000 su diferencia= 0.500000
Iteración: 2
Para x( 1)= -0.812500 su diferencia= 0.437500
Para x( 2)= 2.027778 su diferencia= 0.361111
Para x( 3)= -1.041667 su diferencia= 0.541667
Para x( 4)= 0.277778 su diferencia= 0.222222

24
Iteración: 3
Para x( 1)= -1.071181 su diferencia= 0.258681
Para x( 2)= 2.559414 su diferencia= 0.531636
Para x( 3)= -1.076389 su diferencia= 0.034722
Para x( 4)= 0.393519 su diferencia= 0.115741
Iteración: 4
Para x( 1)= -0.864583 su diferencia= 0.206597
Para x( 2)= 2.567580 su diferencia= 0.008166
Para x( 3)= -1.238233 su diferencia= 0.161844
Para x( 4)= 0.390111 su diferencia= 0.003408
Iteración: 5
Para x( 1)= -0.963526 su diferencia= 0.098942
Para x( 2)= 2.690001 su diferencia= 0.122421
Para x( 3)= -1.239423 su diferencia= 0.001190
Para x( 4)= 0.433363 su diferencia= 0.043253
Iteración: 6
Para x( 1)= -0.907548 su diferencia= 0.055978
Para x( 2)= 2.682828 su diferencia= 0.007172
Para x( 3)= -1.280841 su diferencia= 0.041418
Para x( 4)= 0.420588 su diferencia= 0.012776
Iteración: 7
Para x( 1)= -0.939318 su diferencia= 0.031770
Para x( 2)= 2.719103 su diferencia= 0.036275
Para x( 3)= -1.275854 su diferencia= 0.004987
Para x( 4)= 0.431148 su diferencia= 0.010561
Iteración: 8
Para x( 1)= -0.919958 su diferencia= 0.019360
Para x( 2)= 2.713506 su diferencia= 0.005597
Para x( 3)= -1.287563 su diferencia= 0.011709
Para x( 4)= 0.427435 su diferencia= 0.003713
Iteración: 9
Para x( 1)= -0.930303 su diferencia= 0.010345
Para x( 2)= 2.723413 su diferencia= 0.009907
Para x( 3)= -1.285235 su diferencia= 0.002327
Para x( 4)= 0.431005 su diferencia= 0.003569
Iteración: 10
Para x( 1)= -0.924241 su diferencia= 0.006062
Para x( 2)= 2.720908 su diferencia= 0.002506
Para x( 3)= -1.288604 su diferencia= 0.003369
Para x( 4)= 0.429595 su diferencia= 0.001409
Iteración: 11
Para x( 1)= -0.927639 su diferencia= 0.003398
Para x( 2)= 2.723855 su diferencia= 0.002947
Para x( 3)= -1.287626 su diferencia= 0.000979
Para x( 4)= 0.430637 su diferencia= 0.001042
Iteración: 12
Para x( 1)= -0.925661 su diferencia= 0.001977
Para x( 2)= 2.722900 su diferencia= 0.000955
Para x( 3)= -1.288623 su diferencia= 0.000997
Para x( 4)= 0.430159 su diferencia= 0.000478
Iteración: 13
Para x( 1)= -0.926762 su diferencia= 0.001101
Para x( 2)= 2.723779 su diferencia= 0.000879
Para x( 3)= -1.288265 su diferencia= 0.000358
Para x( 4)= 0.430492 su diferencia= 0.000334
Iteración: 14

25
Para x( 1)= -0.926125 su diferencia= 0.000637
Para x( 2)= 2.723434 su diferencia= 0.000345
Para x( 3)= -1.288568 su diferencia= 0.000303
Para x( 4)= 0.430332 su diferencia= 0.000161
Iteración: 15
Para x( 1)= -0.926484 su diferencia= 0.000359
Para x( 2)= 2.723705 su diferencia= 0.000270
Para x( 3)= -1.288442 su diferencia= 0.000126
Para x( 4)= 0.430436 su diferencia= 0.000104
Iteración: 16
Para x( 1)= -0.926278 su diferencia= 0.000206
Para x( 2)= 2.723586 su diferencia= 0.000119
Para x( 3)= -1.288535 su diferencia= 0.000094
Para x( 4)= 0.430382 su diferencia= 0.000054
Iteración: 17
Para x( 1)= -0.926394 su diferencia= 0.000116
Para x( 2)= 2.723670 su diferencia= 0.000084
Para x( 3)= -1.288492 su diferencia= 0.000043
Para x( 4)= 0.430416 su diferencia= 0.000033
Iteración: 18
Para x( 1)= -0.926327 su diferencia= 0.000067
Para x( 2)= 2.723630 su diferencia= 0.000040
Para x( 3)= -1.288521 su diferencia= 0.000029
Para x( 4)= 0.430398 su diferencia= 0.000018
**************************************
Las raices por método de Jacobi son:
-0.9263
2.7236
-1.2885
0.4304
**************************************

26
Gauss-Seidel.
Fundamentación teórica:

Es un método iterativo de sustitución sucesiva, que parte de un vector de valores iniciales:


1
=(2)
3

En este método, los valores se van calculando en la (k+1)-ésima iteración y se emplean para estimar los valores faltantes de esa misma iteración; es decir, con ( ) se calcula ( +1) de
acuerdo con:
1 − 12 2 − 13 3
1 +1 11
+1 = ( 2 +1) = 2 − 21 1 +1 − 23 3

3 +1 22

− +1 − +1
31 32
3 1 2

( 33 )

y para un sistema de n ecuaciones con n incógnitas y usando notación más compacta y de


mayor utilidad en programación se tiene:
−1

1
+1
= ∗[ −∑ +1 − ∑ ∗ ]

, ,

=1 = +1

Tanto para Jacobi como en este método, se llegará a una convergencia siempre que se cumpla el
criterio de la diagonal dominante, en donde el valor absoluto de la suma de los elementos de la fila
o columna son menores que el que ocupa la posición en la diagonal de la matriz, es decir:

| 1≤ ≤
| > ∑ | ,| | | > ∑ | ,|
=1 =1

Se debe tomar en cuenta que este teorema no será de mucha utilidad si se toma al pie de la
letra, ya que difícilmente un sistema de ecuaciones lineales posee matrices con coeficientes
diagonalmente dominantes, sin embargo, si se arreglan ecuaciones para para tener el sistema
lo más cercano posible a las condiciones del teorema, algún beneficio se puede obtener.

27
Código del programa en Matlab (Gauss-Seidel):
%Programa para el método numérico de Gauss-Seidel. %Métodos numéricos,
Profesor Hipólito Ruíz, ESIQIE,IPN. %Realizado por Claudia Anabel Fiscal
Ireta, periodo 2017/1
%************************************************************************
*
clear, clc
A=input('Ingresa la matriz de coeficientes del sistema entre []: ');
b=input('Ingresa la matriz de valores del sistema entre []: ');
x0=input('Ingresa la matriz de valores iniciales: ');
Nmax=input('Ingresa el número máximo de iteraciones: ');
Ep=input('Ingrese valor de épsilon: ');
[n,m]=size(A);
p=length(b);
if(n==p && m==p)
for k=1:1:Nmax
fprintf('Iteración:%3i\n',k)
%
for i=1:1:n
suma=0;
for j=1:1:n
if(i~=j)
suma=suma+A(i,j)*x0(j);
end
end
x(i)=(b(i)-suma)/A(i,i);
dif(i)=abs(x0(i)-x(i));
x0(i)=x(i);
end
for i=1:1:n
fprintf('Para x(%2i)=%12.6f su
diferencia= %12.6f\n',i,x(i),dif(i))
end
q=1;
for i=1:1:n
if dif(i)<=Ep
q=q+1;
if(q==n)
disp('**************************************')
disp('Las raices por método de Gauss-Seidel
son:'),disp(x')
disp('**************************************')
break
end
end
end
%
end
%%%%%%%%%%%%%%%%%%%%%%%%
else disp('Las dimensiones de matrices no coinciden.
Verifica.') end

28
Ejemplos resueltos que comprueban la funcionalidad del programa (Gauss-
Seidel):
1) 12 1 − 2 + 4 3 = 10; 3 1 − 15 2 − 2 3 = 20; −2 1 + 3 2 + 18 3 = 30

Ingresa la matriz de coeficientes del sistema entre []: [12 -1 4; 3 -15 -2; -2 3 18]
Ingresa la matriz de valores del sistema entre []: [10 20 30]
Ingresa la matriz de valores iniciales: [0 0 0]
Ingresa el número máximo de iteraciones: 30
Ingrese valor de épsilon: .0001
Iteración: 1
Para x( 1)= 0.833333 su diferencia= 0.833333
Para x( 2)= -1.166667 su diferencia= 1.166667
Para x( 3)= 1.953704 su diferencia= 1.953704
Iteración: 2
Para x( 1)= 0.084877 su diferencia= 0.748457
Para x( 2)= -1.576852 su diferencia= 0.410185
Para x( 3)= 1.938906 su diferencia= 0.014798
Iteración: 3
Para x( 1)= 0.055627 su diferencia= 0.029250
Para x( 2)= -1.580729 su diferencia= 0.003877
Para x( 3)= 1.936302 su diferencia= 0.002604
Iteración: 4
Para x( 1)= 0.056172 su diferencia= 0.000545
Para x( 2)= -1.580273 su diferencia= 0.000456
Para x( 3)= 1.936287 su diferencia= 0.000015
Iteración: 5
Para x( 1)= 0.056215 su diferencia= 0.000043
Para x( 2)= -1.580262 su diferencia= 0.000011
Para x( 3)= 1.936290 su diferencia= 0.000003

**************************************
Las raices por método de Gauss-Seidel son:
0.0562
-1.5803
1.9363
**************************************
2) 19 1 − 5 2 + 10 3 − 4 = 28; 1 − 15 2 + 11 3 − 2 4 = 21; 5 1 + 3 2 + 10 3 − 3 4 = 17; −2 1 + 5 2 + 13
3 − 24 4 = 32;

Ingresa la matriz de coeficientes del sistema entre []: [19 -5 10 -1; 1 -15 11 -2; 5 3 10 -3; -2 5 13 -24]
Ingresa la matriz de valores del sistema entre []: [28 21 17 32]
Ingresa la matriz de valores iniciales: [0 0 0 0]
Ingresa el número máximo de iteraciones: 30
Ingrese valor de épsilon: .0001
Iteración: 1
Para x( 1)= 1.473684 su diferencia= 1.473684
Para x( 2)= -1.301754 su diferencia= 1.301754
Para x( 3)= 1.353684 su diferencia= 1.353684
Para x( 4)= -0.994094 su diferencia= 0.994094
Iteración: 2

29
Para x( 1)= 0.366331 su diferencia= 1.107353
Para x( 2)= -0.250330 su diferencia= 1.051424
Para x( 3)= 1.293705 su diferencia= 0.059979
Para x( 4)= -0.715256 su diferencia= 0.278838
Iteración: 3
Para x( 1)= 0.689265 su diferencia= 0.322934
Para x( 2)= -0.309964 su diferencia= 0.059634
Para x( 3)= 1.233780 su diferencia= 0.059926
Para x( 4)= -0.787051 su diferencia= 0.071795
Iteración: 4
Para x( 1)= 0.701333 su diferencia= 0.012068
Para x( 2)= -0.343532 su diferencia= 0.033568
Para x( 3)= 1.216278 su diferencia= 0.017502
Para x( 4)= -0.804530 su diferencia= 0.017479
Iteración: 5
Para x( 1)= 0.700791 su diferencia= 0.000542
Para x( 2)= -0.354073 su diferencia= 0.010540
Para x( 3)= 1.214467 su diferencia= 0.001811
Para x( 4)= -0.807661 su diferencia= 0.003131
Iteración: 6
Para x( 1)= 0.698805 su diferencia= 0.001986
Para x( 2)= -0.355115 su diferencia= 0.001043
Para x( 3)= 1.214834 su diferencia= 0.000366
Para x( 4)= -0.807515 su diferencia= 0.000147
Iteración: 7
Para x( 1)= 0.698346 su diferencia= 0.000459
Para x( 2)= -0.354897 su diferencia= 0.000218
Para x( 3)= 1.215042 su diferencia= 0.000208
Para x( 4)= -0.807318 su diferencia= 0.000197
Iteración: 8
Para x( 1)= 0.698304 su diferencia= 0.000042
Para x( 2)= -0.354773 su diferencia= 0.000124
Para x( 3)= 1.215084 su diferencia= 0.000043
Para x( 4)= -0.807266 su diferencia= 0.000052
**************************************
Las raices por método de Gauss-Seidel son:
0.6983
-0.3548
1.2151
-0.8073
**************************************
3) −8 1 + 3 2 + 5 3 + 2 4 = 10; 1 + 9 2 + 8 3 + 4 4 = 15; 0 1 + 2 + 4 3 + 4 = −2; 2 1 + 2 + 3 − 6 4
= −3;

Ingresa la matriz de coeficientes del sistema entre []: [-8 3 5 2; 1 9 8 4; 0 1 4 1; 2 1 1 -6]


Ingresa la matriz de valores del sistema entre []: [10 15 -2 -3]
Ingresa la matriz de valores iniciales: [0 0 0 0]

30
Ingresa el número máximo de iteraciones: 30
Ingrese valor de épsilon: .0001
Iteración: 1
Para x( 1)= -1.250000 su diferencia= 1.250000
Para x( 2)= 1.805556 su diferencia= 1.805556
Para x( 3)= -0.951389 su diferencia= 0.951389
Para x( 4)= 0.225694 su diferencia= 0.225694
Iteración: 2
Para x( 1)= -1.111111 su diferencia= 0.138889
Para x( 2)= 2.535494 su diferencia= 0.729938
Para x( 3)= -1.190297 su diferencia= 0.238908
Para x( 4)= 0.353829 su diferencia= 0.128135
Iteración: 3
Para x( 1)= -0.954668 su diferencia= 0.156443
Para x( 2)= 2.673525 su diferencia= 0.138032
Para x( 3)= -1.256839 su diferencia= 0.066542
Para x( 4)= 0.417892 su diferencia= 0.064063
Iteración: 4
Para x( 1)= -0.928479 su diferencia= 0.026189
Para x( 2)= 2.701291 su diferencia= 0.027766
Para x( 3)= -1.279796 su diferencia= 0.022957
Para x( 4)= 0.427423 su diferencia= 0.009531
Iteración: 5
Para x( 1)= -0.930032 su diferencia= 0.001553
Para x( 2)= 2.717634 su diferencia= 0.016343
Para x( 3)= -1.286264 su diferencia= 0.006468
Para x( 4)= 0.428551 su diferencia= 0.001128
Iteración: 6
Para x( 1)= -0.927665 su diferencia= 0.002368
Para x( 2)= 2.722619 su diferencia= 0.004985
Para x( 3)= -1.287793 su diferencia= 0.001528
Para x( 4)= 0.429916 su diferencia= 0.001365
Iteración: 7
Para x( 1)= -0.926409 su diferencia= 0.001256
Para x( 2)= 2.723232 su diferencia= 0.000612
Para x( 3)= -1.288287 su diferencia= 0.000494
Para x( 4)= 0.430354 su diferencia= 0.000438
Iteración: 8
Para x( 1)= -0.926379 su diferencia= 0.000030
Para x( 2)= 2.723473 su diferencia= 0.000241
Para x( 3)= -1.288457 su diferencia= 0.000170
Para x( 4)= 0.430376 su diferencia= 0.000022
Iteración: 9
Para x( 1)= -0.926389 su diferencia= 0.000010
Para x( 2)= 2.723615 su diferencia= 0.000142
Para x( 3)= -1.288498 su diferencia= 0.000041
Para x( 4)= 0.430390 su diferencia= 0.000013
**************************************

31
Las raices por método de Gauss-Seidel son:
-0.9264
2.7236
-1.2885
0.4304
**************************************

Newton-Raphson multivariable.
Fundamentación teórica:

El método iterativo para sistemas de ecuaciones converge linealmente. Del mismo


modo que en el método de una incógnita; puede crearse un método de
convergencia cuadrática, es decir, el método de Newton-Raphson multivariable.
Se resume de la siguiente forma:
1 1
ℎ+ = − 1( , )
2 2
ℎ+ = − 2( , )

Para un sistema de 2 variables y 2 incógnitas y:

1 1 1
ℎ+ + =− ( , , )

2
ℎ+
2
+ 2
=− ( , , )

3
ℎ+ 3
+ 3
=− ( , , )

Para un sistema de 3 variables y 3 incógnitas.

Código del programa en Matlab (Newton-Raphson multivariable):


%ESIQIE IPN, periódo 17/1... 2016
%Solución de sistema de ecuaciones no lineales por Newton-
Raphson %multivariable.
%Realizado por Claudia Anabel Fiscal Ireta
%A cargo del M. en C. Hipólito Ruíz Martínez, Grupo 1IM44, ESIQIE,
IPN clear,clc
disp('Método de Newton-Raphson multivariable.')
nf=menu('¿Qué tipo de sistema es?','2x2','3x3');

32
switch nf
case 1
disp('Método de Newton-Raphson multivariable 2x2.')
x=sym('x');
y=sym('y');
f1=input('Ingrese la función 1 con respecto a "x" e "y": ');
f2=input('Ingrese la función 2 con respecto a "x" e "y": ');
x0=input('Ingrese el valor de x0: ');
y0=input('Ingrese el valor de y0: ');
vx0y0=[x0,y0];
nmax=input('Ingrese el número máximo de iteraciones: ');
Ep=input('Ingrese valor de épsilon: ');
dpf1_x=diff(f1,'x');
dpf1_y=diff(f1,'y');
dpf2_x=diff(f2,'x');
dpf2_y=diff(f2,'y');
%Se deja la sentencia abierta por comodidad del programador.
mtxdp=[dpf1_x dpf1_y;dpf2_x dpf2_y]
k=1;
fprintf('ITERACION: %3i \n',k)
while k<=nmax
f1i=subs(f1,[x,y],vx0y0);
f2i=subs(f2,[x,y],vx0y0);
A=subs(mtxdp,[x,y],vx0y0);
A=double(A);
disp('Matriz A: ')
fprintf('%9.6f %9.6f \n',A)
B=[-(f1i);-(f2i)];
B=double(B);
disp('Matriz B: ')
fprintf( '%9.6f \n',B)
hL=A\B;
hL=double(hL);
disp('Valores de "h" y "l" respectivamente:
') fprintf('%9.6f %9.6f \n',hL)
hLabs=abs(hL);
%%%%%%%%%%%%
if hLabs<=Ep
disp('********************************************')
disp('Ha llegado al criterio de convergencia.')
disp('********************************************')
break
else k=k+1;
disp('..............')
fprintf('ITERACION: %3i \n',k)
vx0y0=vx0y0+hL';
disp('Nuevo vector: ')
fprintf('[x]=%9.6f [y]=%9.6f \n',vx0y0')
end
end
case 2
disp('Método de Newton-Raphson multivariable 3x3.')
x=sym('x');
y=sym('y');
z=sym('z');
f1=input('Ingrese la función 1 con respecto a "x", "y" y "z": ');

33
f2=input('Ingrese la función 1 con respecto a "x", "y" y "z": ');
f3=input('Ingrese la función 1 con respecto a "x", "y" y "z": ');
x0=input('Ingrese el valor de x0: ');
y0=input('Ingrese el valor de y0: ');
z0=input('Ingrese el valor de z0: ');
vx0y0z0=[x0,y0,z0];
nmax=input('Ingrese el número máximo de iteraciones: ');
Ep=input('Ingrese valor de épsilon: ');
dpf1_x=diff(f1,'x');
dpf1_y=diff(f1,'y');
dpf1_z=diff(f1,'z');
dpf2_x=diff(f2,'x');
dpf2_y=diff(f2,'y');
dpf2_z=diff(f2,'z');
dpf3_x=diff(f3,'x');
dpf3_y=diff(f3,'y');
dpf3_z=diff(f3,'z');
mtxdp=[dpf1_x dpf1_y dpf1_z;
dpf2_x dpf2_y dpf2_z;
dpf3_x dpf3_y dpf3_z]
B=[-f1;-f2;-f3]
k=1;
fprintf('ITERACION: %3i \n',k)
while k<=nmax
f1i=subs(f1,[x,y,z],vx0y0z0);
f2i=subs(f2,[x,y,z],vx0y0z0);
f3i=subs(f3,[x,y,z],vx0y0z0);
A=subs(mtxdp,[x,y,z],vx0y0z0);
A=double(A);
disp('Matriz A: ')
fprintf('%9.6f %9.6f %9.6f \n',A)
B=[-(f1i);-(f2i);-(f3i)];
B=double(B);
disp('Matriz B: ')
fprintf('%9.6f \n',B)
hLm=A\B;
hLm=double(hLm);
disp('Valores de "h", "l" y "m" respectivamente:
') fprintf('%10.8f %10.8f %10.8f \n',hLm)
hLmabs=abs(hLm);
if hLmabs<=Ep
disp('********************************************')
disp('Ha llegado al criterio de convergencia.')
disp('********************************************')
break
else k=k+1;
disp('..............')
fprintf('ITERACION: %3i \n',k)
vx0y0z0=vx0y0z0+(hLm');
disp('Nuevo vector: ')
fprintf('[x]=%9.6f [y]=%9.6f [z]=%9.6f \n',vx0y0z0)
end
end
end

34
Ejemplos resueltos que comprueban la funcionalidad del programa (Newton-
Raphson multivariable):
1) 0.5 ( ) + ( ) = 2; cos( 2) − 5 2 = −3
Método de Newton-Raphson multivariable.
Método de Newton-Raphson multivariable 2x2.
Ingrese la función 1 con respecto a "x" e "y": 0.5*sin(x*y)+log(y)-2
Ingrese la función 2 con respecto a "x" e "y": cos(y^2)-5*x^2*y+3
Ingrese el valor de x0: .5
Ingrese el valor de y0: 4.5
Ingrese el número máximo de iteraciones: 30
Ingrese valor de épsilon: .0001
mtxdp =
[ (y*cos(x*y))/2, (x*cos(x*y))/2 + 1/y]
[ -10*x*y, - 5*x^2 - 2*y*sin(y^2)]
ITERACION: 1
Matriz A:
-1.413391 -22.500000
0.065179 -10.119726
Matriz B:
0.106886
2.455470
Valores de "h" y "l" respectivamente:
-0.078740 -0.067573
..............
ITERACION: 2
Nuevo vector:
[x]= 0.421260 [y]= 4.432427
Matriz A:
-0.647326 -18.672043
0.164088 -7.227085
Matriz B:
0.032857
0.233931
Valores de "h" y "l" respectivamente:
-0.035629 0.059683
..............
ITERACION: 3
Nuevo vector:
[x]= 0.385631 [y]= 4.492110
Matriz A:
-0.361165 -17.322972
0.191608 -9.467484
Matriz B:
0.004184
0.101172
Valores de "h" y "l" respectivamente:
-0.008755 0.005333
..............

35
ITERACION: 4
Nuevo vector:
[x]= 0.376876 [y]= 4.497443
Matriz A:
-0.278533 -16.949780
0.199008 -9.537442
Matriz B:
0.000341
0.001828
Valores de "h" y "l" respectivamente:
-0.000600 0.000875
..............
ITERACION: 5
Nuevo vector:
[x]= 0.376276 [y]= 4.498318
Matriz A:
-0.273297 -16.926082
0.199445 -9.550231
Matriz B:
0.000001
0.000013
Valores de "h" y "l" respectivamente:
-0.000003 0.000003
********************************************
Ha llegado al criterio de convergencia.
********************************************
2) 3 1 − cos( 2 3) − 0.5 = 0; 12

− 625 2 = 0; − 1 2 + 20 + (10 −3) =0


2 3
3

Método de Newton-Raphson multivariable.


Método de Newton-Raphson multivariable 3x3.
Ingrese la función 1 con respecto a "x", "y" y "z": 3*x-cos(y*z)-0.5
Ingrese la función 1 con respecto a "x", "y" y "z": x^2-625*y^2
Ingrese la función 1 con respecto a "x", "y" y "z": exp(-x*y)+20*z+((10*pi-3)/3)
Ingrese el valor de x0: 1
Ingrese el valor de y0: 1
Ingrese el valor de z0: 1
Ingrese el número máximo de iteraciones: 10
Ingrese valor de épsilon: .0001
mtxdp =
[ 3, z*sin(y*z), y*sin(y*z)]
[ 2*x, -1250*y, 0]
[ -y*exp(-x*y), -x*exp(-x*y), 20]
B=
cos(y*z) - 3*x + 1/2
625*y^2 - x^2
- 20*z - exp(-x*y) - 5332248173269055/562949953421312
ITERACION: 1
Matriz A:
3.000000 2.000000 -0.367879
0.841471 -1250.000000 -0.367879
0.841471 0.000000 20.000000
Matriz B:
-1.959698

36
624.000000
-29.839855
Valores de "h", "l" y "m" respectivamente:
-0.09163208 -0.49934661 -1.50286319
..............
ITERACION: 2
Nuevo vector:
[x]= 0.908368 [y]= 0.500653 [z]=-0.502863
Matriz A:
3.000000 1.816736 -0.317709
0.125268 -625.816736 -0.576440
-0.124717 0.000000 20.000000
Matriz B:
-1.256628
155.833502
-0.049301
Valores de "h", "l" y "m" respectivamente:
-0.40910138 -0.25019582 -0.01617495
..............
ITERACION: 3
Nuevo vector:
[x]= 0.499267 [y]= 0.250458 [z]=-0.519038
Matriz A:
3.000000 0.998533 -0.221018
0.067284 -313.071960 -0.440581
-0.032467 0.000000 20.000000
Matriz B:
-0.006237
38.956354
0.026330
Valores de "h", "l" y "m" respectivamente:
0.00069626 -0.12443037 -0.00141687
..............
ITERACION: 4
Nuevo vector:
[x]= 0.499963 [y]= 0.126027 [z]=-0.520455
Matriz A:
3.000000 0.999926 -0.118331
0.034113 -157.534003 -0.469433
-0.008260 0.000000 20.000000
Matriz B:
-0.002039
9.676822
-0.001810
Valores de "h", "l" y "m" respectivamente:
0.00001468 -0.06142679 -0.00153221
..............
ITERACION: 5
Nuevo vector:
[x]= 0.499977 [y]= 0.064600 [z]=-0.521987
Matriz A:
3.000000 0.999955 -0.062547
0.017598 -80.750521 -0.484087
-0.002178 0.000000 20.000000
Matriz B:
-0.000501

37
2.358281
-0.000448
Valores de "h", "l" y "m" respectivamente:
0.00000381 -0.02920449 -0.00072927
..............
ITERACION: 6
Nuevo vector:
[x]= 0.499981 [y]= 0.035396 [z]=-0.522717
Matriz A:
3.000000 0.999963 -0.034775
0.009671 -44.244915 -0.491211
-0.000655 0.000000 20.000000
Matriz B:
-0.000115
0.533064
-0.000104
Valores de "h", "l" y "m" respectivamente:
0.00000043 -0.01204801 -0.00030110
..............
ITERACION: 7
Nuevo vector:
[x]= 0.499982 [y]= 0.023348 [z]=-0.523018
Matriz A:
3.000000 0.999963 -0.023077
0.006387 -29.184900 -0.494179
-0.000285 0.000000 20.000000
Matriz B:
-0.000020
0.090722
-0.000018
Valores de "h", "l" y "m" respectivamente:
0.00000004 -0.00310851 -0.00007770
..............
ITERACION: 8
Nuevo vector:
[x]= 0.499982 [y]= 0.020239 [z]=-0.523095
Matriz A:
3.000000 0.999964 -0.020036
0.005538 -25.299261 -0.494948
-0.000214 0.000000 20.000000
Matriz B:
-0.000001
0.006039
-0.000001
Valores de "h", "l" y "m" respectivamente:
0.00000000 -0.00023871 -0.00000597
..............
ITERACION: 9
Nuevo vector:
[x]= 0.499982 [y]= 0.020001 [z]=-0.523101
Matriz A:
3.000000 0.999964 -0.019802
0.005473 -25.000869 -0.495007
-0.000209 0.000000 20.000000
Matriz B:
-0.000000

38
0.000036
-0.000000
Valores de "h", "l" y "m" respectivamente:
0.00000000 -0.00000142 -0.00000004
********************************************
Ha llegado al criterio de convergencia.
********************************************

3) 2 1 + 2 + 3 − 4 log(10 1) = 0; 1 + 2 2 + 3 − 4
log(10 2) = 0; 1 2 3 − log(10 3) = 0;

Método de Newton-Raphson multivariable.


Método de Newton-Raphson multivariable 3x3.
Ingrese la función 1 con respecto a "x", "y" y "z": 2*x+y+z-4*log10(10*x)
Ingrese la función 1 con respecto a "x", "y" y "z": x+2*y+z-4*log10(10*y)
Ingrese la función 1 con respecto a "x", "y" y "z": x*y*z-log10(10*z)
Ingrese el valor de x0: .8
Ingrese el valor de y0: .8
Ingrese el valor de z0: .8
Ingrese el número máximo de iteraciones: 20
Ingrese valor de épsilon: .0001
mtxdp =
[ 2 - 4/(x*log(10)), 1, 1]
[ 1, 2 - 4/(y*log(10)), 1]
[ y*z, x*z, x*y - 1/(z*log(10))]
B=
(4*log(10*x))/log(10) - y - z - 2*x
(4*log(10*y))/log(10) - 2*y - z - x
log(10*z)/log(10) - x*y*z
ITERACION: 1
Matriz A:
-0.171472 1.000000 0.640000
1.000000 -0.171472 0.640000
1.000000 1.000000 0.097132
Matriz B:
0.412360
0.412360
0.391090
Valores de "h", "l" y "m" respectivamente:
0.29264676 0.29264676 0.16989403
..............
ITERACION: 2
Nuevo vector:
[x]= 1.092647 [y]= 1.092647 [z]= 0.969894
Matriz A:
0.410119 1.000000 1.059752
1.000000 0.410119 1.059752
1.000000 1.000000 0.746102
Matriz B:
-0.093915

39
-0.093915
-0.171210
Valores de "h", "l" y "m" respectivamente:
-0.09475225 -0.09475225 0.03969679
..............
ITERACION: 3
Nuevo vector:
[x]= 0.997895 [y]= 0.997895 [z]= 1.009591
Matriz A:
0.259157 1.000000 1.007465
1.000000 0.259157 1.007465
1.000000 1.000000 0.565625
Matriz B:
-0.006936
-0.006936
-0.001199
Valores de "h", "l" y "m" respectivamente:
0.00209141 0.00209141 -0.00956925
..............
ITERACION: 4
Nuevo vector:
[x]= 0.999986 [y]= 0.999986 [z]= 1.000022
Matriz A:
0.262798 1.000000 1.000008
1.000000 0.262798 1.000008
1.000000 1.000000 0.565687
Matriz B:
-0.000004
-0.000004
0.000016
Valores de "h", "l" y "m" respectivamente:
0.00001407 0.00001407 -0.00002158
********************************************
Ha llegado al criterio de convergencia.
********************************************

BIBLIOGRAFÍA: Nieves Hurtado y Domínguez Sánchez (2012). Métodos


Numéricos Aplicados a la Ingeniería. México: Editorial Patria.

40

También podría gustarte