Está en la página 1de 13

Universidad del Norte

Divisin de Ingenieras
Departamento de Ingeniera
Sistemas

Soluciones Computacionales a
Problemas en Ingeniera
Augusto Sisa
Segundo Semestre 2016

de

Actividad 05 Sistemas de ecuaciones lineales y no lineales


Nombres: Escriba los nombres y usuarios de los miembros del grupo aqu
El Fraude es una falta grave y puede ser penalizada
Condiciones
Las condiciones para esta actividad son:
La presentacin es en parejas.
Debe incluir este documento de Word (obligatorio) con el contenido del cdigo desarrollado, las
entradas dadas al programa, los resultados obtenidos y sus comentarios personales.
Los archivos de Python .py debe contar con la plantilla suministrada.
Los archivos de Matlab .m debe contar con la plantilla suministrada.

1 Funciones de inters
Funciones generales de inters:
Matlab
fsolve

inv

lu
chol
cond
norm

Python
scipy.optimize.fsolve
scipy.optimize.broyden1
scipy.optimize.broyden2
numpy.linalg.inv
scipy.linalg.inv
numpy.linalg.solve
scipy.linalg.solve
scipy.linalg.lu
numpy.linalg.cholesky
numpy.linalg.cond
numpy.linalg.norm

Referencias
Optimization and root finding (scipy.optimize) http://docs.scipy.org/doc/scipy/reference/optimize.html
Linear algebra (scipy.linalg) http://docs.scipy.org/doc/scipy-0.13.0/reference/linalg.html
Linear algebra (numpy.linalg) http://docs.scipy.org/doc/numpy/reference/routines.linalg.html

1 Sistemas de ecuaciones no lineales


Dado el siguiente sistema de ecuaciones no lineales realice las siguientes actividades

1/13

Universidad del Norte


Divisin de Ingenieras
Departamento de Ingeniera
Sistemas

x 2+

de

Soluciones Computacionales a
Problemas en Ingeniera
Augusto Sisa
Segundo Semestre 2016

9 y2 2
9 y2 z 3
+ z 1 x 2 z3
=0
4
200
x+ y + z=0
x 2 + y 2 + z 2=1

a) Encuentre al menos una de las soluciones del problema propuesto:

b) Utilizando la primera funcin del sistema de ecuaciones haga una grfica en 3D con la
superficie generada por esta funcin. NOTA: Use el color rojo para esta superficie y tome los
valores de x, y, z entre -2.0 y 2.0
Matlab
function f1 = funcion1(x,y,z)
Python
f1= ( x.^2+ 9.*y.^2./4 +z.^2
import numpy as np
-1).^3 -x.^2.*z.^3from numpy import sin, cos, pi
(9.*y.^2.*z.^3)./200
from skimage import measure
import matplotlib.pyplot as plt
end
function f2 = funcion2(x,y,z)
from mpl_toolkits.mplot3d import Axes3D
f2= x+ y+z;
end
function f3 = funcion3(x,y,z)
f3=x.^2+y.^2+z.^2-1;
end

def funcion1(x,y,z):
return (x**2.+ 9.*y**2/4. +z**2 -1)**3
-x**2.*z**3-(9.*y**2.*z**3)/200
def funcion2(x,y,z):
return x+y+z
def funcion3(x,y,z):
return x**2+y**2+z**2-1
x, y, z = np.ogrid[-2:2:80j, -2:2:80j, -2:2:80j]
v1= funcion1(x,y,z)
v2=funcion2(x,y,z)
v3=funcion3(x,y,z)
verts, faces = measure.marching_cubes(v1, 0,

2/13

Universidad del Norte


Divisin de Ingenieras
Departamento de Ingeniera
Sistemas
xmin=-2;
xmax=2;
ymin=-2;
ymax=2;
zmin=-2;
zmax=2;
xspace=linspace(xmin,xmax);
yspace=linspace(ymin,ymax);
zspace=linspace(zmin,zmax);
[xmat,ymat,zmat]=meshgrid(xspace,ys
pace,zspace);
% f3mat= funcion3(xmat,ymat,zmat);
% p =
patch(isosurface(xmat,ymat,zmat,f3m
at,0));
%
isonormals(xmat,ymat,zmat,f3mat,p)
%
set(p,'Facecolor','red','Edgecolor'
, 'none');
% daspect([1,1,1])
% view(3); axis tight
% camlight
% lighting gouraud
% %funcion2
% hold on
% f2mat= funcion2(xmat,ymat,zmat);
% p =
patch(isosurface(xmat,ymat,zmat,f2m
at,0));
%
isonormals(xmat,ymat,zmat,f2mat,p)
%
set(p,'Facecolor','red','Edgecolor'
, 'none');
% daspect([1,1,1])
% view(3); axis tight
% camlight
% lighting gouraud
% %funcion1
hold off
f1mat= funcion1(xmat,ymat,zmat);
p =
patch(isosurface(xmat,ymat,zmat,f1m
at,0));
isonormals(xmat,ymat,zmat,f1mat,p)
set(p,'Facecolor','red','Edgecolor'
, 'none');
daspect([1,1,1])
view(3); axis tight
camlight
lighting gouraud

3/13

de

Soluciones Computacionales a
Problemas en Ingeniera
Augusto Sisa
Segundo Semestre 2016

spacing=(0.1, 0.1, 0.1))


verts, faces = measure.marching_cubes(v2, 0,
spacing=(0.1, 0.1, 0.1))
verts, faces = measure.marching_cubes(v3, 0,
spacing=(0.1, 0.1, 0.1))
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_trisurf(verts[:, 0], verts[:,1], faces, verts[:,
2],
cmap='Spectral', lw=1)
plt.show()

Universidad del Norte


Divisin de Ingenieras
Departamento de Ingeniera
Sistemas

Soluciones Computacionales a
Problemas en Ingeniera
Augusto Sisa
Segundo Semestre 2016

de

c) Sobre la grfica anterior superponga la segunda ecuacin del sistema dado antes.

2 Nmero de condicin de sistemas de ecuaciones lineales


a) Resuelva el sistema de ecuaciones lineales
LU.
400 201
800 401

mostradas a continuacin utilizando factorizacin

x 200
y 200

b) Repita el ejercicio anterior considerando que la entrada a 11 de la matriz tiene un error de 1.


Describa los resultados obtenidos.
4/13

Universidad del Norte


Divisin de Ingenieras
Departamento de Ingeniera
Sistemas

Soluciones Computacionales a
Problemas en Ingeniera
Augusto Sisa
Segundo Semestre 2016

de

400 1 201
800
401

x 200
y 200

c) Calcule las normas de la matriz del sistema lineal indicado inicialmente y de su inversa y
comprelo con el nmero de condicin calculado por Matlab.

3 Nmero de condicin de sistemas de ecuaciones lineales


a) Resuelva el sistema de ecuaciones lineales mostradas a continuacin utilizando factorizacin
LU y eliminacin de Gauss.
1 x 2
1
1 1.001 y 2

b) Repita el ejercicio anterior considerando el sistema lineal varia ligeramente como se muestra a
continuacin.
1 x 2
1
1 1.001 y 2.001

c) Calcule las normas de la matriz del sistema lineal indicado inicialmente y de su inversa y
comprelo con el nmero de condicin calculado por Matlab.

5/13

Universidad del Norte


Divisin de Ingenieras
Departamento de Ingeniera
Sistemas

Soluciones Computacionales a
Problemas en Ingeniera
Augusto Sisa
Segundo Semestre 2016

de

4 Sistemas lineales de ecuaciones y ecuaciones diferenciales


(Laplaciano)
La distribucin de la temperatura en estado permanente en una placa caliente puede ser modelada por
la ecuacin de Laplace.

2T 2T
0 2 2
x
y

Malla de nxn celdas, (n+1 x n+1 nodos)


(1,1)

(1,2)

(2,1)

(2,2)

(1,n+1)

T4

T2

T1

T3
(n+1,1)

(n+1,n+1)

Si es posible dividir la placa en una malla formada como se muestra en la figura, las derivadas parciales
se pueden aproximar por diferencias finitas divididas:
a) Encuentre un sistema de ecuaciones lineales que permita calcular la temperatura en cualquier
punto de la placa para n = 4 celdas (i.e. 5 puntos).
Resultado :
import numpy as np
Tamano del sistema 64x64
import matplotlib.pyplot as plt
[[-4. 1. 0. ..., 0. 0. 0.]
import numpy.matlib as npmat
[ 1. -4. 1. ..., 0. 0. 0.]
import numpy.linalg as linalg
[ 0. 1. -4. ..., 0. 0. 0.]
import numpy as np
...,
from scipy.stats import norm
[ 0. 0. 0. ..., -4. 1. 0.]
import scipy
[ 0. 0. 0. ..., 1. -4. 1.]
nceldas= 9
[ 0. 0. 0. ..., 0. 1. -4.]]
npuntos= nceldas - 1
tamano_sistema= npuntos* npuntos
print
'Tamano
del
sistema
{}x{}'.format(tamano_sistema, tamano_sistema)
6/13

Universidad del Norte


Divisin de Ingenieras
Departamento de Ingeniera
Sistemas

Soluciones Computacionales a
Problemas en Ingeniera
Augusto Sisa
Segundo Semestre 2016

de

m=np.matlib.zeros((tamano_sistema,tamano_sistema))
np.fill_diagonal(m,-4)
for j in range (0,tamano_sistema-1):
m[j,j+1]=1
for j in range (0,tamano_sistema-1):
m[j+1,j]=1
print m

b) Si los valores de T1, T2, T3 y T4 son respectivamente:


a.
b.
c.
d.
para i

T1= 100* scipy.stats.norm.pdf(i, media, sigma)


T2=0C,
T3=0C y
T4=0C
( 0, N )

( 0, N ) 1, n 1 2 1, 8
,
:

[[ 8.56513445e-003][ 2.83638298e-001]
import numpy as np
[ 3.45542186e+000][ 1.54861264e+001]
import matplotlib.pyplot as plt
[ 2.55323059e+001][ 1.54861264e+001]
import numpy.matlib as npmat
[ 3.45542186e+000][ 2.83638298e-001]
import numpy.linalg as linalg
[ 8.56513445e-003][ 9.51500489e-005]
import numpy as np
[ 3.88856502e-007][ 5.84622106e-010]
from scipy.stats import norm
[ 3.23345349e-013][ 6.57905509e-017]
import scipy
[ 4.92454312e-021][ 1.35604432e-025]
nceldas= 9
[ 1.37368559e-030][ 5.11924976e-036]
npuntos= nceldas - 1
[ 7.01828198e-042][ 3.53965411e-048]
tamano_sistema= npuntos* npuntos
[ 6.56744367e-055][ 4.48267657e-062]
#print
'Tamano
del
sistema [ 1.12559971e-069][ 1.03976706e-077]
{}x{}'.format(tamano_sistema, tamano_sistema)
[ 3.53340695e-086][ 4.41729883e-095]
[ 2.03154019e-104][ 3.43715863e-114]
m
= [ 2.13933724e-124][ 4.89851503e-135]
np.matlib.zeros((tamano_sistema,tamano_sistema))
[ 4.12624638e-146][ 1.27864913e-157]
np.fill_diagonal(m,-4)
[ 1.45764959e-169][ 6.11308451e-182]
[ 9.43133526e-195][ 5.35292903e-208]
for j in range (0,tamano_sistema-1):
[ 1.11767440e-221][ 8.58508587e-236]
m[j,j+1]=1
[ 2.42593690e-250][ 2.52185362e-265]
[ 9.64419019e-281][ 1.35680419e-296]
for j in range (0,tamano_sistema-1):
[ 7.02221473e-313][ 0.00000000e+000]
7/13

Universidad del Norte


Divisin de Ingenieras
Departamento de Ingeniera
Sistemas
m[j+1,j]=1

Soluciones Computacionales a
Problemas en Ingeniera
Augusto Sisa
Segundo Semestre 2016

de

[
[
#print m
[
[
media = nceldas/2
[
sigma = nceldas/8
[
vectorc=npmat.zeros((tamano_sistema,1))
[
for i in range (0,tamano_sistema):
[
x = tamano_sistema* scipy.stats.norm.pdf(i, media, [
sigma)
[
vectorc[i] = x
print vectorc

solucion2 = linalg.solve(m,vectorc)
print solucion2

8/13

0.00000000e+000][
0.00000000e+000][
0.00000000e+000][
0.00000000e+000][
0.00000000e+000][
0.00000000e+000][
0.00000000e+000][
0.00000000e+000][
0.00000000e+000][
0.00000000e+000][

[[ -2.10309165e-01]
[ -8.32671526e-01]
[ -2.83673864e+00]
[ -7.05886119e+00]
[ -9.91257973e+00]
[ -7.05915180e+00]
[ -2.83790110e+00]
[ -8.37030742e-01]
[ -2.26583571e-01]
[ -6.07384082e-02]
[ -1.62749117e-02]
[ -4.36084960e-03]
[ -1.16848613e-03]
[ -3.13094914e-04]
[ -8.38935295e-05]
[ -2.24792035e-05]
[ -6.02328442e-06]
[ -1.61393419e-06]
[ -4.32452364e-07]
[ -1.15875262e-07]
[ -3.10486828e-08]
[ -8.31946948e-09]
[ -2.22919513e-09]
[ -5.97311035e-10]
[ -1.60049009e-10]
[ -4.28850028e-11]
[ -1.14910019e-11]
[ -3.07900467e-12]
[ -8.25016815e-13]

0.00000000e+000]
0.00000000e+000]
0.00000000e+000]
0.00000000e+000]
0.00000000e+000]
0.00000000e+000]
0.00000000e+000]
0.00000000e+000]
0.00000000e+000]
0.00000000e+000]]

Universidad del Norte


Divisin de Ingenieras
Departamento de Ingeniera
Sistemas

de

Soluciones Computacionales a
Problemas en Ingeniera
Augusto Sisa
Segundo Semestre 2016
[ -2.21062589e-13]
[ -5.92335423e-14]
[ -1.58715798e-14]
[ -4.25277700e-15]
[ -1.13952816e-15]
[ -3.05335651e-16]
[ -8.18144410e-17]
[ -2.19221134e-17]
[ -5.87401258e-18]
[ -1.57393693e-18]
[ -4.21735129e-19]
[ -1.13003587e-19]
[ -3.02792199e-20]
[ -8.11329253e-21]
[ -2.17395018e-21]
[ -5.82508195e-22]
[ -1.56082601e-22]
[ -4.18222068e-23]
[ -1.12062265e-23]
[ -3.00269935e-24]
[ -8.04570865e-25]
[ -2.15584114e-25]
[ -5.77655892e-26]
[ -1.54782430e-26]
[ -4.14738270e-27]
[ -1.11128785e-27]
[ -2.97768681e-28]
[ -7.97868775e-29]
[ -2.13788292e-29]
[ -5.72843929e-30]
[ -1.53492796e-30]
[ -4.11272564e-31]
[ -1.10162294e-31]
[ -2.93766117e-32]
[ -7.34415294e-33]]
>>> [[ -2.10309165e-01]
[ -8.32671526e-01]
[ -2.83673864e+00]
[ -7.05886119e+00]
[ -9.91257973e+00]
[ -7.05915180e+00]
[ -2.83790110e+00]
[ -8.37030742e-01]
[ -2.26583571e-01]
[ -6.07384082e-02]
[ -1.62749117e-02]

9/13

Universidad del Norte


Divisin de Ingenieras
Departamento de Ingeniera
Sistemas

de

Soluciones Computacionales a
Problemas en Ingeniera
Augusto Sisa
Segundo Semestre 2016
[ -4.36084960e-03]
[ -1.16848613e-03]
[ -3.13094914e-04]
[ -8.38935295e-05]
[ -2.24792035e-05]
[ -6.02328442e-06]
[ -1.61393419e-06]
[ -4.32452364e-07]
[ -1.15875262e-07]
[ -3.10486828e-08]
[ -8.31946948e-09]
[ -2.22919513e-09]
[ -5.97311035e-10]
[ -1.60049009e-10]
[ -4.28850028e-11]
[ -1.14910019e-11]
[ -3.07900467e-12]
[ -8.25016815e-13]
[ -2.21062589e-13]
[ -5.92335423e-14]
[ -1.58715798e-14]
[ -4.25277700e-15]
[ -1.13952816e-15]
[ -3.05335651e-16]
[ -8.18144410e-17]
[ -2.19221134e-17]
[ -5.87401258e-18]
[ -1.57393693e-18]
[ -4.21735129e-19]
[ -1.13003587e-19]
[ -3.02792199e-20]
[ -8.11329253e-21]
[ -2.17395018e-21]
[ -5.82508195e-22]
[ -1.56082601e-22]
[ -4.18222068e-23]
[ -1.12062265e-23]
[ -3.00269935e-24]
[ -8.04570865e-25]
[ -2.15584114e-25]
[ -5.77655892e-26]
[ -1.54782430e-26]
[ -4.14738270e-27]
[ -1.11128785e-27]
[ -2.97768681e-28]
[ -7.97868775e-29]

10/13

Universidad del Norte


Divisin de Ingenieras
Departamento de Ingeniera
Sistemas

de

Soluciones Computacionales a
Problemas en Ingeniera
Augusto Sisa
Segundo Semestre 2016
[ -2.13788292e-29]
[ -5.72843929e-30]
[ -1.53492796e-30]
[ -4.11272564e-31]
[ -1.10162294e-31]
[ -2.93766117e-32]
[ -7.34415294e-33]]

11/13

Universidad del Norte


Divisin de Ingenieras
Departamento de Ingeniera
Sistemas

Soluciones Computacionales a
Problemas en Ingeniera
Augusto Sisa
Segundo Semestre 2016

de

T1

100

T2

T (C)

T (C)

0.5
50

0
-0.5

3
4
vertice (0-N)
T3

-1

3
4
vertice (0-N)
T4

3
4
vertice (0-N)

0.5
T (C)

T (C)

0.5
0
-0.5
-1

0
-0.5

3
4
vertice (0-N)

-1

c) Grafique su solucin en 3D o con lneas de contorno.

d) Determine el valor mximo de n para que sea posible la solucin del problema en
Matlab/Python usando matrices completamente pobladas en su computador.

12/13

Universidad del Norte


Divisin de Ingenieras
Departamento de Ingeniera
Sistemas

de

Soluciones Computacionales a
Problemas en Ingeniera
Augusto Sisa
Segundo Semestre 2016

e) Utilice la representacin dispersa de la matriz del sistema encontrado para poder resolver el
problema con un n mayor al encontrado antes y utilice un valor de n muy grande

13/13