Python para Ingenieros Civilespdf
Python para Ingenieros Civilespdf
CONTENIDO
1. Introducción a Python
1.1 Breve historia de Python
1.2 Instalación de Python v. 3.7.x
1.3 Uso del intérprete
1.4 Ayudas
2. Variables y su referenciación
2.1 Tipos de variables
2.2 Referenciación vs. Asignación
2.3 Expresiones matemáticas
2.4 Funciones y biblioteca math
4. Circuitos
4.1 Instrucción for
4.2 Instrucción while
5. Estructuras de datos
5.1 Arreglos
5.2 Listas
1
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
5.3 Tuplas
5.4 Matrices
5.5 Diccionarios
9. Problemas propuestos
Problema 1. Cálculo de la raíz cúbica por fórmula iterativa
Problema 2. Raíz cuadrada con otro método iterativo
Problema 3. Sucesiones
Problema 4. Logaritmo de X
Problema 5. Interpolación de Lagrange
Problema 6. Parábola de mínimos cuadrados
https://www.youtube.com/watch?v=FFE1VNMAZfc
2
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
1. INTRODUCCIÓN A PYTHON
3
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
1.2 Instalación de Python v. 3.7.x
Se recomienda descargar la última versión para el sistema operativo Windows, haciendo clic en el
botón Python 3.7.x.
4
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
1.3 Uso del intérprete
Cuando se ejecuta Python 3.7.x se abre la siguiente pantalla, figura 1, que es el Shell o intérprete
que se va a encargar de transformar las instrucciones escritas en el editor para procesarlas, detectar
e indicar errores y mostrar la ejecución del programa (run).
Mientras se encuentra uno en el Shell, se puede interactuar con el lenguaje escribiendo directamente
en el cursor (>>>) y observar los resultados mostrados.
Para crear un programa usando el Python’s IDLE (Integrated Development and Learning Environ-
ment), se recurre a File-New file y se abre la ventana de edición para comenzar a escribir las instruc-
ciones, como se observa en la figura 2.
5
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Figura 2. IDLE
La ventana que se muestra dentro del IDLE se invocó mediante Help-About IDLE, y se puede obser-
var la información de la licencia (License), derechos de autor (Copyright), el archivo Leeme
(Readme), noticias (News) y los créditos (Credits) tanto para Python, Tk y IDLE.
6
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
1.4 Ayudas
Toda la información de ayuda que se requiera para el IDLE, el mismo lenguaje, etc., puede ser acce-
sado desde Help-IDLE Help, Help-Python Docs F1, como se observa en la figura 3.
Existen muy buenos libros comerciales (ver figura 4) y algunos disponibles en internet de forma
gratuita, y otros impresos, recomendando los siguientes:
1. Resolución de problemas para ingenieros con Python® estructurado de Rosalía Peña de Garceta
Grupo Editorial (2016) <Impreso>.
2. Learning Python de Fabrizio Romano de Pack Publishing (2015) <Gratuito y PDF>
3. Python for Everybody «Exploring Data Using Python 3» de Charles Severance (2016) <Gratuito
y PDF>
4. Python 3 al descubierto de Arturo Fernández Montoro de Alfaomega (2012) <Impreso>
El valor o valores que puede almacenar una variable pueden ser de tipo numérico (number),
carácter (string), lógico (booleano) o combinado. El tipo numérico puede ser entero (int) o flotante
(float); sin necesidad de definir el tipo, Python lo sabe automáticamente, diferenciando int de float
por el punto decimal (.)
La sintaxis para referenciar una variable es: variable=expresion, donde expresión puede ser
una constante, una variable, una función, cualquier conjunto de constantes, variables, funciones o
expresiones combinados con los operadores propios de su tipo y siguiendo las reglas adecuadas de
sintaxis (Peña, 2016).
fbiprima_c=0.85*fprima_c
p_min=0.7*math.sqrt(fprima_c)/fy
p_bal=fbiprima_c/fy*beta1*6000/(6000+fy)
p_max=0.75*p_bal
FR_flx=0.90
MR=FR_flx*fbiprima_c*base*peralte**2*q*(1-0.50*q)
Los operadores matemáticos y funciones los vamos a comentar más adelante. Obsérvese
que en la raíz cuadrada usamos math.sqrt().
8
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
2.2 Referenciación vs. Asignación
La función id() proporciona la posición de memoria del objeto al que referencia la variable
indicada como argumento de la función. La posición de memoria que se asigne depende de los pro-
gramas en ejecución en el momento de arrancar el entorno Python y de lo que se haya realizado en
Python con anterioridad.
La función type() indica el tipo de la constante, variable o expresión que se quiera consultar.
La figura 4 muestra algunos ejemplos del uso de id() y type() ejecutados directamente en el
Shell.
9
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
2.3 Expresiones matemáticas
Los operadores aritméticos como suma (a+b), resta (a-b), multiplicación (a*b), división real
(a/b) y elevar a una potencia (a**b) están disponibles en todos los lenguajes, y Python no es la ex-
cepción; sin embargo, existen otros operadores de uso no cotidiano que están disponibles en el len-
guaje: división entera (a//b), resto de la división entera o módulo (a%b); para modificar la jerarquía
de las operaciones (también llamado precedencia, prelación o prioridad) ímplicita en el lenguaje,
sólo se usan los paréntesis () como signos de agrupación.
Se recomienda poner solo los paréntesis necesarios en las expresiones, pero en operaciones
complejas, los paréntesis aumentan legibilidad.
Tanto el conjunto de los números enteros como el de los reales, (float), en matemáticas
pueden ir desde -∞ a +∞. Además, mientras que para cualquier entero existe un anterior y un
siguiente, entre dos reales cualesquiera existen infinitos números reales. La implementación
completa del tipo float en Python depende del sistema operativo sobre el que trabaja el Shell.
Generalmente está representado en 8 bytes, con un rango de valores que va desde 1.7x10 -308 a
1.7x10+308, para un sistema operativo Windows de 64 bits. En caso de presentarse un
desbordamiento, el lenguaje mostrará una salida inf (infinite). La representación de un flotante en
formato de notación científica sustituye el «x10x» por
«ex». Algunos ejemplos se muestran en la figura 5 ejecutados en el Shell.
10
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
En una de las entradas (la séptima) puede observarse que al pedirse el resultado de pi/2,
donde pi=3.141592657, y se invoca mediante la biblioteca (library) math, se presenta un error al no
haberse invocado primero usando la instrucción import, misma que más adelante la estudiaremos.
11
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
2.4 Funciones y biblioteca math
Una función es un objeto con un nombre reservado que permite obtener un valor numérico
de uno o varios parámetros encerrados dentro de paréntesis; por ejemplo, las funciones
trigonométricas seno, coseno, tangente son definidas mediante las funciones sin(), cos() y tan(),
cuyo parámetro que requieren es el valor de un ángulo expresado en radianes. Para ocupar estas
funciones, se requiere, primero, importarlas de la biblioteca math, pues es un archivo externo de
extensión .py alojado en la carpeta de instalación de Python y estará disponible en el Shell cuando
sea invocado. Su llamado o invocado se puede dar de las siguientes formas: import math, import
math as m, from math import sin.
La primera forma llama a la biblioteca math y pone disponible todas las funciones en
memoria siempre y cuando se llamen anteponiendo math al nombre de la función, por ejemplo,
math.sin(math.pi/4) regresa el flotante 0.7071067811865475. La segunda forma es similar a la ante-
rior pero usa el alias m para anteponerse en el nombre de la función, por ejemplo,
m.sin(m.pi/2)=1.0. La tercera forma pone sólo disponible en memoria a la función que se importa,
por ejemplo, sin(45*180/math.pi)=0.7071067811865475, solo dará este resultado si se ha
importado la biblioteca math previamente, si no mostrará un mensaje de error. Algunas funciones se
muestran en la tabla no. 2.
Existen otras funciones disponibles sin recurrir a la biblioteca math como abs(), round(),
int() que permiten efectuar operaciones sobre números para encontrar el valor absoluto, redondear a
las cifras decimales que se indiquen y hallar la parte entera de un número decimal.
Existen otras bibliotecas que deberán ser llamadas en el momento que se deseen usar en la
escritura de un programa; algunas están colocadas en la carpeta lib que se generó al instalar Python
3.7.0. Otras bibliotecas creadas por terceros deberán descargadas e instaladas con el paquete de ins-
talación de Python (Python Install Packing) o comando pip desde la línea de comandos.
13
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
3. ENTRADA DE DATOS Y ESTRUCTURAS CONDICIONALES
Un paradigma de programación muy elemental y que permite crear programas de forma muy
sencilla, sin necesidad de estructurar un diagrama de flujo complejo o elaborar un algoritmo
compli- cado, es la programación secuencial, la cual se basa en tres bloques básicos (ver figura 6):
Lectura >>> Proceso
>>>Salida o
esquemáticamente:
Lo importante es establecer cuáles son las variables que deberán estar en el bloque de lectura
de datos iniciales, cuáles en el proceso mediante nuevas variables y sus expresiones, y cuáles en el
bloque de salida de resultados.
Veamos el siguiente ejemplo: para calcular las raíces de una ecuación cuadrática de la forma
En el programa anterior se observa al inicio el uso de las comillas triples (""") para
documentar, tanto al programador como al futuro usuario del programa. Es recomendable usar esta
técnica y, ade- más, realizar comentarios con el símbolo #. Una variante del programa con la salida
formateada y comentarios, sería la que se muestra en la figura 8.
Mas adelante modificaremos este programa para que calcule las raíces reales e imaginarias
16
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
17
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Como se puede ver, en este programa se utiliza la función eval() en lugar de float() y prácti-
camente se obtienen resultados similares. Si no se utilizan estas funciones antes de referenciar a la
variable introduciendo los datos desde el teclado mediante input(), se carga un valor textual a las
variables y no se pueden realizar las operaciones matemáticas.
Como ejercicio, se deberá modificar el programa anterior para que les solicite el lugar de
donde se obtiene la muestra y, además, muestre los resultados de los pesos volumétricos del suelo
en estado natural y en estado seco, los volúmenes de sólidos, agua y aire, con sus respectivas
unidades.
Realizar un programa que determine la humedad de un suelo calculado con el método del
horno de convección eléctrica, en donde se solicita el peso de la cápsula (tara, en grs), el peso de la
cápsula más suelo húmedo (en grs) y el peso de la cápsula más suelo seco (en grs) después de
secado en el horno durante 24 horas a 60°C. La humedad del suelo se calcula con la expresión:
18
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
3.2 Operadores booleanos y estructuras if y else
En un diagrama de flujo, dentro del bloque de procesos, hay ocasiones que se requiere tomar
un camino a partir de una bifurcación, o condición matemática, misma que requiere ser evaluada
mediante operadores lógicos (o booleanos, en honor de Alfred Boole). Esquemáticamente, se vería
representado como se muestra en la figura 13.
Si D≥0, tenemos soluciones reales, si no, soluciones complejas de la forma R±Zj, donde j2=-
1; para usar expresiones complejas, se requiere importar la biblioteca cmath antes de usarla en las
expresiones. Para evaluar la condición, se requiere de la instrucción if, cuya sintaxis es:
if condicion:
operaciones1 #si condicion es True
else:
operaciones2 #si condicion es False
19
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Figura 14. Programa fuente y ejecución de la fórmula general para ecuaciones cuadráticas
La ecuación de tercer grado a3x3+a2x2+a1x+a0=0 puede resolverse con las ecuaciones dedu-
cidas por Tartaglia y dadas a conocer por Cardano, que se resumen como el método de Tartaglia-
Cardano; la secuencia de operaciones requiere de conocer los coeficientes a0, a1, a2 y a3 como datos
de entrada; los resultados de x1, x2 y x3 requieren de la evaluación y comparación de un conjunto de
expresiones, como se muestra en el documento «Ecuaciones de tercer grado» de Wikilibros. Clic
aquí para acceder a la información.
Figura 15. Programa para solucionar ecuaciones cúbicas por las fórmulas de Tartaglia-Cardano
21
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
22
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
En el tema de clasificación de suelos y específicamente en los límites de consistencia o de
Atterberg de Mecánica de Suelos, cuando se requiere clasificar un suelo fino, se necesita localizar
una región en la carta de plasticidad de Casagrande (1948) para conocer la naturaleza del suelo a
partir del límite líquido (LL) y el índice plástico (IP). En 1977, Howard definió la línea U
(IP=0.9LL- 8) y ASTM adoptó la nueva carta de plasticidad con la norma ASTM D-2487 (figura 17);
Polidori (2009) redefinió la carta de plasticidad, aunque no la ha adoptado aún ASTM (figura 18).
23
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
24
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
4. CIRCUITOS
Normalmente se recurre a una variable iterativa que lleve el conteo de las repeticiones;
cuando se alcance el último valor de la iteración, se continua con el flujo del programa. Esta
estructura tam- bién recibe el nombre de circuito, bucle o ciclo for.
Hay varias formas de realizar los circuitos, pero la forma más sencilla es utilizar una lista,
que es una variable especial que más adelante utilizaremos, pero que por el momento generaremos
con la función range(). Por ejemplo, la suma de los primeros n términos puede expresarse
matemáticamente
Puede observarse que la función range() genera una lista de 1 a 10, si se incrementa el
último número en 1; la variable k es la variable iterativa y se sustituye temporalmente por los
valores de la lista (de 1 a 10); el acumulador suma inicia con cero y va acumulando los valores de k.
25
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Como reco- mendación, cualquier sumatoria matemática puede representarse con un acumulador,
un valor final
26
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
incrementado en uno y un circuito que acumule a la expresión a evaluar; en el siguiente ejemplo,
pueden verse los elementos comentados arriba tanto en la expresión abreviada (sumatoria), como en
su desarrollo y la representación en otras variantes, que conducen al mismo resultado, según se ve
en la figura 22. Su programa y corrida se muestran en la figura 23.
Los circuitos for pueden anidarse, es decir, un bucle puede estar dentro de otro u otros
bucles, respetando la ejecución del más interno hacia el más externo. La siguiente expresión
incorpora dos
Normalmente se recurre a una variable de control que permita valorar la condición, para que
el circuito se realice mientras la condición es verdadera (True). Esta estructura también recibe el
nombre de circuito while, y se debe ser muy cuidadoso en la definición de la condición (o
condiciones) de la variable de control para que se pueda salir del circuito, porque se corre el riesgo
de quedar en un circuito infinito o generar un desbordamiento (inf).
Esta estructura es muy utilizada para repetir procesos o partes de un programa hasta que se
oprima determinada tecla o se establezca cierta condición. Por ejemplo, el programa EcuacionCua-
dratica.py puede modificarse para que se repita hasta que se oprima una tecla diferente de "S", de la
forma que se muestra en la figura 26.
29
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Algunos ejemplos del uso de las dos instrucciones repetitivas se muestran en la figura 29.
En este programa puede observarse el uso de la función type() para verificar el tipo de
variable, el uso de f como variable para referenciar el producto de la variable iterativa i, n con un
valor inicial float para servir como variable de control en el segundo circuito while() y la función
eval() para evaluar el tipo de dato que se introduce desde el teclado con la instrucción input().
Así como se dijo que para una sumatoria se requiere un acumulador, para una multiplicatoria
se requiere una variable que registre el producto (multiplicador) en cada vuelta del circuito, como se
observa en el cálculo de la multiplicatoria de 1 a 10, ver figura 30, para su pseudo-programa en
30
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Mathcad 14 y el programa en Python.
Para calcular las cifras decimales del número pi (π), existe una serie infinita propuesta por
James Gregory y Gottfried Leibniz expresada por la siguiente sumatoria; en este ejemplo se calcula
para un máximo de k = 1e6:
31
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Figura 31. Programa fuente y corrida del cálculo de 𝜋 con la fórmula de Gregory-Leibniz
5. ESTRUCTURAS DE DATOS
5.1 Arreglos
La posición dentro del vector o matriz se llama mediante variables enteras, que en la
matemá- tica formal se conocen como subíndices; por ejemplo, Aj es una variable con subíndice
entero j que puede almacenar el número de datos que tome j, comenzando con cero (0). En pseudo
programación, la variable j es una variable de rango, y no forzosamente debe ser entera; pero si se
usa como subíndice de un arreglo, lo deberá ser.
Por ejemplo, si Aj, para j=0,1,2,..,10 va a almacenar los valores 0, 0.25, 0.50,
1.00, ... , 2.50, se representaría matemáticamente como: Aj=0.25*j y en pseudo progra-
mación se escribiría como se observa en el extremo derecho de este párrafo.
Puede verse que A almacena 11 datos numéricos tipo float, y en cada posición j,
el valor depende de la expresión 0.25*j.
32
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Un elemento de la matriz se puede llamar mediante los subíndices en el orden fila, columna
separados por una coma; por ejemplo, el elemento X3,5=-0.75.
Para trabajar este tipo de estructura de datos en Python, es necesario revisar las listas (list), tuplas
(tuple), lista de listas (matrix) y diccionarios (dict), así como algunas funciones especiales
apropiadas para el tratamiento de estas variables iterables.
5.2 Listas
Una lista es una colección ordenada de objetos, similar al array dinámico empleados en otros
lenguajes de programación. Puede contener diferentes tipos de objetos, es mutable y Python nos
ofrece una serie de funciones y métodos integrados para realizar diferentes tipos de operaciones.
(Fernández-Montoro, 2012).
La sintaxis de una lista es: identificador=[elemento0, elemento1, ...]; las listas son iterables
y mutables. Los valores de las listas pueden ser accedidos utilizando el valor del índice que ocupan
en la misma.
34
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Figura 34. Programa y ejecución para determinar la distancia máxima entre coordenadas
Como se observa en el programa de la figura 34, se controlan los subíndices de los vectores
x e y mediante las variables i y j haciendo el recorrido de 0 a la longitud (len()) de x, en el caso de i,
y de i+1 a la longitud de y, en el caso de j. La distancia entre los puntos se calcula con
35
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
5.3 Tuplas
Una tupla (tuple) es una colección de objetos de diferentes tipos, usando internamente un
array de objetos que almacena referencias hacia otros objetos. Las tuplas se declaran con paréntesis
(), entre los cuales deben separarse por comas (,) los elementos que van a formar parte de ella. Los
elementos de las tuplas son accesibles a través del índice que ocupan en la misma, igual que en un
array. Este tipo de dato es inmutable, esto significa que no es posible asignar directamente un valor
a través del índice. Es posible anidar tuplas dentro de tuplas. La tupla es iterable, es decir, podemos
recorrer todos sus elemen tos con un ciclo for. Las tuplas se pueden concatenar a través del
operador +; también puede utilizarse el operador * para crear una tupla donde los elementos de la
original se repiten el número de veces que indique el número después del asterisco.
Los principales métodos que incluyen las tuplas son index() y count(); también puede usarse
la función len() sobre la variable referenciada a la tupla.
36
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
5.4 Matrices
Una matriz (matrix) es un arreglo rectangular de números accedidos mediante sus subíndices
referidos a filas y columnas. En Python, una matriz es una lista de listas (list of list), y el tratamiento
que se debe dar durante su programación es similar al de las listas, solo teniendo cuidado de invocar
correctamente la posición de un número en la matriz a través de los subíndices, usando la notación
siguiente: Matriz[fila][columna]. Matriz es la variable que identifica al arreglo; fila es el subíndice
que indica la posición en las filas y columna el subíndice que posiciona en las columnas. Por
ejemplo, si A es una matriz cuadrada de 5 x 5 (cinco filas y cinco columnas) con los siguientes
valores:
Para llamar al número 65 de la matriz, invocaríamos A[2][2], recordando que todas las listas
empiezan con un número en el subíndice 0, y en el caso de una matriz, en la fila 0 y columna 0. Así,
el número 12 está en A[0][0]; el elemento A[4][0] es 0 y el A[4][4] es 33.
Las matrices son muy utilizadas en ingeniería, y se han desarrollado fuertemente debido a su
programación en la solución de sistemas de ecuaciones lineales mediante la eliminación gaussiana;
esta técnica es generadora de otros métodos y sus aplicaciones en diversas áreas de la ingeniería
civil son notables. El programa está planteado para ingresar los coeficientes de un sistema de N
ecuaciones lineales y puede probarse con el sistema mostrado en la figura 36-a. El programa, que se
muestra en la figura 36-b, encuentra la solución de un sistema de ecuaciones lineales mediante una
matriz au- mentada, aplica eliminación gaussiana y sustitución hacia atrás para encontrar el vector
de soluciones.
37
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Figura 36-a. Modelo en Mathcad para solución de un sistema de ecuaciones lineales
38
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
39
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Figura 36-b. Programa para resolver un sistema de ecuaciones lineales por eliminación gaussiana y sustitu-
ción hacia atrás
En la ventana Path Browser podemos ver, figura 38, instalada la biblioteca externa tabulate:
40
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
5.5 Diccionarios
Un diccionario es un dato especial de Python que almacena una serie de valores utilizando
otros como referencia para su acceso y almacenamiento. Cada elemento de un diccionario es un par
clave-valor (key-value) donde el primero debe ser único y será usado para acceder al valor que con-
tiene. A diferencia de las tuplas y las listas, los diccionarios no cuentan con un orden específico,
siendo el intérprete de Python el encargado de decidir el orden del almacenamiento. Sin embargo,
un diccionario es iterable, mutable y representa una colección de objetos que pueden ser de
diferentes tipos (Fernández-Montoro, 2014).
Para declarar un diccionario se utilizan las llaves ({}) entre los que se encuentran los pares
key-value separados por comas. La key de cada elemento aparece separada del correspondiente
value por el carácter dos puntos (:). Alternativamente, podemos hacer uso de la función dict() para
crear un diccionario.
A diferencia de las listas y tuplas, el acceso al valor de un elemento no es por índice sino por
la clave (key). Los métodos principales que nos permiten iterar sobre un diccionario son: items(),
values() y keys(). El primero da acceso tanto a claves como a valores, el segundo se encarga de de-
volver los valores y el último, las claves del diccionario. En la figura 39 se observa el programa que
usa un diccionario para buscar las funciones trigonométricas de un ángulo dado.
Figura 39. Uso de un diccionario para hallar las funciones trigonométricas de un ángulo dado
El siguiente programa, ver figura 40, toma el Zen de Python creado por Tim Peters, lo
muestra en inglés de la biblioteca importada this.py y permite traducir por línea (19 líneas) o en su
totalidad. Con la tecla <F> se termina el programa.
41
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
42
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
6. PROCEDIMIENTOS Y ARCHIVOS EXTERNOS
Para calcular los coeficientes binomiales del binomio de Newton (a+b)n se usa la expresión:
nCr=n!/((n-r)!r!)
43
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
1,1
1,2,1
1,3,3,1
1,4,6,4,1
1,5,10,10,5,1
....
Figura 42. Triángulo de Pascal
El siguiente programa, ver figura 43-a, realiza el cálculo del límite líquido usando la
ecuación de Lambe, que establece que LL=1/2*(w1*(N1/25)0.121+w2*(N2/25)0.121), donde w1 y w2 son
las hume- dades registradas para 5<=N1<25 y 25<N2<=3; la corrida del programa se muestra en la
figura 43- b.
44
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Figura 43-b. Programa para calcular el límite líquido por el método de Lambe
Una fortaleza del uso de funciones en un programa es que se pueden incluir y usar en otros
programas a manera de bibliotecas importadas externamente y planificadas adecuadamente, como
se observa en la figura 44.
Un archivo externo permite almacenar información textual que puede ser llamada con
ciertas funciones para alimentar de datos a un programa, liberando memoria interna mientras el
programa se ejecuta. También se puede guardar información desde la ejecución del programa al
archivo externo.
Son varios los formatos que acepta Python para el proceso de archivos o ficheros de almace-
namiento externo: CSV, XML, JSON, YAML, entre otros. Los archivos de formato CSV (valores
sepa- rados por comas «comma-separated values») son archivos de texto fácilmente generables con
un edi- tor de texto, con MS Office (Word, Excel), FreeOffice o TextMaker, con la condición de
separar con comas los valores a almacenar.
Las operaciones básicas, como apertura, creación, lectura y escritura de datos están incorpo-
radas en la biblioteca estándar. La función open() permite abrir un archivo de texto (extension .txt)
para leer (read), escribir (write), añadir (append) o leer/escribir (read/write), dependiendo del
carácter indicado en su sintaxis:
open("fichero.txt", "r/w/a/+")
Los siguientes datos se almacenaron en un archivo de texto externo, ver figura 45, en
formato CSV que corresponde a los coeficientes de momentos para el diseño de losas
45
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
perimetralmente apoya- das para el caso monolítco, como lo indican las normas técnicas
complementarias para el diseño de
46
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
elementos de concreto reforzado (NTC-2017); el nombre del archivo es CoefMom.txt.
Se diseñó un programa que controla, mediante la instrucción with, la lectura read() del
archivo de texto CoefMom.txt asignado a un alias como f, y las operaciones necesarias para la
conversión de datos textuales a valores, definido en un procedimiento llamado archivo(), como se
observa en la figura 46.
47
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
A continuación, ver figuras 47 a y b, se muestra un programa para calcular la estimación
puntual georeferenciada a partir de observaciones históricas existentes de una variable de estudio
utilizando el método IDW (Inverse Distance Weight). En este programa se usa un archivo de texto
(DatosSueloTeh.txt) para almacenar las coordenadas X, Y, Z y las variables de estudio, Q y W, para
leer e ir añadiendo datos conforme se van generando nuevas observaciones georeferenciadas. La es-
timación se hace conociendo las coordenadas de un punto para las variables de referencia Q y W.
48
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
49
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
La corrida del programa presenta inicialmente un menú: 0. Ejecutar IDW, 1. Añadir datos, 2. Salir.
La opción 0 ejecuta el método IDW con los datos almacenados en el archivo de texto, mismos que
son leídos con read(); la opción 1 graba nuevos datos en el archivo de texto usando write() hacia un
archivo abierto con la opción append (a). La opción 2 finaliza el programa, incluso saliendo del in-
térprete mediante la instrucción quit(). La figura 48 muestra la ejecución del programa IDW.
50
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
7. INTERFASES GRAFICAS DE USUARIO (GUI) CON EASYGUI
Una interfase gráfica de usuario (GUI) es un ambiente visual que permite la interacción con
el programa mediante objetos o elementos clásicos del ambiente Windows como cajas de texto,
boto- nes, casillas de verificación, barras de desplazamiento, etc.
Para instalar EASYGUI se recurre a pip de la siguiente forma desde la barra de comandos:
EasyGUI permite utilizar fácilmente elementos de interfase gráfica para interactuar con el usuario
de un programa, mediante ventanas con objetos pre-establecidos, ya sea para leer datos de las
variables de entrada así como para mostrar resultados de las variables de salida. Esta biblioteca
externa debe ser instalada previamente en Python, usando pip, de forma que el comando escrito
desde el símbolo del sistema realice la instalación de EasyGUI en la carpeta correspondiente de
bibliotecas (lib). El comando es: pip install easygui.
Una vez instalada, se invoca desde un programa mediante la instrucción import de la siguiente
forma:
import easygui as eg
recomendando asignar un alias (eg) para usarlo como método de llamado de las ventanas. Es
impor- tante señalar que los elementos a mostrar en una ventana de EasyGUI a través de variables,
deberán ser de tipo cadena (texto o string), por lo que todo número que se desee mostrar como
resultado deberá ser convertido mediante str() a cadena; así mismo, la lectura de variables que
involucren datos numéricos, deberán ser convertidos a éstos mediante eval(), pues las variables sólo
reconocen valores de cadena. Veamos ejemplos para el uso de los diferentes elementos de salida de
EasyGUI.
a) msgbox(). Se usa para mostrar los resultados de un proceso mediante una(s) variable(s) de salida
convertidas a texto. Ver figura 50.
Su sintaxis es: eg.msgbox(msg="Texto",title="Titulo",ok_button="OK",image=archivo.gif); el ar-
chivo de imagen .gif o .png deberá estar guardado en la misma carpeta del archivo.py
correspondiente al programa y es opcional.
51
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Un ejemplo para mostrar el radio y área de un círculo de 30 u con una imagen .gif se observa en la
52
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
figura 51.
E:\Desktop\pres\gift1.gif
b) boolbox() / ynbox() / ccbox(): Se usan para mostrar un texto de resultado (ver figura 52) con la
opción de dos botones: Si (1) y No (0) equivalentes a True y False, respectivamente; su sintaxis es
parecida entre ambas:
variable=eg.boolbox(msg="Texto",title="Titulo",choices=("Si","No"),imagen=archivo.gif)
variable=eg.ynbox(msg="Texto",title="Titulo",choices=("Si","No"),imagen=archivo.gif)
variable=eg.ccbox(msg="Texto",title="Titulo",choices=("Si","No"),imagen=archivo.gif)
53
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
escoja, como se muestra en la figura 53. Su sintaxis es: eg.buttonbox(msg="Texto",title="Ti-
tulo",choices=("Opcion1","Opcion2",...,"OpcionN",image=archivo.gif)
La variable opción tomará el valor textual del botón oprimido, como se ve en la figura 54.
d) indexbox(): Similar a buttonbox() pero regresa el valor del índice, según el botón oprimido,
empe- zando de cero (0), de acuerdo a la posición de choices=() como se observa en la figura 55.
54
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Las ventanas de EasyGUI que se usan para introducir datos son las siguientes:
a) enterbox(): Se usa para referenciar una cadena de texto a una variable; si se introduce un número
en la caja de texto, deberá convertirse en número con eval() para poderse operar matemáticamente.
Ver figura 57. Su sintaxis es:
variable=eg.enterbox(msg="Texto",title="Titulo",default="Valor",strip=True/False,image=ar-
chivo.gif)
b) integerbox(): Se usa para ingresar un número entero a través de una caja de texto; pueden
definirse los valores máximo y mínimo. Ver figura 58. Su sintaxis es:
var=eg.integerbox(msg="Texto",title="Titulo",default=valor,lowerbound=min,upper-
bound=max,image=archivo.gif)
55
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
c) multenterbox(): Se usa para ingresar varios datos a través de múltiples cajas de texto que están
relacionadas a una lista de textos, como se ve en la figura 58. Su sintaxis es:
variables=eg.multenterbox(msg="Texto",title="Titulo",fields=lista,values=valores)
variables es una lista que contiene los valores definidos en values o que se ingresen en las cajas de
texto.
56
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
d) codebox() y textbox(): Se usan para ingresar texto en varias líneas, a manera de editor de texto.
Son prácticas para mostrar el texto que se almacena en un archivo externo de texto (.txt), como se
observa en la figura 60.
57
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
7.3 Aplicación con GUI
El siguiente segmento de programa (figura 61) utiliza EASYGUI para capturar los datos de
los retenidos de un suelo para el cálculo de la tabla y curva granulométrica. Para generar la ventana
de captura de los datos se utiliza multenterbox(), como se muestra a continuación:
58
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Para generar la ventana de salida de los resultados se utiliza msgbox(), como se observa en la figura
63.
59
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
La curva granulométrica se realiza usando la biblioteca matplotlib y se presenta su código y
su resultado en la figura 64.
60
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
8. APLICACIONES EN INGENIERÍA CIVIL
Suponga que se quiere derribar un avión mediante un proyectil dirigido justamente en el instante en
el que está inclinado, en relación a nuestra posición, como se indica en la figura 65.
Para derribarlo, es preciso conocer la altura h del avión, su velocidad va y el ángulo a. El ángulo de
tiro está dado por la expresión:
en donde vm es la velocidad del proyectil. Como la función arco coseno no existe cuando el cociente
es mayor que 1, esto significará que el objetivo es demasiado rápido para alcanzarlo. Más
aún, lo alcanzaremos solo si disparamos en el intervalo angular entre 20° y 70°. El instante de inter-
cepción está dado por:
20 4 35
00 0 00
°
18 4 20
00 5 00
°
62
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
63
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
y<3
x+y>1
y<2x+1
y>x2
Escriba un programa que pueda leer las coordenadas de un punto y decidir si está dentro del área sombreada.
La respuesta de la computadora deberá ser, simplemente SI o NO. El programa se muestra en la figura 68
para la versión con más código y en la figura 69 con menos código al usar operadores lógicos.
Primera versión:
64
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Segunda versión:
Suponga conocidos los valores de un ángulo y dos lados de un triángulo. Concretamente suponga conocidos
los valores a, b y ϴ de la figura 70, y como incógnita el valor de c. Hay varias alternativas para resolver este
problema: puede no tener solución, tener solución única o bien, tener dos soluciones.
1. Con el ángulo ϴ y el lado a podemos formar un triángulo rectángulo. Los lados h e y pueden calcularse
mediante las relaciones:
Escriba un programa que calcule el tercer lado para los siguientes casos mostrados en la tabla 4. El programa
65
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
se muestra en la figura 71 y su corrida en la figura 72.
66
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Supongamos que se tiene una serie de N observaciones experimentales, que representan las cantidades de
fertilizante utilizado por hectárea, y los rendimientos respectivos en términos de kilos de algodón. Para ejem-
plificar considérese la tabla 5.
Tabla 5. Datos para el problema de mínimos cuadrados
Observaci Fertilizant Rendimient
ones e (kg/Ha) os de algodón
(kg/Ha)
1 1 0.60
0
0
2 2 0.95
0
0
3 3 1.42
0
0
4 1 0.87
7
5
67
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
5 2 1.20
5
0
6 1 0.75
5
0
Simbolicemos con la variable independiente X al monto de fertilizantes empleados por hectárea, y con la va-
riable dependiente Y al rendimiento de algodón por hectárea. Queremos ajustar esas observaciones a un
modelo
68
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
lineal del tipo:
Para llevar a cabo este procedimiento es necesario calcular los elementos siguientes:
69
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
6. La estimación de a:
Para la tabla mostrada, los resultados deben ser a=0.01814 y b=0.00485. El programa y su corrida se
muestran en la figura 73.
En este ejercicio se utilizaron dos listas, Fert y Rend para almacenar los datos en arreglos.
70
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Aplicación 5. Raíz cuadrada por el método iterativo
en la que Si es la estimación de X en la i-ésima iteración. Una alternativa para cerciorarse si hay o no un cam-
bio en la cuarta cifra decimal es escribir la ecuación en la forma:
Cuando
Figura 74. Programa y corrida para la raíz cuadrada por el método iterativo
71
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Aplicación 6. Solución de un sistema de ecuaciones lineales por eliminación gaussiana
72
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
El programa para resolver el problema anterior se muestra en la figura 75.
Figura 75. Programa para solucionar un sistema de ecuaciones lineales con eliminación gaussiana
Al ejecutar este programa, se resuelve el sistema mostrado en la matriz aumentada A, cuya corrida es
mostrada en la figura 76.
Para correr para cualquier sistema de ecuaciones, deberán convertirse las líneas de N y A en comentarios (#)
y desactivar las comillas triples desde A=[] hasta A.append(fila).
Para una sección plana cerrada S definida por coordenadas (X, Y), sus propiedades geométricas pueden ser
encontradas con las siguientes expresiones matemáticas:
a) Perímetro:
c) Área:
d) Momentos de área:
f) Momentos de inercia:
g) Radios de giro:
74
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Una sección W tiene las coordenadas y perfil de la figura 77.
75
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Las propiedades geométricas calculadas con Mathcad se muestran en la figura 78.
Elaborar un programa en Python que determine las propiedades geométricas de una sección plana cerrada
mediante la lectura de las coordenadas de los puntos. El programa se muestra en la figura 79. En la figura 80
se muestran los datos de las coordenadas solicitadas al correr el programa y en la figura 81 se observan las
propiedades geométricas calculadas y el perfil W graficado con matplotlib.
76
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Figura 79. Programa para el cálculo de la propiedades geométricas de una sección plana
77
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
78
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
79
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Aplicación 8. Menú de opciones para una aplicación
Cuando se requiere crear una sencilla aplicación que resuelva varios problemas relacionados a un tema, es
recomendable colocar un menú de opciones para que el flujo del programa se lleve de acuerdo a la opción
seleccionada. El siguiente programa muestra las opciones para resolver algunos problemas relacionados con
Mecánica de Suelos y los datos obtenidos en los ensayes del laboratorio, por ejemplo, los datos del muestreo,
la humedad natural del suelo, la densidad de sólidos, los parámetros de las volumetrías y gravimetrías de una
muestra inalterada, los límites de consistencia o de Atterberg, la granulometría del suelo, la permeabilidad, la
resistencia al esfuerzo cortante a partir del ensaye de compresión simple inconfinada, ensaye triaxial, la con-
solidación unidimensional de los suelos y un conversor de unidades Latitud-Longitud a UTM.
En este programa se presentan dos maneras de llamar a los programas: mediante procedimientos y funciones
declarados dentro del programa principal y mediante importación (import) de aplicaciones ya existentes
alma- cenadas en archivos de programa con la extensión .py.
Algunas opciones no ejecutan ningún programa, solo muestran un mensaje relacionado a la opción. El pro-
grama se observa en la figura 82.
80
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Cuando se ejecuta el programa, se muestra el menú de opciones para seleccionar la opción que se desee pro-
cesar. Por ejemplo, la primera opción para introducir los datos del sitio de la obra. Una vez capturados los
datos, se regresa al menú de opciones. La ejecución del programa se observa en la figura 83.
81
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Para obtener la humedad del suelo, se selecciona la opción 2 para ejecutar un procedimiento que solicita los
datos del ensaye en el laboratorio para obtener la cantidad de agua del suelo, como se ve en la figura 84.
En la opción 11 se ejecuta un programa para realizar las conversiones de coordenadas geográficas expresadas
en Latitud y Longitud con ángulos sexagesimales a coordenadas UTM (X, Y, Z), utilizando el elipsoide
WSG84.
El programa y su corrida se muestran en las figuras 85y 86, respectivamente, con interfase gráfica creada
82
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
con
EasyGUI.
83
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
84
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
85
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Aplicación 9. Ensaye AASHTO
Se llama compactación al proceso de densificar el suelo mediante la reducción de vacíos de aire mediante la
incorporación de una cantidad óptima de agua.
Proctor comprobó que la incorporación gradual de agua al suelo mejoraba el proceso de compactación al ob-
tener pesos volumétricos húmedos crecientes hasta llegar un punto donde no se lograba el incremento,
debido a la saturación del suelo. Proctor observó que el agua tenía la función de lubricar las partículas para
lograr un mejor acomodo de las mismas y, al mismo tiempo, influir en la reducción de sus vacíos, hasta
llegar a un punto donde se lograba la saturación del suelo, es decir, el llenado de agua en todos los vacíos, lo
que impedía la compresibilidad del material. Al graficar los pesos volumétricos secos contra la humedad,
observó un gráfico casi parabólico en donde su máximo representaba el peso volumétrico seco máximo
(PVSM) en el eje de las ordenadas y la humedad óptima (Wo) en el eje de las abscisas.
Existen dos formas de lograr la compactación de los suelos: a) el modelo dinámico, en el cual la
compactación se logra mediante el desplazamiento de un pisón de masa constante y distancia de
desplazamiento aplicado a un suelo colocado en un molde estándar para aplicar determinado número de
golpes del pisón en un número establecido de capas, y b) el modelo estático, en donde la compactación se
logra mediante la aplicación de una carga estándar de forma muy lenta a un suelo colocado dentro de un
molde estandarizado. En ambos modelos se determinan el PVSM y Wo. Al primer modelo se le conoce como
«compactación Proctor» y al segundo como «compactación Porter». En el primer modelo aparece otro
concepto importante conocido como Energía de Compactación y que se expresa como:
Ec = Ng*Nc*Wp*Hc/Vm
donde Ng es el número de golpes, Nc el número de capas, Wp el peso del pisón, Hc la altura de caídad y Vm el
volumen del molde; las unidades asociadas son kgf-cm/cm3.
En las normas SCT se tienen los ensayes AASHTO T99 y AASHTO T180 para obtener el PVSM y la Wo, en
donde se manejan dos tipos: el estándar (T99) y el modificado (T180); para el primer caso se usa un molde de
10.16 cm de diámetro y 11.64 cm de altura, pisón de 2.49 kg f y desplazamiento de 30.5 cm, 25 golpes en 3
capas. Para el segundo caso se usa un molde de 15.24 cm de diámetro y 11.64 cm de altura, pisón de 4.54 kgf
y desplazamiento de 45.72 cm, 56 golpes y 5 capas. Algunas energías de compactación calculadas para dife-
rentes modalidades de ensayes se muestran en la tabla 6.
Los ensayos AASHTO aplicados para el diseño de pavimentos permiten obtener el valor de soporte
California (CBR).
En el caso del ensaye Porter, también se presentan dos casos: a) el estándar, aplicado a materiales para
control de calidad, y b) el modificado, aplicado a materiales de terracerías para el diseño de pavimentos y
obtención del valor relativo de soporte (VRS) y la expansión (Exp) del material. La aplicación de la carga se
realiza a una velocidad lenta de tal forma que se aplique una carga máxima de 27 Ton durante un tiempo de 5
seg mediante una prensa hidráulica de 30 Ton; se mantiene la carga durante un minuto y se descarga en el
86
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
siguiente minuto. La presión aplicada corresponde a 140.6 kg/cm2.
87
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Para el caso dinámico, se requiere obtener una curva de compactación similar a la de la gráfica de la figura
87.
Se recomienda ejecutar el ensaye AASHTO para obtener por lo menos cuatro (4) puntos con sus respectivas
humedades para obtener el peso volumétrico húmedo (PVH) y deducir el peso volumétrico seco (PVS) a
partir de la expresión:
PVSi = PVHi / (1+wi)
Se muestran en la figura 88 los resultados de un ensaye AASHTO T99 para obtener la curva de compactación,
y la deducción del PVSM y Wo generados con Mathcad.
88
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
89
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
90
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
En la gráfica de la figura 90, se requiere realizar el ajuste de los puntos a una función parábolica que permita
mostrar su punto máximo, cuyas coordenadas definen al PVSM y a la Wo ajustados. Así mismo, se requieren
trazar las rectas sugeridas por la normativa SCT para ubicar la ordenada máxima y la abscisa de dicho
máximo.
Dicho ajuste puede realizarse con el método de mínimos cuadrados para una función cuadrática que
establece lo mostrado en la figura 91.
91
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Figura 91. Ecuaciones para ajustar a una parábola de mínimos cuadrados
92
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Para los datos de la corrida del programa, el ajuste, modelado en Mathcad, sería de la forma mostrada en la
figura 92.
93
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
94
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
95
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
96
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Aplicación 10. Ensaye de penetración estándar SPT
La prueba de penetración estándar (SPT) podemos resumirla en lo siguiente: “consiste en hincar el penetró-
metro 45 cm con la masa de 64 kg, dejada caer desde 75 cm de altura; durante el hincado se cuenta el
número de golpes que corresponden a cada uno de los tres avances de 15 cm. La resistencia a la penetración
estándar se define como el número de golpes, N , para penetrar los últimos 20 cm (de 15 cm a 45 cm). En la
operación del martinete debe vigilarse que su altura de caída sea constante y que el cable de manila tenga un
máximo de dos vueltas en la cabeza de gato. Una vez terminada una prueba se procede a perforar el tramo
muestreado, hasta alcanzar la profundidad a la que se realizará la siguiente prueba; el diámetro de
perforación más reco- mendable es de 10 cm. Las muestras deben conservarse en frascos o en bolsas
herméticas que mantengan constante el contenido de agua. La información de campo debe recopilarse en un
registro”. El programa se muestra en la figura 94, su corrida en la figura 95 y su gráfico en la figura 96.
97
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
98
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
99
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
10
0
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Figura 96. Gráfico del esfuerzo cortante no drenado generado con matplotlib
10
1
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Aplicación 11. Granulometría de los suelos
La granulometría de un suelo puede resumirse de la siguiente forma: “El ensaye granulométrico de un suelo
permite determinar estadísticamente los tamaños de partículas que se presentan en el mismo mediante el
tami- zado o cribado por una sucesión de mallas estandarizadas ASTM; se obtienen la tabla y la curva
granulométrica; la primera presenta los resultados de la granulometría gruesa ensayada en seco en el
laboratorio, así como los resultados de la granulometría fina realizada en vía húmeda para lavar los finos
(partículas menores a 0.075 mm), secar el material retenido y efectuar el tamizado en seco. La granulometría
gruesa se realiza cribando el suelo por las mallas 3 in (75 mm), 2 in (50 mm), 1 1/2 in (37.5 mm), 1 in (25
mm), 3/4 in (19 mm), 3/8 in (9.5 mm) y No. 4 (4.75 mm); la granulometría fina se efectúa tamizando una
fracción del material que pasa la malla no. 4 en las mallas No. 10 (2.00 mm), No. 20 (0.85 mm), No. 40
(0.425 mm), No. 60 (0.20 mm), No. 100 (0.15 mm) y No. 200 (0.075 mm). La curva granulométrica se
realiza graficando el porcentaje que pasa (PQP -%-) en escala aritmética en el eje de las ordenadas contra el
tamaño de la malla (en mm) en escala logarítmica en el eje de las abscisas”. El programa se muestra en la
figura 97, la ventana GUI de captura de datos en la figura 98, los resultados de la tabla granulométrica en una
ventana GUI se observan en la figura 99 y la curva granu- lométrica en la figura 100.
10
2
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
10
3
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
10
4
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Estos parámetros, que representan la resistencia al esfuerzo cortante confinado del suelo, se obtienen
mediante dos ensayos de compactación estandarizados y se utilizan para verificar la resistencia del material
de las capas del pavimento como control de calidad y para diseñar los espesores de un pavimento a partir de
la resistencia del terreno natural (terracerías).
El primero, VRS o valor relativo de soporte, se obtiene mediante el ensaye estático Porter al compactar a una
muestra de suelo que pase completamente la malla de 25 mm (1 in) mediante presión estática de 127 kg/cm 2
durante 5 minutos y una descarga al siguiente minuto; previamente se propuso una humedad cercana a la
óptima y se acomodó la muestra de suelo en el molde Porter con veinticinco varillazos con la varilla punta
de bala de 5/8 in; lograda la presión de compactación, se lleva el molde a la prensa de 5 Ton para aplicarle
carga a una velocidad de 1.27 mm/min, registrar los tiempos (0, 0.5, 1, 2, 3, 4, 6, 8, 10 min) y sus respectivas
pene-
traciones (0, 0.61, 1.27, 2.54, 3.82, 5.08, 7.62, 10.16, 12.54 mm) para obtener el VRS igual a la carga de
pene- tración de 2.54 mm entre la carga estándar de 1360 kgf.
El segundo, CBR o relación de soporte California, se obtiene mediante el ensaye dinámico AASHTO T180 al
compactar con un pisón de 4.50 kgf, caída de 30.5 cm con 56 golpes repartidos en 5 capas dentro de molde
modificado AASHTO; al variar la humedad y obtener el peso volumétrico seco máximo (PVSM) con su res-
pectiva humedad óptima, se lleva a la prensa hidráulica de 5 Ton y se somete a los tiempos y deformaciones
indicados en la prueba Porter. El CBR se obtiene al tomar el mínimo de las cargas a las penetraciones de
2.54 mm y 5.08 mm, respectivamente, divididas entre las cargas estándar 1360 kgf y 2054 kgf.
En ambos casos, si la curva carga-penetración presentara una doble curvatura, deberá realizarse un ajuste al
tomar la recta que pase por el punto de inflexión y prolongándola al eje X para tomar un nuevo origen y
calcular las respectivas cargas de penetración comentadas en los párrafos anteriores.
El programa Python que permite calcular ambos parámetros se muestra en la figura 102 y la corrida del pro-
grama en la figura 103.
10
6
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
10
7
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
10
8
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
En el programa se utilizaron subprogramas creado con def y las bibliotecas sys, math y matplotlib. Esta última
es externa y debe existir en las carpetas de Python para poder invocarse.
10
9
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
9. PROBLEMAS PROPUESTOS
Este procedimiento puede iniciarse dando a Si el valor 1. Escriba un programa de computadora para obtener
raíces cúbicas de esta manera. Para propósitos informativos, imprímase el valor de S en cada iteración.
Termine el proceso una vez que la diferencia entre dos iteraciones sucesivas sea menor de 0.01%. La fórmula
es cierta tanto para valores positivos como negativos de X. Su programa debe incluir ambas posibilidades.
Utilícelo para X=235 y X=-91.6
Otra manera de formular el método para resolver la raíz cuadrada de un número es el siguiente. Para calcular
la raíz cuadrada de un número B selecciónese cualquier número r1 y con ellos calcúlese h1 tal que
El siguiente h2 es igual a:
Ambas sucesiones se aproximan a la raíz cuadrada de B. Para detener el proceso, utilizamos el criterio |ri-hi|
<e para un e predeterminado. Utilice el programa para calcular las raíces cuadradas de 4590 y 32323, para
un valor inicial r1=1 y e=0.000001.
110
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
3. Sucesiones
Las sucesiones
convergen al mismo límite llamado «media geométrica-aritmética». Escriba un programa para leer a y b, ve-
rifique si a≤b (de lo contrario, intercambie sus valores), y calcule la secuencia hasta que:
4. Logaritmo de X
La función log10(X) puede representarse, para valores de X en el intervalo 0<X≤2, mediante la siguiente serie
infinita:
Prepare un programa que lea el valor de X, calcule la serie, e imprima el resultado después de 3, 5, 10, 50,
100 y 1000 términos. Además, utilice la función math.log10(X) y compárela con el resultado de la serie.
Corra el programa para el valor X=1.8. Al programar, tome en cuenta que X deberá estar, siempre, dentro del
intervalo mencionado.
5. Interpolación de Lagrange
Se utiliza está técnica para encontrar un valor dentro de un conjunto de datos agrupados en dos listas X e Y
para estimar un valor 𝑌𝑖𝑛𝑡 para un valor dado de 𝑋𝑖𝑛𝑡. La expresión que calcula a 𝑌𝑖𝑛𝑡 es:
𝑛 𝑛 𝑋 −𝑋
𝑖 𝑖𝑛𝑡
𝑌𝑖𝑛𝑡 = ∑ 𝑌𝑖 𝖦 𝑋 − 𝑋
𝑖 𝑗
𝑖=1 𝑗=1
con 𝑖 ≠ 𝑗 para 𝑖, 𝑗 = 1,2, … ,
𝑛
111
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
class App(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.pack()
# create the application
root = Tk()
sum1=float(0)
sum2=float(0)
sum3=float(0)
sum4=float(0)
print("Va a realizar un calculo de cg e Inercia de una figura compuesta")
sumando =[]
counter=0
limite= int(input("Ingrese el numero de figuras de la seccion compuesta:="))
while counter < limite:
print("""Indique la forma de la figura en estudio
1. cuadrada/rect
2. triangular
3. Area circular
4. Area parabolica
=""")
forma=int(input("Indique la forma de la figura en estudio="))
if forma == 1 :
geometria = rectcua(forma)
sumando.append(geometria)
counter+=1
elif forma == 2 :
geometria = triang(forma)
sumando.append(geometria)
counter+=1
elif forma == 3 :
geometria = areacircular(forma)
sumando.append(geometria)
counter+=1
elif forma == 4 :
geometria = parabolico(forma)
sumando.append(geometria)
counter+=1
else:
print("No se ingreso ninguna opcion valida")
112
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
ojeda=geometria
print("valores de la lista de datos0",ojeda)
contador = 0
n=limite
while contador < limite:
sum1=sum1+sumando[contador][0]
print("valores de las Areas",sum1)
sum0=sumando[contador][1]
print("valores de las Y",sum0)
sum2=sum2+sumando[contador][2]
sum3=sum3+sumando[contador][3]
sum4=sum4+sumando[contador][4]
contador += 1
print("total A=",sum1)
print("Ultimo valor de Y=",sum0)
print("total Ax=",sum2)
print("total Ay=",sum3)
print("total Io=",sum4)
Xcg=float(sum2/sum1)
Ycg=float(sum3/sum1)
s=0
counter = 0
limite=n
while contador < limite:
sum1=sum1+sumando[contador][0]
sum0=sumando[contador][1]
sum2=sum2+sumando[contador][2]
sum3=sum3+sumando[contador][3]
sum4=sum4+sumando[contador][4]
d = abs(Ycg-sum0)
print("valor de d",d)
d2=d**2
z=sum1*d2
s= s + sum4 + z
counter = counter+1
print("Area",sum1)
print("Xcg",Xcg)
print("Ycg",Ycg)
print("Inercia",s)
listx=[]
listy=[]
print(""" Grafiquemos Xcg y Ycc, para tal fin, se solicitara las coordenadas de los puntos de la
figura
segun el sistema de referencia que ud coloco""")
npc=int(input(" Numero de puntos de la figura compuesta"))
for i in range(npc):
cx=float(input(" coordenada x de la figura compuesta"))
listx.append(cx)
print("x vale", cx)
cy=float(input(" coordenada y de la figura compuesta"))
listy.append(cy)
113
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
print("y vale", cy)
x=listx
aa=max(x)
print("valor max",aa)
y=listy
bb=max(y)
print("valor max",bb)
for i in range(len(x)):
for j in range(len(y)):
plt.plot(x, y, color='red')
plt.xlim(0, aa)
plt.ylim(0, bb)
plt.show()
root.mainloop()
import tkinter as tk
def accion2():
texto.configure(text='Has elegido la opción 2 del menú principal')
def acciona():
texto.configure(text='Has elegido la opción a del submenú')
def accionb():
texto.configure(text='Has elegido la opción b del submenú')
# creamos un submenú
submenu = tk.Menu(menu, tearoff=False)
submenu.add_command(label='Opción A', command=acciona)
submenu.add_command(label='Opción B', command=accionb)
# añadimos una etiqueta para ver el efecto de los botones del menú
texto = tk.Label(ventana, text='¡Hola, desde Código Pitón!')
texto.place(x=200, y=200)
if __name__ == '__main__':
ventana.mainloop() # ejecutamos la ventana principal
class VentanaEjemplo:
def __init__(self, master):
self.master = master
master.title("Una simple interfaz gráfica")
self.etiqueta = Label(master, text="Esta es la primera ventana!")
self.etiqueta.pack()
self.botonSaludo = Button(master, text="Saludar", command=self.saludar)
self.botonSaludo.pack()
self.botonCerrar = Button(master, text="Cerrar", command=master.quit)
self.botonCerrar.pack()
def saludar(self):
print("¡Hey!")
root = Tk()
miVentana = VentanaEjemplo(root)
root.mainloop()
https://www.youtube.com/watch?v=StaRKgsxsac
115
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
PROCESO DE LA COMUNICACION
ELEMENTOS CONCEPTOS BARRERAS AXIOMAS COMPONENTES
persona que codifica el Digital: existe el emisor
EMISOR mensaje y envía la
emisor no
claridad para enviar el mensaje
tiene la interacción
en la comunicación es Analógico: existe el emisor
información emisor no podrá simétrica
confirmar si el receptor alcanzo con el la naturaleza
mensaje pretendido , por ejemplo la de una relación depende de
barrera del idioma la puntuación de las
secuencias entre los
comunicantes
La persona a quien se dirige Se presentan dificultades en el Digital: existe el receptor
RECEPTOR la información, decodifica el receptor para decodificar y entender el
la interacción
en la comunicación es Analógico: existe el emisor
mensaje y retroalimenta al mensaje, por ejemplo, ideas y simétrica o complementaria
emisor, quien se convierte experiencias previas, valores la naturaleza
en receptor y así personales, falta de atención, atención de una relación depende de
sucesivamente selectiva, cansancio, etc. la puntuación de las
secuencias de
comunicación entre los
comunicantes
Es la información que envía No existen barreras comunicativas No es posible no comunicar, Digital: mensaje claro
MENSAJE o emite el emisor, es el no existe la no conducta Analógico: mensaje no muy
producto físico real de la claro.
codificación Contextual el mensaje digital
y analógico debe entenderse
tomando en cuenta el contexto
Es el medio que se utiliza Transmisión del mensaje: existen La comunicación puede ser Componente digital: está
CANAL para transmitir la problemas en la transmisión del digital o analógica constituido por aquellos
información; verbal, menaje relacionado con la claridad del elementos que tienen un
auditiva, etc. mismo significado claro, para ser
descifrado
Componente analógico%
formado por aquellos
elemento que nos transmiten
Una información indescifrable
Es el proceso permanente de Se presenta dificultades en la Toda comunicación Permite al emisor determinar
RETROALIMENTACION intercambio de la retroalimentación por falta de claridad transmite un contenido y si el receptor ha recibido o no
comunicación entre emisor en la emisión, recepción o en la misma define una relación entre las el mensaje y si esta ha
y receptor transmisión del mensaje personas producido en el receptor la
respuesta pretendida
116
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Tenga en cuenta que no necesita tener TeX instalado, ya que Matplotlib incluye su propio analizador
de expresiones TeX, motor de diseño y fuentes. El motor de diseño es una adaptación bastante directa
de los algoritmos de diseño en TeX de Donald Knuth, por lo que la calidad es bastante buena
(Matplotlib también ofrece una usetex opción para aquellos que desean llamar a TeX para generar su
texto; consulte Representación de texto con LaTeX ). .
Cualquier elemento de texto puede utilizar texto matemático. Debe utilizar cadenas sin formato (antes
de las comillas con un 'r') y rodear el texto matemático con signos de dólar ($), como en TeX. El
texto normal y el texto matemático se pueden intercalar dentro de la misma cadena. Mathtext puede
usar DejaVu Sans (predeterminado), DejaVu Serif, las fuentes Computer Modern (de (La)TeX),
fuentes STIX (que están diseñadas para combinarse bien con Times) o una fuente Unicode que usted
proporcione. La fuente mathtext se puede seleccionar mediante rcParams["mathtext.fontset"]
(predeterminado:) 'dejavusans'(consulte Personalización de Matplotlib con hojas de estilo y
rcParams ) .
# plain text
plt.title('alpha > beta')
produce "alfa > beta".
# math text
plt.title(r'$\alpha > \beta$')
produce " ".
Nota
Mathtext debe colocarse entre un par de signos de dólar ($). Para facilitar la visualización de valores
monetarios, por ejemplo, "$100,00", si hay un solo signo de dólar en toda la cadena, se mostrará
palabra por palabra como un signo de dólar. Este es un pequeño cambio con respecto al TeX normal,
donde el signo de dólar en texto no matemático tendría que tener un carácter de escape (" $ ").
Nota
Si bien la sintaxis dentro del par de signos de dólar ($) pretende ser similar a TeX, el texto exterior
no. En particular, personajes como:
# $ % & ~ _ ^ \ { } \( \) \[ \]
tienen un significado especial fuera del modo matemático en TeX. Por lo tanto, estos caracteres se
comportarán de manera diferente dependiendo de rcParams["text.usetex"]
(predeterminado False:). Consulte el tutorial de usetex para obtener más información.
Subíndices y superíndices
Para crear subíndices y superíndices, utilice los símbolos '_'y '^':
117
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
r'$\alpha_i > \beta_i$'
��>��
Para mostrar correctamente los subíndices o superíndices de varias letras, debe colocarlos entre
llaves {...}:
r'$\sum_{i=0}^\infty x_i$'
∑�=0∞��
Fracciones, binomios y números apilados
Se pueden crear fracciones, binomios y números apilados con los comandos y , respectivamente \
frac{}{}:\binom{}{}\genfrac{}{}{}{}{}{}
34(34)34
Las fracciones se pueden anidar arbitrariamente:
r'$\frac{5 - \frac{1}{x}}{4}$'
produce
5−1�4
Tenga en cuenta que se debe tener especial cuidado al colocar paréntesis y corchetes alrededor de las
fracciones. Hacer las cosas de la manera obvia produce corchetes que son demasiado pequeños:
r'$(\frac{5 - \frac{1}{x}}{4})$'
(5−1�4)
La solución es anteponer el corchete \lefte \rightinformar al analizador que esos corchetes abarcan
todo el objeto:
r'$\left(\frac{5 - \frac{1}{x}}{4}\right)$'
(5−1�4)
Radicales
Los radicales se pueden producir con el \sqrt[]{}comando. Por ejemplo:
r'$\sqrt{2}$'
2
Cualquier base se puede proporcionar (opcionalmente) entre corchetes. Tenga en cuenta que la base
debe ser una expresión simple y no puede contener comandos de diseño como fracciones o
subíndices/superíndices:
r'$\sqrt[3]{x}$'
�3
Fuentes
La fuente predeterminada es cursiva para los símbolos matemáticos.
Nota
118
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Este valor predeterminado se puede cambiar usando rcParams["mathtext.default"]
(predeterminado 'it':). Esto es útil, por ejemplo, para usar la misma fuente que el texto normal no
matemático, configurándola en regular.
Para cambiar las fuentes, por ejemplo, para escribir "pecado" en una fuente romana, incluya el texto en
un comando de fuente:
Dominio Resultado
\mathrm{Roman}
\mathit{Italic}
\mathtt{Typewriter}
\mathcal{CALLIGRAPHY}
Al utilizar las fuentes STIX , también tienes la opción de:
Dominio Resultado
\mathbb{blackboard}
\mathrm{\mathbb{blackboard}}
\mathfrak{Fraktur}
\mathsf{sansserif}
\mathrm{\mathsf{sansserif}}
También hay cinco "conjuntos de fuentes" globales para elegir, que se seleccionan mediante
el mathtext.fontsetparámetro en matplotlibrc .
119
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
stix: STIX (diseñado para combinar bien con Times)
Fuentes
mathtext también proporciona una forma de utilizar fuentes personalizadas para matemáticas. Este
método es bastante complicado de usar y debe considerarse una función experimental únicamente para
usuarios pacientes. Al configurar rcParams["mathtext.fontset"](predeterminado: 'dejavusans')
en custom, puede configurar los siguientes parámetros, que controlan qué archivo de fuente usar para
un conjunto particular de caracteres matemáticos.
Parámetro Corresponde a
mathtext.it \mathit{}o cursiva predeterminada
mathtext.rm \mathrm{}romano (erguido)
mathtext.tt \mathtt{}Máquina de escribir (monoespacial)
mathtext.bf \mathbf{}negrita cursiva
mathtext.cal \mathcal{}caligráfico
mathtext.sf \mathsf{}sans-serif
Cada parámetro debe configurarse en un descriptor de fuente fontconfig (como se define en el capítulo
de fuentes aún por escribir).
Las fuentes utilizadas deben tener una asignación Unicode para poder encontrar caracteres no latinos,
como el griego. Si desea utilizar un símbolo matemático que no está contenido en sus fuentes
personalizadas, puede establecer rcParams["mathtext.fallback"](predeterminado: 'cm')
en 'cm', 'stix'o 'stixsans' lo que hará que el sistema mathtext use caracteres de una fuente
alternativa siempre que no se pueda encontrar un carácter en particular en la fuente personalizada.
Tenga en cuenta que los glifos matemáticos especificados en Unicode han evolucionado con el tiempo
y es posible que muchas fuentes no tengan glifos en el lugar correcto para el texto matemático.
Acentos
Un comando de acento puede preceder a cualquier símbolo para agregar un acento encima. Para
algunos de ellos existen formas largas y cortas.
Dominio Resultado
\acute ao\'a
\bar a
\breve a
\dot ao\.a
\ddot ao\''a
\dddot a
120
PROGRAMACIÓN PYTHON PARA INGENIEROS
CIVILES ING. EDUARDO LÓPEZ SÁNCHEZ
Dominio Resultado
\ddddot a
\grave ao\`a
\hat ao\^a
\tilde ao\~a
\vec a
\overline{abc}
Además, hay dos acentos especiales que se ajustan automáticamente al ancho de los símbolos
siguientes:
Dominio Resultado
\widehat{xyz}
\widetilde{xyz}
Se debe tener cuidado al poner acentos en las i y j minúsculas. Tenga en cuenta que a continuación \
imathse utiliza para evitar el punto adicional sobre la i:
Griego en minúsculas
r'$\u23ce$'
Ejemplo
A continuación se muestra un ejemplo que ilustra muchas de estas características en contexto.
124