Mathematics">
Nothing Special   »   [go: up one dir, main page]

T2 Pablo - Pobletep

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 11

Facultad de Ciencias

Departamento de Matemáticas y Ciencias de la Computación

TALLER II

El desarrollo del presente taller lo puede realizar en cualquiera de las 2 opciones siguiente:

i. De forma manuscrita digitalizando posteriormente sus respuestas y pegando las imágenes


con el desarrollo y la respuesta correspondiente en cada recuadro. Los códigos MATLAB
deben ser pegados en los recuadros solicitados, junto con su respuesta.
ii. De forma digital con el desarrollo y la respuesta correspondiente en cada recuadro. Los
códigos MATLAB deben ser pegados en los recuadros solicitados, junto con su respuesta.

En cualquiera de las dos opciones debe detallar (explicar) todo su desarrollo y adjuntar gráficos y
códigos utilizados.

Es importante que cumpla con los plazos definidos en plataforma, y entregue el archivo en formato
PDF.

Tendrá disponible para consultas tanto la sesión con el profesor, como la sesión de ayudantía en la
respectiva semana.

1. Aproxime la solución del siguiente sistema lineal


𝑥 + 2𝑦 − 2𝑧 = 7
𝑥+𝑦+𝑧 = 2
2𝑥 + 2𝑦 + 𝑧 = 5

a) Usando el método iterativo de Gauss-Seidel para aproximar la solución del sistema. ¿Es
convergente? Si el método no es convergente, ¿A qué se puede deber?

No es convergente ya que el radio espectral de la matriz A (matriz de coeficientes) es igual a 1.

clc;
clear all;
close all;

A=[1 2 -2 ;
1 1 1 ;
2 2 1 ];

B=[7 2 5];
n=length(B);
[ma na]=size(A);
R=max(abs(eig(A)));
R
ca=1;
for i=1:ma
for j=1:na
if i==j
dA(ca)=A(i,j);
ca=ca+1;
end
end
end

%%Considerando 10 iteraciones
it=10;

x=zeros(it,n);

for k=1:it-1
for l=1:n
for m=1:n
if m~=l
if l>m
x(k+1,l)=x(k+1, l)-A(l,m)*x(k+1,m);
else
x(k+1,l)=x(k+1, l)-A(l,m)*x(k,m);
end
end
end
x(k+1,l)=(x(k+1,l)+B(l))/dA(l);
end
end

b) Vuelva a aproximar la solución del sistema mediante SOR-Seidel. Escoja justificadamente el


valor de ω.
clc;
clear all;
close all;

omega=1;

n=3;

A=[1, 2, -2 ;
1, 1, 1 ;
2, 2, 1 ];

b=[7 , 2 , 5];

x0= [0,0,0];
maxiter=100;

w=1;

tol= 0.00001;

[m n]= size(A);

if m~=n, error('Matriz del sistema no cuadrada'), end

if m~= length(b), error ('sistema no coherente'),end

x=zeros(size(b));

x2=x;

if any(abs(diag(A))<eps)

error('Metodo no valido. Elemento diagonal nulo')

end

for k=1:maxiter

for i=1:n

tem=(b(i)-sum(A(i,[1:i-1 i+1:n])*x0([1:i-1 i+1:n])'))/A(i,i);

x(i)=tem*w + (1-w)*x0(i);

x0(i)=x(i);

end

if norm(x-x2)< tol

fprintf('\n SOR CONVERGE en %d iteraciones\n',k)

return

end

x2=x;

end

fprintf('\n SOR NO CONVERGE en %d iteraciones\n',maxiter)

SOR NO CONVERGE en 100 iteraciones


x=

1.0e+32 *

1.920490659345805 -1.926828912346946 0.012676506002283

Se empleara el método de Jacobi, al no converger ninguno de los 2 métodos anteriores:

clc;
clear all;
close all;

A=[1, 2, -2 ;
1, 1, 1 ;
2, 2, 1 ];

B=[7 , 2 , 5];

n=length(B);
[ma, na]=size(A);
R=max(abs(eig(A)));
R
ca=1;
for i=1:ma
for j=1:na
if i==j
dA(ca)=A(i,j);
ca=ca+1;
end
end
end

%%Considerando 10 iteraciones
it=10;

x=zeros(it,n);

for k=1:it-1
for l=1:n
for m=1:n
if m~=l
x(k+1,l)=x(k+1, l)-A(l,m)*x(k,m);
end
end
x(k+1,l)=(x(k+1,l)+B(l))/dA(l);
end
end

x
x=

0 0 0
7 2 5
13 -10 -13
1 2 -1
1 2 -1
1 2 -1
1 2 -1
1 2 -1
1 2 -1
1 2 -1

Quedando:
Incógnita Valor
X 1
Y 2
Z -1

c) Indique el error cometido en su aproximación usando norma infinita.

El error se aproxima a cero con el método de Jacobi, dando resultados exactos de las incógnitas.

2. un ingeniero civil que trabaja en la construcción requiere 4800, 5800 y 5700 m 3 de arena,
grava fina y grava gruesa, respectivamente, para cierto proyecto. Hay tres canteras de las
que puede obtenerse dichos materiales. La composición de dichas canteras es la siguiente

Arena (%) Grava gruesa (%) Grava fina (%)


Cantera 1 55 15 20
Cantera 2 25 30 60
Cantera 3 25 55 20

¿Cuantos metros cúbicos debe extraer de cada cantera a fin de satisfacer las necesidades
del ingeniero?

a) Platee el sistema de ecuación que define la situación del ingeniero

Se plantearan las variables siguientes:


X= Cantidad de metros cúbicos totales de la cantera 1
Y= Cantidad de metros cúbicos totales de la cantera 2
Z= Cantidad de metros cúbicos totales de la cantera 3

Por lo que:
0.55𝑋 + 0.25𝑌 + 0.25𝑍 = 4800
{ 0.15𝑋 + 0.3𝑌 + 0.55𝑍 = 5800
0.2𝑋 + 0.6𝑌 + 0.2𝑍 = 5700

b) Aproxime la solución aplicando algún método numérico.

Método de Jacobi:
clc;
clear all;
close all;

A=[0.55, 0.25, 0.25; 0.15, 0.3, 0.55; 0.2, 0.6, 0.2]

B=[4800, 5800, 5700];

n=length(B);
[ma, na]=size(A);
R=max(abs(eig(A)));
R
ca=1;
for i=1:ma
for j=1:na
if i==j
dA(ca)=A(i,j);
ca=ca+1;
end
end
end

%%Considerando 10 iteraciones
it=10;

x=zeros(it,n);

for k=1:it-1
for l=1:n
for m=1:n
if m~=l
x(k+1,l)=x(k+1, l)-A(l,m)*x(k,m);
end
end
x(k+1,l)=(x(k+1,l)+B(l))/dA(l);
end
end

No converge con el método de Jacobi

Método de Gauss-Seidel:
clc;
clear all;
close all;

A=[0.55, 0.25, 0.25; 0.15, 0.3, 0.55; 0.2, 0.6, 0.2]

b=[4800, 5800, 5700];

% Resolución por Gauss-Seidel


n=size(A,1);
x=zeros(n,1);
sm=1;
k=0;
while sm>0.001
k=k+1; sm=0;
for i=1:n
j=[1:i-1 i+1:n];
xi=(b(i)-A(i,j)*x(j))/A(i,i);
sm=max(abs(x(i)-xi),sm);
x(i)=xi;
end
sm=sm/max(abs(x));
end

x
No converge por el método de Gauss-Seidel

Método SOR:

clc;
clear all;
close all;

omega=1;

n=3;

A=[0.55, 0.25, 0.25; 0.15, 0.3, 0.55; 0.2, 0.6, 0.2]

b=[4800, 5800, 5700];

x0= [0,0,0];

maxiter=100;

w=1;

tol= 0.00001;

[m n]= size(A);
if m~=n, error('Matriz del sistema no cuadrada'), end

if m~= length(b), error ('sistema no coherente'),end

x=zeros(size(b));

x2=x;

if any(abs(diag(A))<eps)

error('Metodo no valido. Elemento diagonal nulo')

end

for k=1:maxiter

for i=1:n

tem=(b(i)-sum(A(i,[1:i-1 i+1:n])*x0([1:i-1 i+1:n])'))/A(i,i);

x(i)=tem*w + (1-w)*x0(i);

x0(i)=x(i);

end

if norm(x-x2)< tol

fprintf('\n SOR CONVERGE en %d iteraciones\n',k)

return

end

x2=x;

end

fprintf('\n SOR NO CONVERGE en %d iteraciones\n',maxiter)

No converge por el método de SOR

Se debe emplear un método directo al no converger con


ningún método iterativo.
c) Estime el error cometido en norma infinito.

3. Considere el siguiente sistema lineal

4𝑥1 − 𝑥2 − 𝑥4 = 0
−𝑥1 + 4𝑥2 − 𝑥3 − 𝑥5 = 5
− 𝑥2 + 4𝑥3 − 𝑥6 = 0
−𝑥1 + 4𝑥4 − 𝑥5 = 6
− 𝑥2 − 𝑥4 + 4𝑥5 − 𝑥6 = −2
− 𝑥3 − 𝑥5 + 4𝑥6 = 6
a. Aproxime la solución del siguiente sistema lineal mediante un método de SOR. Justifique la
elección de su ω.

Mediante el método iterativo de SOR: ω=1

clc;
clear all;
close all;

omega=1;

n=6;

A=[4, -1, 0, -1, 0, 0 ; -1, 4, -1, 0 ,-1 ,0 ; 0, -1, 4, 0, 0, -1; -1,


0, 0, 4, -1, 0; 0, -1, 0, -1, 4, -1; 0, 0, -1, 0, -1, 4];

b=[0, 5, 0, 6, -2, 6];

x0= [0,0,0,0,0,0];

maxiter=100;

w=1;

tol= 0.00001;

[m n]= size(A);

if m~=n, error('Matriz del sistema no cuadrada'), end

if m~= length(b), error ('sistema no coherente'),end

x=zeros(size(b));

x2=x;
if any(abs(diag(A))<eps)

error('Metodo no valido. Elemento diagonal nulo')

end

for k=1:maxiter

for i=1:n

tem=(b(i)-sum(A(i,[1:i-1 i+1:n])*x0([1:i-1 i+1:n])'))/A(i,i);

x(i)=tem*w + (1-w)*x0(i);

x0(i)=x(i);

end

if norm(x-x2)< tol

fprintf('\n SOR CONVERGE en %d iteraciones\n',k)

return

end

x2=x;

end

fprintf('\n SOR NO CONVERGE en %d iteraciones\n',maxiter)

Columns 1 through 4

0.999997066656751 1.999997496234923 0.999998931451415 1.999998229570736

Columns 5 through 6

0.999998488844099 1.999999355073878

Variable Valor
X1 0.999997066656751
X2 1.999997496234923
X3 0.999998931451415
X4 1.999998229570736
X5 0.999998488844099
X6 1.999999355073878

También podría gustarte