0% encontró este documento útil (0 votos)
150 vistas78 páginas

Guía de Python para Ingeniería

Este documento presenta funciones básicas de Python y NumPy para realizar cálculos numéricos. Explica cómo crear y manipular vectores, matrices, funciones y gráficas. También introduce conceptos como condicionales, bucles y funciones definidas por el usuario. El documento es una guía útil para aprender a programar en Python para ingeniería y ciencias.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
150 vistas78 páginas

Guía de Python para Ingeniería

Este documento presenta funciones básicas de Python y NumPy para realizar cálculos numéricos. Explica cómo crear y manipular vectores, matrices, funciones y gráficas. También introduce conceptos como condicionales, bucles y funciones definidas por el usuario. El documento es una guía útil para aprender a programar en Python para ingeniería y ciencias.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

4.

0 Python
Prof. Hector D. Perez
Todos sus programas/funciones deben
tener comentarios para documentar lo
que hacen
Función Python
Funciones Básicas
Logaritmo natural [Link](x)

Logaritmo base 10 np.log10(x)


Función Python
AB A**B
Sumar [Link](x)
Exponencial [Link](x)
Valor máximo [Link](x)
Escribir print(‘texto1’+’texto2’)
Valor mínimo [Link](x)
Comentario #
Promedio [Link](x)
Ayuda help(nombre_funcion)
Contar elementos len(x)
Convertir en texto str(valor)
Pi [Link]
Verificar el tipo de
Raíz Cuadrada [Link](x) type(x)
variable

import numpy as np
Matrices/Vectores

En Python, el primer índice es el 0; el último índice es el -1.


Operación Python

Matrices/Vectores Invertir una matriz A [Link](A)

Multiplicación de matrices A@B

Multiplicación elemento por


A*B
elemento

Operación Python Transponer una matriz A A.T

Sacar el subvector Vector con valores linealmente


entre los indices a y x[a:b] espaciados entre a y b, con n [Link](a,b,n)
b-1 números

Sacar la submatriz Dimensiones de una matriz A [Link]


entre las filas a y
A[a:b,c:d] Vector con valores entre a y
b-1; las columnas c y [Link](a,b,n)
d-1 b-1, con paso n

import numpy as np Resolver sistema A*x=b [Link](A,b)

import [Link] as lin


Crear sus propias funciones
Ejercicio 1
Escriba y corra una función en Python que reciba como entradas 1) la masa de un
gas, 2) el peso molecular del gas, 3) la temperatura del gas y 4) el volumen del
gas.

A partir de ello, debe calcular la presión según la ecuación de los gases ideales e
imprimir un mensaje que diga: “La presión según la ley de los gases ideales es: ”
y el valor hallado.

Inserte comentarios en el contenido de su función para que cualquier persona


pueda entender cada paso de la función.
Ejercicio 1 solución
Operadores Lógicos
Condicionales
Ejercicio 2
Haga una función que pueda convertir de grados a radianes y viceversa usando
Python.

Corra la función y verifique que funciona bien.

Inserte comentarios en el contenido de su función para que cualquier persona


pueda entender cada paso de la función.

Tip: Utilice if, elif y else. Asegúrese que su función sea robusta y reconozca
cuando se ha dado un valor erróneo.
Ejercicio 2 solución
Ejercicio 3
Escriba una función donde se tomen dos valores (x, y). La función debe detectar
si ambos son números positivos, ambos negativos, uno de los dos es positivo o
ambos son cero. Debe imprimir el resultado.
Ejercicio 4
Escriba un breve código que evalúe y = 1/x cuando x es diferente de cero. Si x es
cero, entonces y = 0.
Ejercicio 5
La ley de los gases ideales es una buena aproximación pero sólo bajo ciertas
circunstancias. En general, la aproximación es válida cuando el volumen molar es
mayor que 5 L/mol para gases diatómicos o mayor que 20 L/mol para otros gases.
Utilice los siguientes valores para imprimir el volumen molar del O2 y determinar
si la ecuación de los gases ideales es una buena aproximación: T = 600 K y P =
15 atm.
Ejercicio 6
Cree una función llamada “quad” que tome 3 valores (a, b y c) y calcule las dos
raíces utilizando la ecuación cuadrática para ax^2 + bx + c = 0. Verifique su
función con algunos valores para a, b y c.

NOTA: numpy tiene una función para hallar todas las raíces de un polinomio (inclusive las raíces
imaginarias). Por ejemplo, para hallar las raíces del Ejercicio 6, simplemente se usa: [Link]([a,b,c])
Ejercicio 7: Resolver este sistema de ecuaciones
Ejercicio 7 solución
Ejercicio 8
Crear una matriz “C” en Python que contenga las filas 2-3 y las columnas 1-4 de
la matriz “A” del ejercicio anterior.
Loops (ciclos)
Cuidado con los
While (pueden
crear un loop
infinito).

NOTA:
range(a,b,n) es
un vector con los
números enteros
entre a y b-1 con
paso n.
Ejercicio 9: Programar el algoritmo A^B como una función
Ejercicio 9 solución
Ejercicio 10: Repita el Ej. 6 de las diapositivas de Excel
1. No necesita resaltar las presiones
2. Tips:
a. Debe importar numpy
b. Resuelva el ejercicio con las dos opciones abajo:
c. Opcion 1:
i. Cree el volumen como un vector columna (ejemplo para crear un vector columna de un vector fila:
vector[:,None]) y la temperatura como un vector fila
ii. Al aplicar la ecuación de los gases ideales, Python automáticamente calculará la presión para todas las
combinaciones de V y T.
d. Opcion 2:
i. Cree una matriz inicial para las presiones que contenga ceros en cada elemento.
ii. Utilice 2 ciclos para calcular las presiones para cada elemento del vector de volúmenes y para cada elemento
del vector de temperaturas.
e. Después de haber creado la matriz de presiones, importe pandas (es una librería de python para análisis de datos).
Luego cree un DataFrame con la matriz de presiones donde los índices (las filas) serán los valores del vector de
volúmenes y las columnas serán los valores del vector de temperaturas.
i. Vease: [Link]
ii. NOTA: En el DataFrame, el index debe ser un vector fila (puede usar [Link]() para convertir cualquier
matriz/vector en un vector fila)
Ejercicio 10: Solución
Ejercicio 10: Solución
Ejercicio 11: Repita el Ej. 9 de las diapositivas de Excel
Resuelva el ejercicio mediante operaciones de matrices.

En vez de usar la ecuación de Antoine para calcular las presiones de saturación,


utilice la librería thermo de python (librería muy buena para Ing. Quim.)

Para instalar thermo: Abrir Anaconda Prompt (línea de comandos negra) y escribir:
pip install thermo. Seguir instrucciones en pantalla.

Para utilizar thermo: ver ejemplo de como importar la presion de saturacion en Pa


para el agua:

[Link]
Ejercicio 11: Solución
Ejercicio 12:
Utilice la función [Link] para crear un vector con 25 elementos. Luego
utilice la función [Link] para convertir este vector a una matriz 5x5.

Tips: utilice la operación help de Python para aprender cómo usar las funciones
rand y reshape.
Ejercicio 12: Solución
Gráficas

Para poner título al gráfico:


[Link](‘Titulo’)

Para gráfica interactiva en una ventana separada:


%matplotlib
Gráficas

Para cambiar el marcador y el color se debe


hacer dentro de las mismas comillas.

Ejemplo: Asteriscos Verdes =>


[Link](x,y,‘g*’)
Ejercicio 13:
Crear un vector con un rango de temperaturas y otro vector con un rango de
presiones (ej. usen la función [Link]).

Calcular el volumen molar para estas temperaturas y presiones (asuma gases


ideales).

Graficar el volumen molar vs. temperatura en una gráfica.

Graficar el volumen molar vs. presión en otra gráfica.

Utilice diferentes colores y estilos de línea/marcadores.


Ejercicio 13: Solución
Depuración
Utilizar print() para ver los valores intermedios y así encontrar dónde está el error.
Input/Output
Solver Numérico: 1 incógnita
fsolve hallará el valor de x para que
ax2+bx+c = 0.

Es decir, la función debe estar igualada a


cero.

En otras palabras, la función debe ser el


error total:
LADO DERECHO - LADO IZQUIERDO.
(No es necesario tomar el valor absoluto,
ya que no se está minimizando sino que
se está igualando a cero.)
Solver Numérico: +1 incógnita
Solver Simbolico
Solver Simbólico: más de una incógnita
Ejercicio 14
Haga nuevamente el ejercicio 11. En vez de usar operaciones de matrices, utilice
fsolve.
Ejercicio 14: Solución
Integrales
Sencillas Múltiples

NOTA: Para calcular integrales de manera


numérica (no simbólica), se puede utilizar
quad, dblquad o tplquad de [Link]
([Link]
torial/[Link])
Derivadas
Primera De orden mayor

Las derivadas también se puede calcular de


manera numérica con [Link] [Link]
Otras operaciones simbólicas
Python (sympy):

1. Simplificar: [Link](Expresion)
2. Expandir: [Link](Expresion)
3. Agrupar terminos: [Link](Expresion,Variable)
4. Factorizar: [Link](Expresion)
5. Sustitución numérica: [Link]( [ (Variable1,Valor1) , (Variable2,Valor2) , ...] )
6. Evaluar numéricamente: [Link]()
7. Convertir función simbólica en función numérica: [Link](Variable,Función)

[Link]

[Link]

[Link]
Ejercicio 15
Resuelva una integral y una derivada con python.
Ejercicio 16: Usando fsolve
Ejercicio 16: Solución
Ejercicio 17
Grafique la presión del etano usando el modelo Redlich/Kwong para las temperaturas: 0, 50, 100, 150, 200 °C .
1. Debe hacer una gráfica de Presión vs. Volumen Molar
2. Inserte una leyenda para saber a qué temperatura corresponde cada curva (5 curvas en una sola gráfica)
3. Limite el eje y para mostrar solo los valores positivos de Presión.
Ejercicio 17: Solución
Ejercicio 18
Para la ecuación de Redlich-Kwong, utilice el paquete Sympy para calcular simbólicamente la derivada de la presión con respecto a la
temperatura y la derivada de la presión con respecto al volumen.
1. Luego, evalúe las derivadas en 77°C y el volumen molar del gas calculado en el ejercicio 16. Puede usar el método .subs para
ello ([Link]
2. ¿A estas condiciones, cuál variable (temperatura o volumen molar) tiene un efecto más grande en la presión? Es decir, ¿qué
afectará más a la presión, un cambio en la temperatura de 1°C o un cambio en el volumen molar de 1cm3/mol?
Interpolacion
Regresión polinómica
Regresion no lineal
Ecuaciones Diferenciales
Ejercicio 19
Determine la mejor regresión polinómica para los siguientes datos. Hacer una
gráfica comparando los datos con los resultados de la regresión.
Ejercicio 19: Solución
Ejercicio 20: usando curve_fit

NOTA:
T está en Kelvin
r_1 está en mol/(s*Km)
Ejercicio 20: Solución
Ejercicio 21
Repetir la parte 1 del punto 2 de los dos últimos parciales. Ver el enunciado en las diapositivas a
continuación. Compare la solución del el método de Euler y con odeint (gráficamente).

Para usar odeint, la función ED debe dar como resultado un vector con las 4 ecuaciones diferenciales:

return [dh1dt, dh2dt, dh3dt, dh4dt]

También, el valor inicial y0 debe ser un vector con los niveles iniciales:

y0[h10, h20, h30, h40]

Tip: la condición para los días de lluvias se puede implementar en Python de la siguiente manera,

if (t>59 and t<151):


Ejercicio 21: Solución
Ejercicio 22: usando fsolve (2 alternativas)

Continúa en las
siguientes 2
diapositivas
Compuesto a1 a2 a3 a4 a5 a6 a7 b1 Rango de T

CH4 -176685 2786.181 -12.0258 0.039176 -3.619E-05 2.027E-08 -4.977E-12 -23313.1 200-1000K

Reactivos O2 -34255.6 484.7001 1.119011 0.004294 -6.836E-07 -2.023E-09 1.039E-12 -3391.45 200-1000K

N2 22103.71 -381.846 6.082738 -0.00853 1.385E-05 -9.626E-09 2.520E-12 710.8461 200-1000K

CO2 117696.2 -1788.79 8.291523 -9.2E-05 4.864E-09 -1.891E-12 6.330E-16 -39083.5 1000-6000K

Productos H2O 1034972 -2412.7 4.646111 0.002292 -6.837E-07 9.426E-11 -4.822E-15 -13842.9 1000-6000K

N2 587712.4 -2239.25 6.066949 -0.00061 1.492E-07 -1.923E-11 1.062E-15 12832.1 1000-6000K


[Link]

Alternativa: (mas facil)

Las entalpías también se podrían obtener usando la librería thermo. Para calcular la entalpía de un compuesto X a una temperatura
de T1 y una presión de P1:

from [Link] import Chemical


X=Chemical(‘Nombre o fórmula del compuesto X’)
[Link](T=T1,P=P1) #llevar X a temperatura de T1 (K) y presión de P1 (Pa)
H = X.calc_H(T=T1,P=P1) + [Link] #la entalpía es la entalpía de formación (segundo término: Hf) + deltaH (primer término)

Caución: Para las moléculas como N2 y O2 la entalpía de formación es 0. Para estas, no utilice [Link] porque dará ‘None’ en vez de
0.
Ejercicio 22: Solución
Ejercicio 23: Para el mismo sistema del Ej. 22

TIP: hacer este


ejercicio para el
nitrógeno
Ver los coeficientes en el ejercicio 22
Ejercicio 23: Solución
Ejercicio 24: Para el mismo sistema del Ej. 22
Ejercicio 24: Solución
Ejercicio 25: Para el mismo sistema del Ej. 22
Ejercicio 25: Solución
Ejercicio 26: usando fsolve (2 alternativas)

Continúa en las
siguientes 2
diapositivas
Alternativa: (mas facil)
Puede usar la librería fluids que viene incluída al instalar thermo. Para ello solo tendrá 3 incógnitas: Q1, Q2 y
Q3. Solo necesitará las siguientes ecuaciones.

NOTA: para fsolve, el valor inicial x0 debe ser un vector con 3 valores iniciales (uno para cada caudal): x0=[q10, q20, q30].
Recuerde que para fsolve se usa LADO IZQUIERDO-LADO DERECHO (LI-LD). Como son 3 ecuaciones, la última línea
del código de la función a ingresar al fsolve debe ser return [LI1-LD1, LI2-LD2, LI3-LD3].

Para calcular la caída de presión en una tubería con fluids:

from fluids import *


import numpy as np

A=[Link]*d**2/4 #area de tubería 1 con diámetro d


v=Q/A #velocidad en tubería 1
Re=Reynolds(V=v, D=d, rho=densidad, mu=viscosidad)
f=friction_factor(Re, eD=rugosidad/d1)
K=K_from_f(fd=f, L=longitud, D=d)
dP=dP_from_K(K,rho=densidad,V=v)
Ejercicio 26: Solución

También podría gustarte