Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Divisin de Ingenieras
Departamento de Ingeniera
Sistemas
Soluciones Computacionales a
Problemas en Ingeniera
Augusto Sisa
Segundo Semestre 2016
de
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/13
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
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
3/13
de
Soluciones Computacionales a
Problemas en Ingeniera
Augusto Sisa
Segundo Semestre 2016
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.
x 200
y 200
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.
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
Soluciones Computacionales a
Problemas en Ingeniera
Augusto Sisa
Segundo Semestre 2016
de
2T 2T
0 2 2
x
y
(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
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
( 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
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]]
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
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
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
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
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
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