You are on page 1of 8

UNIVERSIDAD NACIONAL AGRARIA LA MOLINA

TRABAJO ENCARGADO DE MÉTODOS NUMÉRICO 1

Tema

Métodos de solución de sistemas de ecuaciones lineales y no lineales

integrantes:

Baz´an V´asquez Ar´on.

Toledo Moreno Jazmin.

Pacheco Saire Diana.


Primer trabajo encargado de métodos numéricos
Código utilizado: 20161146

Problema 1

Se crea un programa en Matlab De la siguiente manera:


% Solucion de un sistema tridiagonal, problema 1.
%Metodo de Thomas:
A(1)=0;k=21;R=3.6;s=11
for i=1:10
t(i)=k;
D(i) = (−1)(i − 1) ∗ s;
end
for i=1:9
C(i)=R;
end
C(10)=0; c=C’;
b=t’;
d=D’;
for i=2:10
A(i)=-R;
end
a=A’;
f (1) = b(1);p(1) = d(1);
for i=1:9
f (i + 1) = b(i + 1) − a(i + 1) ∗ c(i)/f (i);
p(i + 1) = d(i + 1) − a(i + 1) ∗ p(i)/f (i);
end
x(10) = p(10)/f (10);
for i=9:-1:1
x(i) = (p(i) − c(i) ∗ x(i + 1))/f (i);
end
disp(’El vector solucion del sistema de ecuaciones es:’)
disp(x)
La solución del sistema es:
(0.61111; −0.50926; 0.52623; −0.52340; 0.52387; −0.52373; 0.52341; −0.52138; 0.50926; −0.43651)
Problema 2

Para el problema 2 primero despejamos de la segunda ecuación la variable y


para remplazarla en el primero y ası́ obtener una función con una sola variable
y gráficar
% gráfica de el sistema de ecuaciones, Problema 2 parte a y b.
%f (x, y) = 2 ∗ x + y. ∗ exp(−6 ∗ x) − e(y) = 0;
%g(x, y) = 3 ∗ x + y − exp(2 ∗ x) = 0;

1
%despejando y de la segunda ecuacio´n y remplazando en la primera. x = −1 : 0.1
: 1;
s = 2 ∗ x + (exp(2 ∗ x) − 3 ∗ x). ∗ exp(−6 ∗ x) − exp(exp(2 ∗ x) − 3 ∗ x);
plot(x,s)
% según la gráfica elegimos como puntos iniciales
x(1) = 0.5; y(1) = 1.22; err = 1; tol = 1; k = 1;
while err > 10(−12) ||tol > 10(−13)
f (k) = 2 ∗ x(k) + y(k). ∗ exp(−6 ∗ x(k)) −
exp(y(k)); g(k) = 3 ∗ x(k) + y(k) − exp(2 ∗ x(k));
% despejando x de la primera ecuacio´n f(x,y)=0
f 1(k) = (log((exp(y(k)) − 2 ∗
x(k))/y(k)))./(−6); x(k + 1) = f 1(k);
% despejando y de la segunda ecuación g(x,y)=0
g1(k) = exp(2 ∗ x(k)) − 3 ∗ x(k);
y(k + 1) = g1(k);
err = (((x(k + 1) − x(k)).2 + (y(k + 1) − y(k))2)(0.5))./(x(k)2 + y(k)2)(0.5);
tol=abs(f(k))+abs(g(k));
k=k+1;
end
disp(’el valor aproximado de la componente x de la ra´ız es’)
dsip(x(k))
disp(’el valor aproximado de la componente y de la ra´ız es’)
disp(y(k))
disp(’el numero de iteraciones necesarias es’)
disp(k)
La solucio´n obtenida con este m´etodo es: (−0.188231, 1.25098)
El numero de iteraciones necesarias fue de 23.

Problema 2 parte c

Ahora procedemos a desarrollar el mismo sistema con el m´etodo de Newton


multivariable
El código en Matlab utilizado fue el siguiente:
% metodo de newton multivariable, problema 2 parte c.
% apartir del paso a eligimos como puntos iniciales a
x(1)=0.5;y(1)=1.22; err=1; tol=1;k=1; while err > 10(−13)||tol > 10(−12) f
(k) = 2 ∗ x(k) + y(k). ∗ exp(−6 ∗ x(k)) − exp(y(k));
g(k) = 3 ∗ x(k) + y(k) − exp(2 ∗ x(k));
% a partir de estas funciones derivamos para construir la matriz jacoviana
Dxf (k) = 2 − 6. ∗ exp(−6 ∗ x(k));
Dyf(k)=1-exp(y(k));
Dxg(k) = 3 − 2. ∗ exp(2 ∗ x(k));
Dyg(k)=1; % con estas expresiones construimos la matriz J
J=[Dxf(k) Dyf(k); Dxg(k) Dyg(k)];
% tenemos entonces que Jh=-S donde S es un vector de componentes f(k) y g(k)
S=[f(k),g(k)]’; % la solucio´n de Jh=-S es h=-s/J

2
h = inv(J ) ∗ (−S);
% por el método multivariable de Newton:
x(k+1)=x(k)+h(1); y(k+1)=y(k)+h(2); err = (((x(k + 1) −x(k))2 +(y(k + 1) −
y(k))2)(0.5))./(x(k)2 + y(k)2)(0.5);
tol=abs(f(k))+abs(g(k));
k=k+1;
end
disp(’la primera componente de la raiz es:’)
disp(x(k))
disp(’la segunda componente de la raiz es:’)
disp(y(k))
disp(’el numero de iteraciones necesarias es:’)
disp(k)
El vector solucio´n del sistema fue: (−0.188231, 1.25098) El
numero de operaciones necesarias fueron 65

Problema 3

Para este problema tenemos un sistema de 5 ecuaciones y nos piden aplicar el


m´etodo de Jacovi % m´etodo de Jacovi, problema 3 parte a
x0=[1 1 1 1 1]’; n=1; err=1; tol=1;k=21;U=46;
% Sea la matriz arreglada segu´n teorema para acelerar convergencia
A=[5*k -1 1 -1 1; 1 5*k -2 1 2; 1 -1 5*k 1 1; -1 1 -1 5*k 1; 1 1 2 1 5*k]; b1=[-
3*U 2*U -4*U 2*U -8*U]’;
% a partir de esta matriz Ax=b creamos la siguiente ecuacio´n x=Bx+c
B(1,:)=(1/105)*[0 1 -1 1 -1];
B(2,:)=(1/105)*[-1 0 2 -1 -2];
B(3,:)=(1/105)*[-1 1 0 -1 -1];
B(4,:)=(1/105)*[1 -1 1 0 -1];
B(5,:)=(1/105)*[-1 -1 -2 -1 0];
c = (1/105) ∗ b1;
while err > 10(−12)
% de forma compacta tenemos que:
x = B ∗ x0 + c;
err = (((x − x0)r ∗ (x − x0))(0.5))./(x0r ∗
x0)(0.5); x0=x;
n=n+1;
end
disp(’el valor del vector raiz es:’)
disp(x’)
disp(’el numero de iteraciones necesarias fue de:’)
disp(n)

Calculemos las primeras 3 iteraciones:

3
x1(1) = 1/105(x0(2) − x0(3) + x0(4) − x0(5)) − 3/105 × 41
x1(2) = 1/105(−x0(1) + 2x0(3) − x0(4) − 2x0(5))2/105 × 41
x1(3) = 1/105(−x0(1) + x0(2) − x0(4) − x0(5)) − 4/105 × 41
x1(4) = 1/105(x0(1) − x0(2) + x0(3) − x0(5)) + 2/105 × 41
x1(5) = 1/105(−x0(1) − x0(2) − 2x0(2) − x0(4)) − 8/105 × 41
Realizando los cálculos al remplazar el valor de x0 tenemos

x1 = (−1.31429; 0.85714; −1.77143; 0.87619; −3.55238)

luego intercambiando x0 por x en las ecuaciones anteriores obtenemos:

x2 = (x2(1); x2(2); x2(3); x2(4); x2(5))

Al realizar las operaciones obtenemos que : x2 = (−1.24707; 0.91429; −1.70621; 0.87247; −3.47501)
nuevamente remplazamos x0 esta ves por x2 con lo cual obtenemos

x3 = (x3(1); x3(2); x3(3); x3(4); x3(5))

realizando las operaciones obtenemos como valores:

x3 = (−1.24792; 0.91345; −1.70701; 0.87245; −3.47740)

Problema 4

% problema 4 método de newton parte b.


% condiciones iniciales:
x1(1)=1; x2(1)=1; x3(1)=1; x4(1)=1;k=1;err=1; tol=1; while err > 10(−12) ||tol >
10(−13)
%construimos las funciones del sistema de ecuaciones:
f (k) = 5 ∗ x1(k)+(x2(k))2 − (x1(k))2; g(k) = −(x1(k))2 + 5 ∗ x2(k)+(x3(k))2 −
(x2(k))2;
h(k) = −(x2(k))2 + 5 ∗ x3(k) + (x4(k))2 − (x3(k))2;
l(k) = −(x3(k))2 + 5 ∗ x4(k) − (x4(k))2;
% calculando las derivadas parciales para obtener la matriz jacoviana
Dx1f(k)=5-2*x1(k);
Dx2f(k)=2*x2(k);
Dx3f(k)=Dx4f(k)=0;
Dx1g(k)=-2*x1(k);
Dx2g(k)=5-2*x2(k);
Dx3g(k)=2*x3(k);
Dx4g(k)=0;
Dx1h(k)=0; Dx2h(k)=-2*x2(k); Dx3h(k)=5-2*x3(k); Dx4h(k)=2*x4(k);
Dx1l(k)=Dx2l(k)=0;Dx3l(k)=-2*x3(k); Dx4l(k)=5-2*x4(k);

4
% con esto ya podemos construir la matriz jacoviana
J=[Dx1f(k) Dx2f(k) Dx3f(k) Dx4f(k); Dx1g(k) Dx2g(k) Dx3g(k) Dx4g(k) ;
Dx1h(k) Dx2h(k) Dx3h(k) Dx4h(k); Dx1l(k) Dx2l(k) Dx3l(k) Dx4l(k)];
% De la ecuacion matricial JH=-F donde F es un vector columna con elementos
f,g,h y l:
F=[f(k) g(k) h(k) l(k)]’;
% Por lo que h es:
H=inv(J)*(-F);
% realicemos el codigo para las iteraciones de la aproximacion de la raiz del
sistema de ecuaciones
x1(k+1)=x1(k)+ H(1);
x2(k+1)=x2(k) + H(2);
x3(k+1)=x3(k) + H(3);
x4(k+1)=x4(k) + H(4);
err = ((x1(k + 1) − x1(k))2 + (x2(k + 1) − x2(k))2 + (x3(k + 1) − x3(k))2 + (x4(k
+ 1) − x4(k))2)(0.5);
tol=abs(f(k))+abs(g(k))+abs(h(k))+abs(l(k));
k=k+1;
end
x=[x1(k) x2(k) x3(k) x4(k)];
disp(’ la solucion de la ecuacion es:’)
disp(x)
Problema 5
% Problema 5 m´etodo de newton
x(1)=0; y(1)=-1;
err=1; tol=1; k=1;
while tol > 10(−12)
%Lasfuncionesdelsistemadeecuacionesson : f = 0yg = 0
f (k) = 4 ∗ x(k)2 + y(k)5 − exp(y(k));
g(k)=2*x(k)+y(k)-exp(2*x(k));
% Evaluamos las derivadas parciales para obtener el Jacoviano
Dxf (k) = 4; Dyf (k) = 5 ∗ y(k)4 − exp(y(k));
Dxg(k) = 2 − 2 ∗ exp(2 ∗ x(k)); Dyg(k) = 1;
% Entonces la matriz Jacoviana es
J=[Dxf(k) Dyf(k); Dxg(k) Dyg(k)];
% Resolvemos la ecuacion matricial Jh=-F donde F es:
F=[f(k) g(k)]’;
h=inv(J)*(-F);
x(k+1)=x(k)+h(1);
y(k+1)=y(k)+h(2);
tol=abs(f(k))+ abs(g(k));
k=k+1;
end
% no hay convergencia para la raiz, por lo que la ecuacion matricial no tiene
solucion en los reales

5
Problema 6

Parte a

% Gauss-Seidel problema 6
%A partir de la matriz
x0=[1 1 1 1]’;n=1; err=1;
a=[1 5 -1 1; -1 1 -1 9; 1 -1 10 1; 8 -1 1 -1]; %Ordenamos la matriz tal que los
elementos de la diagonal principal sean mayores que la suma de filas y columnas
corresponientes
A=[8 -1 1 -1;1 5 -1 1; 1 -1 10 1;-1 1 -1 9]; k=1;err2=1;
b=[1 3 5 2]’;
% se tiene Ax=b se quiere llegar a una arreglo x=Bx+c % Metodo de Jacobi
B(1,:)=(1/8)*[0 1 -1 1];
B(2,:)=(1/5)*[-1 0 1 -1];
B(3,:)=(1/10)*[-1 1 0 -1];
B(4,:)=(1/9)*[1 -1 1 0];
c=[(1/8)*b(1) (1/5)*b(2) (1/10)*b(3) (1/9)*b(4)]’;
while err > 10(−12)
x=B*x0+c;
err = (((x − x0)r ∗ (x − x0))(0.5))./(x0r ∗ x0)(0.5);
x0=x;
n=n+1;
end
disp(’para este sistema se tiene una solucion segun el metodo de Jacobi de’)
disp(x’)
disp(’El numero de iteraciones necesarias fue de:’)
disp(n)

Parte b

% Metodo Gauss Seidel

z0=[1 1 1 1]’;
while err2 > 10(−12)
y(1)=B(1,:)*z0 + c(1);
z0(1)=y(1);
y(2)=B(2,:)*z0+c(2);
z0(2)=y(2);
y(3)=B(3,:)*z0+c(3);
z0(3)=y(3);
y(4)=B(4,:)*z0 +c(4);
err2 = (((yr − z0)r ∗ (yr − z0))(0.5))./(z0r ∗ z0)(0.5);
z0=y’;
k=k+1;

6
Parte c

Para el m´etodo de Jacobi hayamos las primero 5 iteraciones anal´ogamente a el


problema 3 procedemos como sigue:

x1(1) = 1/8(x0(2) − x0(3) + x0(4))

x1(2) = 1/5(−x0(1) + x0(3) − x0(4))


x1(3) = 1/10(−x0(1) + x0(2) − x0(4))
x1(4) = 1/9(x0(1) − x0(2) + x0(3))
Realizando las operaciones se tiene que el vector solución es:

x1 = (0.16667; 0.56333; 0.48167; 0.25000)

El error que se calcula de la siguiente manera

err = ((x1 − x0)r ∗ (x1 − x0))0.5 /(x0r ∗ x0)0.5

Es err = 0.30935 Remplazando x0 = x1 se genera nuevamente una nueva


aproximacio´n
x2 = (x1(1); x1(2); x1(3); x1(4))
La solución es
x2 = (0.16646; 0.61300; 0.51467; 0.23167)
con un error igual a 0.07805 Se remplaza x1 = x2 con lo cual tenemos como
solucio´n
x3 = (0.16625; 0.62331; 0.52149; 0.22979)
con un error igual a 0.014715 Se remplaza x2 = x3 Operando tenemos que

x4 = (0.16645; 0.62509; 0.52273; 0.22938)

el valor del erro es de 0.0025759 remplazando x3 = x4 tenemos finalmente la


quinta iteracion

x5 = (0.16647; 0.62538; 0.52293; 0.22934)

Con un error de 4.1012 × 10−4 . Se puede observar que cada nueva operación de
aproximación el error es menor por lo que se puede asegurar la convergencia de
la solución del sistema.

You might also like