Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Python para
ciencia e ingeniería
HansPetter Halvorsen
https://www.halvorsen.blog
Machine Translated by Google
Prefacio
Python funciona en todas las principales plataformas y sistemas operativos que se utilizan en la
actualidad, como Windows, macOS y Linux.
Python es un lenguaje de programación multipropósito, que se puede usar para simulación, creación
de páginas web, comunicación con sistemas de bases de datos, etc.
Aquí encontrarás multitud de recursos técnicos sobre Tecnología, Programación, Ingeniería del
Software, Automatización y Control, Informática Industrial, etc.
https://www.halvorsen.blog/documents/programming/python/
Estos recursos son un complemento de este libro de texto. Aquí puede descargar el software,
descargar ejemplos de código, etc.
2
Machine Translated by Google
Overleaf es un sistema LATEX basado en la web , lo que significa que puede escribir sus
documentos LATEX en su navegador web, colaborar y compartir documentos con otros.
Libros de Python
Puede encontrar otros libros de texto de Python dentro de diferentes dominios en mi página
web
de Python: https://www.halvorsen.blog/documents/programming/python/
Libros de Python:
• Python para ciencia e ingeniería: este es un libro de texto sobre programación Python
con muchos ejemplos, ejercicios y aplicaciones prácticas dentro de las matemáticas,
simulaciones, etc. El enfoque está en los cálculos numéricos en matemáticas e
ingeniería. Se presenta la teoría necesaria además de muchos ejemplos prácticos.
3
Machine Translated by Google
Programación
La forma en que creamos software hoy en día ha cambiado drásticamente en los últimos 30 años,
desde la infancia de las computadoras personales a principios de los años 80 hasta los poderosos
dispositivos de hoy en día, como teléfonos inteligentes, tabletas y PC.
Internet también ha cambiado la forma en que usamos los dispositivos y el software. Todavía tenemos
aplicaciones de escritorio tradicionales, pero los sitios web, las aplicaciones web y las llamadas
aplicaciones para teléfonos inteligentes, etc. dominan el mercado de software en la actualidad.
Necesitamos encontrar y aprender lenguajes de programación que sean adecuados para la Nueva Era
de la Programación.
Hoy tenemos varios miles de lenguajes de programación diferentes. Supongo que necesitará aprender
más de un lenguaje de programación para sobrevivir en el mercado de software actual.
Ingeniería de software
La ingeniería de software es la disciplina para crear aplicaciones de software. Un enfoque sistemático
para el diseño, desarrollo, prueba y mantenimiento de software.
• Planificación
• Análisis de requerimientos
• Diseño
• Implementación
• Pruebas
• Despliegue y Mantenimiento
4
Machine Translated by Google
Contenido
1 Introducción 1.1 14
La Nueva Era de la Programación . . . . ... . . . . . . . . . . . 14 18
1.2 MATLAB. . . . . . . . . . . . ... . ... . . . . . . . . . . .
2 ¿Qué es Pitón? 20
2.1 Introducción a Python. . . . . . . . . . . . . . . . . . . . . . 20 21
2.1.1 Interpretado vs Compilado. . . . . . . . . . . . . . . . .
2.2 Paquetes de Python. . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2.1 Paquetes de Python para ciencia y cálculos numéricos 23 2.3 Anaconda . .
. . . .. . . . . . . . . . . . . . . . . . . . . . . . . .
23 2.4 Editores de Python
. . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.4.1 Python INACTIVO. . . . . . . . . . . . . . . . . . . . . . . . . 24
2.4.2 Código de Visual Studio. . . . . . . . . . . . . . . . . . . . . . 25
2.4.3 Spyder. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4.4 Visual Studio. . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4.5 PyCharm. . . . . . . . . . . . . . . . . . . . . . . . . . . 25 .
2.4.6 IDE de Wing Python . . . . . . . . . . . . . . . . . . . . . 26 .
2.4.7 Cuaderno Jupyter. . . . . . . . . . . . . . . . . . . . . 26 .
2.5 Recursos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 .
2.6 Instalación de Python. . . . . . . . . . . . . . . . . . . . . . . . . . 26 .
2.6.1 Aplicación Python Windows 10 Store . . . . . . . . . . . . . . 27 .
2.6.2 Instalación de Anaconda. . . . . . . . . . . . . . . . . . . . 27 .
2.6.3 Instalación del código de Visual Studio. . . . . . . . . . . . . . . 27
bajas . . . . . . . . . . . . . . ... . . . . . . . . . . . . 36
6
Machine Translated by Google
II Programación Python 53
7
Machine Translated by Google
11 Depuración en Python 85
14 Anaconda
14.1 Navegador Anaconda . . . . . . . . . . ... . . . . . . . . . . . 91 . 91
15 Pabellón pensado 93
Editores IV de Python 94
16 editores de Python 95
17 araña 97
19 estudio visual
19.1 Introducción a Visual Studio. ... . . . . . . . . . . . . . . . 101 .
19.2 Trabajar con Python en Visual Studio. . . . . . . . . . . . . . . . 101 .
19.2.1 Prepare Visual Studio para la programación con Python. . 101 .
19.2.2 Python interactivo. . . ... . . . . . . . . . . . . . . . 102 .
19.2.3 Nuevo Proyecto Python . . . . . . . . . . . . . . . . . . . . 102 . 103
20 PyCharm 109
8
Machine Translated by Google
27 Interpolación
27.1 Ejercicios. . . . . . . . ... . ... . . . . . . . . . . . . . . . 166 . 169
9
Machine Translated by Google
32 Optimización 205
10
Machine Translated by Google
X Recursos 282
11
Machine Translated by Google
12
Machine Translated by Google
Parte I
Empezar con
Pitón
13
Machine Translated by Google
Capítulo 1
Introducción
Con este libro de texto aprenderás la programación básica de Python. El libro de texto contiene muchos
ejemplos y tareas a su propio ritmo que los usuarios deben realizar y resolver a su propio ritmo.
Internet también ha cambiado la forma en que usamos los dispositivos y el software. Todavía tenemos
aplicaciones de escritorio tradicionales, pero los sitios web, las aplicaciones web y las llamadas
aplicaciones para teléfonos inteligentes, etc. dominan el mercado de software en la actualidad.
Necesitamos encontrar y aprender lenguajes de programación que sean adecuados para la Nueva Era
de la Programación.
Tenemos hoy varios miles de lenguajes de programación diferentes, entonces, ¿por qué deberíamos
aprender Python? Supongo que necesitará aprender más de un lenguaje de programación para
sobrevivir en el mercado de software actual. Python es fácil de aprender, por lo que es un buen punto
de partida para los nuevos programadores.
14
Machine Translated by Google
Python es un lenguaje de programación bastante antiguo (1991) en comparación con muchos otros
lenguajes de programación como C# (2000), Swift (2014), Java (1995), PHP (1995).
Python se ha vuelto cada vez más popular durante los últimos 10 años. Hoy, Python se ha convertido en
uno de los lenguajes de programación más populares.
Hay muchas clasificaciones diferentes con respecto a qué lenguaje de programación es el más popular. En
la mayoría de estos rankings, Python está en el top 10.
De este ranking vemos que Python es el lenguaje de programación más popular en 2018. Ver Figura 1.2
Como vemos en la Figura 1.2 clasifican
los diferentes lenguajes de programación en las siguientes categorías:
• Internet
15
Machine Translated by Google
• Móvil
• Empresa
• Incorporado
De acuerdo con la Figura 1.2, vemos que Python se puede usar para programar aplicaciones
web, aplicaciones empresariales y aplicaciones integradas.
Hasta ahora, Python no se usa o no está optimizado para crear aplicaciones móviles.
Tenemos hoy 2 plataformas móviles principales; Las aplicaciones de iOS se programan
principalmente con el lenguaje de programación Swift, mientras que las aplicaciones de
Android se programan principalmente con Java o Kotlin.
Otra encuesta es la "Encuesta para desarrolladores de desbordamiento de pila 2018" [4]. Consulte la Figura
1.3.
Como podemos ver en [5] y la Figura 1.4, Python se vuelve cada vez más popular año tras
año.
Basado en la Figura 1.4, la fuente [5] intenta predecir el futuro de Python, vea la Figura 1.5.
Resumamos:
• Python es divertido de aprender y usar y también lleva el nombre del grupo de comedia
británico llamado Monty Python.
dieciséis
Machine Translated by Google
• Visual Studio y C
• Programación web, como HTML, CSS, JavaScript y un marco/lenguaje de programación del lado
del servidor como PHP, ASP.NET (C o VB.NET), Django (basado en Python)
17
Machine Translated by Google
• Desarrollo de aplicaciones para las 2 plataformas principales iOS (XCode usando Swift
Lenguaje de programación) y Android (Android Studio usando Java
Lenguaje de programación o lenguaje de programación Kotlin)
1.2 MATLAB
Si está buscando MATLAB, consulte lo siguiente: https://
www.halvorsen.blog/documents/programming/matlab/
18
Machine Translated by Google
19
Machine Translated by Google
Capitulo 2
¿Qué es Python?
Pero esto es solo el núcleo de Python, es decir, el intérprete, un editor muy básico y lo
mínimo necesario para crear programas básicos de Python.
Por lo general, necesitará más funciones para resolver sus tareas. Luego puede instalar y
usar paquetes de Python separados creados por terceros. Estos paquetes deben
descargarse e instalarse por separado (por lo general, se usa algo llamado PIP) o se elige
usar, por ejemplo, un paquete de distribución como Anaconda.
20
Machine Translated by Google
escribe archivos de Python (.py) en un editor de texto y luego coloca esos archivos en el intérprete
de python para que se ejecuten. Dependiendo del editor que esté utilizando, esto se hace
automáticamente o debe hacerlo manualmente.
21
Machine Translated by Google
Con los idiomas interpretados, el código se guarda en el mismo formato que ingresó. Los
programas compilados generalmente se ejecutan más rápido que los interpretados porque los
programas interpretados deben reducirse a instrucciones de máquina en tiempo de ejecución.
Por lo general, es más fácil desarrollar aplicaciones en un entorno interpretado porque no tiene
que volver a compilar su aplicación cada vez que quiera probar una pequeña sección.
Los lenguajes interpretados, por el contrario, deben analizarse, interpretarse y ejecutarse cada
vez que se ejecuta el programa.
Todos los idiomas compilados se traducen ejecutando el código fuente a través de un compilador.
Esto da como resultado un código muy eficiente que se puede ejecutar cualquier número de
veces. Los gastos generales de la traducción se incurren solo una vez, cuando se compila la
fuente; a partir de entonces, solo necesita cargarse y ejecutarse.
Durante el diseño de una aplicación, es posible que deba decidir si usar un lenguaje compilado
o un lenguaje interpretado para el código fuente de la aplicación.
Los lenguajes interpretados, por el contrario, deben analizarse, interpretarse y ejecutarse cada
vez que se ejecuta el programa.
Por lo tanto, un lenguaje interpretado generalmente es más adecuado para realizar cálculos o
simulaciones "ad hoc", mientras que los lenguajes compilados son mejores para aplicaciones
permanentes donde la velocidad está enfocada.
Este enfoque tiene ventajas y desventajas. Una desventaja es que necesita instalar estos
paquetes por separado y luego importar estos módulos en su código.
Este también es un enfoque típico para el software de código abierto, porque todos pueden
crear sus propios paquetes de Python y distribuirlos. De esa manera, también encontrará
paquetes de Python para casi todo, desde Computación científica hasta Desarrollo web.
22
Machine Translated by Google
Estos paquetes deben descargarse e instalarse por separado, o puede optar por utilizar, por
ejemplo, un paquete de distribución como Anaconda, donde normalmente obtiene los
paquetes que necesita para la computación científica. Con Anaconda normalmente obtiene
las mismas características que con MATLAB.
Aquí puede buscar, descargar e instalar cientos de paquetes de Python dentro de diferentes
temas y aplicaciones. También puede crear sus propios paquetes de Python y distribuirlos
aquí.
Algunos paquetes de Python importantes para la ciencia y los cálculos numéricos son:
• SciPy: SciPy es una biblioteca de Python gratuita y de código abierto que se utiliza
para la informática científica y la informática técnica. SciPy contiene módulos para
optimización, álgebra lineal, integración, interpolación, funciones especiales, FFT,
procesamiento de señales e imágenes, solucionadores de ODE y otras tareas
comunes en ciencia e ingeniería. [9]
Estos paquetes deben descargarse e instalarse por separado, o puede optar por utilizar, por
ejemplo, un paquete de distribución como Anaconda, donde normalmente obtiene los
paquetes que necesita para la computación científica. Con Anaconda normalmente obtiene
las mismas características que con MATLAB.
2.3 Anaconda
Anaconda es un paquete de distribución, donde obtiene el compilador de Python, los
paquetes de Python y el editor de Spyder, todo en un solo paquete.
Anaconda incluye Python, Jupyter Notebook y otros paquetes de uso común para la
informática científica y la ciencia de datos.
23
Machine Translated by Google
Ofrecen una versión gratuita (Anaconda Distribution) y una versión paga (Enter prise)
Anaconda está disponible para Windows, macOS y Linux
Web:
https://www.anaconda.com
Wikipedia:
https://en.wikipedia.org/wiki/Anaconda(P ythondistribution)
• Espía
• Estudio visual
• PyCharm
• Cuaderno Jupyter
Estos editores se describen brevemente a continuación y con más detalle más adelante en este libro
de texto.
El editor que debe usar depende de su experiencia, qué tipo de editores de código ha
usado anteriormente, sus habilidades de programación, lo que va a desarrollar en Python,
etc.
Web:
https://www.python.org
24
Machine Translated by Google
Visual Studio Code es un editor de código fuente desarrollado por Microsoft para Windows,
Linux y macOS.
Web:
https://code.visualstudio.com
2.4.3 Espía
Spyder es un entorno de desarrollo integrado (IDE) multiplataforma de código abierto para
la programación científica en el lenguaje Python.
Web:
https://www.spyderide.org
Wikipedia:
https://en.wikipedia.org/wiki/Spyder(software )
Visual Studio (desde 2017), tiene soporte integrado para Python, se llama "Soporte de
Python en Visual Studio".
Web:
https://visualstudio.microsoft.com
Wikipedia:
https://en.wikipedia.org/wiki/MicrosoftVisualStudio
2.4.5 PyCharm
PyCharm es multiplataforma, con versiones de Windows, macOS y Linux. La Community
Edition es de uso gratuito, mientras que la Professional Edition (versión de pago) tiene
algunas características adicionales.
25
Machine Translated by Google
Web:
https://www.jetbrains.com/pycharm/
Python IDE de entornos de desarrollo integrado (IDE) de Wingware se creó específicamente para
el lenguaje de programación Python.
• Wing 101: una versión gratuita muy simplificada, para enseñar a profesionales principiantes
gramáticos
• Wing Personal: versión gratuita que omite algunas funciones, para estudiantes y
aficionados
• Wing Pro: una versión comercial (de pago) con todas las funciones, para profesionales
programadores
Web:
http://jupyter.org
Wikipedia:
https://en.wikipedia.org/wiki/ProjectJupyter
2.5 Recursos
Aquí hay algunos recursos útiles de Python:
26
Machine Translated by Google
https://www.python.org
Aquí puede descargar las funciones básicas de Python en un solo paquete, que incluye el intérprete
del lenguaje de programación Python y un editor de código básico, o un entorno de desarrollo
integrado, llamado IDLE. Ver Figura 2.1
Para una programación de Python más avanzada, normalmente necesita un editor de código mejor
y paquetes adicionales.
Para los ejemplos básicos de Python al principio, el software básico de Python de: https://
Le sugiero que comience con el software básico de Python para aprender los conceptos básicos,
luego puede actualizar a un editor mejor, instalar paquetes adicionales de Python (ya sea
manualmente o instalar Anaconda donde se incluye "todo").
La versión de Microsoft Store de Python 3.7 es un instalador simplificado para ejecutar scripts y
paquetes.
La versión de Microsoft Store de Python 3.7 es muy básica pero es lo suficientemente buena para
ejecutar scripts simples.
Python 3.7 Microsoft Store Edition recibirá todas las actualizaciones automáticamente cuando se
publiquen y no se requiere ninguna acción manual de su parte.
Para instalar la versión de Microsoft Store de Python, simplemente abra Microsoft Store en Windows
10 y busque Python.
código de Spyder y los paquetes de Python (como NumPy, SciPy, mat plotlib, etc.) están incluidos
en la distribución de Anaconda.
27
Machine Translated by Google
28
Machine Translated by Google
Capítulo 3
Otros editores de Python se discutirán con más detalle más adelante. Por ahora, puede usar el
IDE básico de Python (IDLE) o Spyder si ha instalado el paquete de distribución de Anaconda.
29
Machine Translated by Google
El programa python que ha instalado actuará de forma predeterminada como algo llamado
intérprete. Un intérprete toma los comandos de texto y los ejecuta a medida que los
ingresa, muy útil para probar cosas.
Aquí escribe uno y un comando a la vez después del signo ">>>" en Python Shell.
El programa python que ha instalado actuará de forma predeterminada como algo llamado
intérprete. Un intérprete toma los comandos de texto y los ejecuta a medida que los
ingresa, muy útil para probar cosas.
A continuación, vemos cómo podemos ejecutar Python desde la consola, que es parte del sistema operativo.
30
Machine Translated by Google
La Terminal de línea de comando es una herramienta para interactuar con su computadora. Se abrirá
una ventana con un mensaje de línea de comando, algo como esto:
Simplemente escriba python en su consola, presione Entrar y debe ingresar al Intérprete de Python.
El aviso >>> en la última línea indica que ahora se encuentra en una sesión interactiva de interpretación
de Python, también llamada "shell de Python". ¡Esto es diferente del símbolo del sistema de terminal
normal!
1 >>> a = 5 2 >>>
b = 2 3 >>> x = 5
4 >>> y = 3 a +
b 5 >>> y
31
Machine Translated by Google
C: \Usuarios\minombredeusuario>
Simplemente escriba python en el Símbolo del sistema, presione Entrar y debe ingresar al Intérprete
de Python. Consulte la figura 3.3.
'python' no se reconoce como un comando interno o externo, un programa operable o un archivo por
lotes.
Luego, debe agregar Python a su ruta. Consulte las instrucciones a continuación.
¡Nota! Esta también es una opción durante la configuración. Durante la instalación, puede seleccionar
"Agregar Python.exe a la ruta". Esta opción está configurada de forma predeterminada en "Desactivado".
Para obtener esa opción, debe seleccionar "Personalizar", sin usar la instalación "Predeterminada".
En la ventana que aparece, haga clic en Variables de entorno. . . cerca de la parte inferior derecha.
Consulte la Figura 3.4.
32
Machine Translated by Google
En la siguiente ventana, busque y seleccione la variable de usuario denominada Ruta y haga clic en
Editar. . . para cambiar su valor. Consulte la Figura 3.5.
Seleccione "Nuevo" y agregue la ruta donde se encuentra "python.exe". Consulte la Figura 3.6.
Haga clic en Guardar y abra el símbolo del sistema una vez más e ingrese "python" para verificar que
funciona. Consulte la Figura 3.3.
33
Machine Translated by Google
En el modo "Secuencias de comandos", puede escribir un programa de Python con varios comandos
de Python y luego guardarlo como un archivo (.py).
1 letra ( ” ” ) 2Hola
letras
( ”Mundo” ) 3 letras
( ”¿Cómo estás?” )
En la Figura 3.7 vemos cómo se hace esto. Como puede ver, podemos ingresar muchos comandos
de Python que juntos forman un programa de Python o un script de Python.
Desde Python Shell, seleccione Ejecutar → Ejecutar módulo o presione F5 para ejecutar o ejecutar
el script de Python. Consulte la Figura 3.8.
34
Machine Translated by Google
El editor IDLE es muy básico, para tareas más complicadas normalmente puede preferir usar
otro editor como Spyder, Visual Studio Code, etc.
¡Nota! ¡Asegúrese de estar en el símbolo del sistema de su sistema, que tendrá $ o > al final, no
en el modo Python (que tiene >>> en su lugar)!
1 Hola 2
Mundo 3
¿Cómo estás?
35
Machine Translated by Google
1 > cd / 2
> cd Temp 3 >
python h ell owo rl d . py
¡Nota! ¡Asegúrese de estar en el símbolo del sistema de su sistema, que tendrá > al final, no
en el modo Python (que tiene >>> en su lugar)!
1 Hola 2
Mundo 3
¿Cómo estás?
36
Machine Translated by Google
Figura 3.9: Ejecución de secuencias de comandos de Python desde la ventana Consola en macOS
Figura 3.10: Ejecución de secuencias de comandos de Python desde la ventana Consola en macOS
37
Machine Translated by Google
38
Machine Translated by Google
Capítulo 4
4.2 Variables
Las variables se definen con el operador de asignación, “=”. Python se tipifica dinámicamente,
lo que significa que las variables se pueden asignar sin declarar su tipo y que su tipo puede
cambiar. Los valores pueden provenir de constantes, de cálculos que involucren valores de
otras variables o de la salida de una función.
Pitón
39
Machine Translated by Google
Aquí definimos una variable y establecemos el valor igual a 3 y luego imprimimos el resultado
en la pantalla.
Puede escribir un comando por tiempo en IDLE. Si sale de IDLE, las variables y los datos se
perderán. Por lo tanto, si desea escribir un programa un poco más largo, es mejor que use
un editor de texto para preparar la entrada para el intérprete y ejecutarlo con ese archivo
como entrada. Esto se conoce como crear un script.
Los scripts o programas de Python se guardan como un archivo de texto con la extensión .py
5y=a x+b
6
7 imprimir (y)
Como se ve en los ejemplos, puede usar el comando print() para mostrar los valores en la
pantalla.
40
Machine Translated by Google
Una variable puede tener un nombre corto (como x e y) o un nombre más descriptivo (suma, cantidad,
etc.).
No necesita definir las variables antes de usarlas (como debe hacerlo, por ejemplo, C/C++/C).
• Los nombres de las variables distinguen entre mayúsculas y minúsculas, por ejemplo, cantidad, Cantidad y CANTIDAD
son tres variables diferentes.
4.2.1 Números
Hay tres tipos numéricos en Python:
• En t
• flotar
• complejo
41
Machine Translated by Google
Las variables de tipos numéricos se crean cuando les asignas un valor, por lo que en la codificación
normal no necesitas preocuparte.
1 x = 1 # int # float 2 y = 2.
+2j# 83z=3
complejo
Listado 4.5: Tipos numéricos en Python
Esto significa que simplemente asigna valores a una variable sin preocuparse de qué tipo de datos
es.
Si usa el Editor de Spyder, puede ver los tipos de datos que tiene una variable usando el Explorador
de variables (Figura 4.2):
4.2.2 Cadenas
Las cadenas en Python están entre comillas simples o comillas dobles. 'Hola' es lo mismo que 'Hola'.
Las cadenas se pueden enviar a la pantalla usando la función de impresión. Por ejemplo: imprimir(”Hola”).
1 un = ” Hola Mundo ! ”
2
3 imprimir ( un )
4
5 imprimir ( a [ 1 ] )
6 imprimir ( a [ 2 : 5 ] )
7 imprimir ( len ( a ) )
8 imprimir ( a . l ow er ( ) )
42
Machine Translated by Google
9 imprimir ( a . superior
( ) ) 10 imprimir ( a . reemplazar , ”J” ) )
( ”H” 11 imprimir ( a . dividir ( ” ” ) )
Como puede ver en el ejemplo, hay muchas funciones integradas que manipulan cadenas en
Python. El ejemplo muestra solo algunos de ellos.
Las cadenas en Python son matrices de bytes y podemos usar el índice para obtener un carácter
específico dentro de la cadena, como se muestra en el código de ejemplo.
El siguiente ejemplo solicita el nombre del usuario, luego, usando el método input(), el programa
imprime el nombre en la pantalla:
1 letra ( ” ” ) Ingrese su nombre :
2 x = entrada ( )
”
3 letra ( ” Hell o , +x)
Listado 4.8: Entrada de cadena
Python consta de muchas funciones integradas. Algunos ejemplos son la función print(9) que ya
hemos utilizado (quizás sin darnos cuenta, en realidad es una función integrada).
Python también consta de diferentes módulos, bibliotecas o paquetes. Estos Módulos, Bibliotecas
o Paquetes consisten en muchas funciones predefinidas para diferentes temas o áreas, como
matemáticas, gráficos, manejo de sistemas de bases de datos, etc.
Consulte la Sección 4.4 para obtener más información y detalles al respecto.
43
Machine Translated by Google
El módulo matemático tiene todas las funciones matemáticas básicas que necesita, tales como:
Funciones métricas trigonométricas: sin(x), cos(x), etc. Funciones logarítmicas: log(), log10(), etc.
Constantes como pi, e, inf, nan, etc. etc.
Creamos algunos ejemplos básicos de cómo usar una Biblioteca, un Paquete o un Módulo:
3 x = 3. 1 4
4 y = sen ( x )
5
6 imprimir (y)
3 x = 3. 1 4
4 y = sen ( x ) 5
imprimir ( y )
6
7 y = cos ( x ) 8
imprimir ( y )
7 y = cos ( x ) 8
imprimir ( y )
1 importación de matemáticas
2
3 x = 3. 1 4 4 y =
matemática . pecado ( x )
5
6 imprimir (y)
44
Machine Translated by Google
3 x = 3. 1 4 4 y =
metro . pecado ( x )
5
6 imprimir (y)
Hay ventajas y desventajas con los diferentes enfoques. Es posible que en su programa
necesite usar funciones de muchos módulos o paquetes diferentes. Si importa todo el
módulo en lugar de solo las funciones que necesita, usará más memoria de la computadora.
Muy a menudo, también necesitamos importar y usar varias bibliotecas donde las diferentes
bibliotecas tienen algunas funciones con el mismo nombre pero un uso diferente.
Otros módulos útiles en la biblioteca estándar de Python son las estadísticas (donde tiene
funciones como mean(), stdev(), etc.)
Para obtener más información sobre las funciones de la biblioteca estándar de Python,
ver:
https://docs.python.org/3/library/index.html
• SciPy: SciPy es una biblioteca de Python gratuita y de código abierto que se utiliza para
la informática científica y la informática técnica. SciPy contiene módulos para
optimización, álgebra lineal, integración, interpolación, funciones especiales, FFT,
procesamiento de señales e imágenes, solucionadores de ODE y otras tareas comunes
en ciencia e ingeniería.
45
Machine Translated by Google
Estos paquetes deben descargarse e instalarse por separado, o puede optar por utilizar, por
ejemplo, un paquete de distribución como Anaconda.
Aprenderá las funciones básicas en todas estas bibliotecas. Usaremos todos los en diferentes
ejemplos y ejercicios a lo largo de este libro de texto.
3x = 3
4
5 y = np. pecado ( x )
6
7 imprimir (y)
4x = 3
5
6 y = mt. pecado ( x )
7
8 imprimir (y)
9
10
11 y = np. pecado ( x )
12
13 imprimir (y)
¡Nota! Como se ve en este ejemplo, usamos una función llamada sin() que existe tanto en el
módulo matemático en la biblioteca estándar de Python como en la biblioteca NumPy.
En este caso dan los mismos resultados. En este caso no se recomienda el siguiente código:
1 de importación matemática
2 de importación numérica
3
4x = 3
5
46
Machine Translated by Google
6 y = sen ( x )
7
8 imprimir (y)
9
10
11 y = sen ( x )
12
13 imprimir (y)
En este caso funciona, pero suponga que tiene 2 funciones diferentes con el mismo nombre
que tienen un significado diferente en 2 bibliotecas diferentes.
Anaconda:
https://www.anaconda.com/distribution/
Si está familiarizado con MATLAB y el trazado básico en MATLAB, el uso de Matplotlib es muy
similar.
La principal diferencia con MATLAB es que necesita importar la biblioteca, ya sea la biblioteca
completa o una o más funciones.
Para simplificar, importamos toda la biblioteca de esta manera:
1 alfombra de importación pl o tli b . py pl otasplt
47
Machine Translated by Google
• trama()
• título()
• etiquetax()
• ylabel()
• eje()
• red()
• subtrama()
• leyenda()
• espectáculo()
En este ejemplo tenemos arreglos con datos. Queremos graficar x contra y. Podemos suponer
que x es una serie de tiempo y y es la temperatura correspondiente en i grados Celsius.
3x=[1 , 2, 3 , 4 , 5, 6, 7, 8, 9 , 1 0]
4
5y=[5 , 2 ,4 , 4 , 8, 7, 4 , 8, 10, 9]
6
7 plt. parcela ( x , y ) 8
plt . xlabel ( 'Tiempo(s)' ) 9 plt. ylabel
( 'Temperatura (degC)' )10 plt. espectáculo ( )
3x=[14y , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 1 0]
=[5 , 2 ,4 , 4 , 8 , 7 , 4 , 8 , 1 0 , 9 ]
5
6 plot ( x , y ) 7
xlabel ( 'Tiempo ( s ) ' ) 8 ylabel
(' Temperatura (degC) ' ) 9 mostrar
()
Esto hace que el código sea más fácil de leer. aparece un problema con este enfoque suponiendo
que importamos y usamos varias bibliotecas y que las diferentes bibliotecas tienen algunas
funciones con el mismo nombre pero con un uso diferente.
48
Machine Translated by Google
• trama()
• etiquetax()
• ylabel()
• espectáculo()
4x=[0 , 1, 2, 3, 4, 5, 6, 7]
5
6 y = np. pecado ( x )
7
8 plt. parcela ( x , y ) 9
plt . etiqueta x ( ' ' ) 10Xplt .
ylabel ( ' ' ) 11 plt . y
espectáculo ( )
49
Machine Translated by Google
4 xstart = 0 5 xst op
= 2 np . pi 6 incremento
remen t = 0. 1
7
10 y = np. pecado ( x )
11
12 plt. parcela ( x , y ) 13
plt . etiqueta x ( ' ' ) 14 Xplt .
ylabel ( ' ' ) 15 plt . y
espectáculo ( )
4.6.1 Subparcelas
El comando subparcela le permite mostrar varias parcelas en la misma ventana.
Escribir ”subplot(m,n,p)” divide la ventana de la figura en una matriz mbyn de pequeñas
subtramas y selecciona la subtrama para la trama actual. Los gráficos están numerados
en la primera fila de la ventana de la figura, luego en la segunda fila y así sucesivamente.
Consulte la Figura 4.6.
50
Machine Translated by Google
4 xstart = 0 5 xst op
= 2 np . pi 6 incremento
remen t = 0. 1
7
10 y = np. pecado ( x )
11
12 z = np. porque ( x )
13
14
22
23
51
Machine Translated by Google
4.6.2 Ejercicios
A continuación encontrará diferentes ejercicios a su propio ritmo que debe realizar y resolver por
su cuenta. ¡La única forma de aprender Python es hacer muchos ejercicios!
• trama()
• título()
• etiquetax()
• ylabel()
• eje()
• red()
• leyenda()
• espectáculo()
52
Machine Translated by Google
Parte II
Programación Python
53
Machine Translated by Google
Capítulo 5
Programación Python
Hemos repasado los conceptos básicos de Python, como las variables, el uso de algunas
funciones básicas integradas, el trazado básico, etc.
Es posible que llegue lejos solo con estos delgados, pero para crear aplicaciones reales, necesita
conocer y usar funciones como:
• Si... Si no
• Para bucles
• Mientras Bucles
• matrices...
Si está familiarizado con uno o más lenguajes de programación, estas funciones le resultarán
familiares y conocidas. Todos los lenguajes de programación tienen estas características
incorporadas, pero la sintaxis es ligeramente diferente de un idioma a otro.
5.1 Si... Si no
Una "sentencia if" se escribe utilizando la palabra clave if.
1 un = 5 2
segundo = 8
3
4 si a > b :
5 imprimir ( ”aismayor que b” )
6
7 si b > a :
8 print ( ”bismayor que a” )
9
10 si a == b :
11 print ( ”aisequ al tob” )
Listado 5.1: Uso de arreglos en Python
54
Machine Translated by Google
Usando If Else:
1 un = 5 2
segundo = 8
3
4 si a > b :
5 imprimir ( ”aismayor que b” )
6 más :
7 print ( ”bismayor que aora y bareequ al ” )
Listado 5.2: Uso de arreglos en Python
Usando Elif:
1 un = 5 2
segundo = 8
3
4 si a > b :
5 print ( ”aesmayor que b” ) 6 elif b > a :
print ( ”bismayor
7 que a” ) 8 elif a == b :
¡Nota! Python usa "elif" y no "elseif" como lo hacen muchos otros lenguajes de
programación.
5.2 Matrices
Una matriz es una variable especial que puede contener más de un valor a la vez.
Aquí hay algunos ejemplos de cómo puede crear y usar matrices en Python:
3 N = longitud (datos)
4
5 imprimir (N)
6
9 datos [ 2 ] = 7. 3
10
11 imprimir ( datos [ 2 ] )
12
13
14 para x en datos:
15 imprimir (x)
55
Machine Translated by Google
dieciséis
17
18 datos. agregar ( 1 1 . 4 )
19
20
21 N = longitud (datos)
22
23 impresión (N)
24
25
26 para x en datos:
27
imprimir (x)
Listado 5.4: Uso de arreglos en Python
1 N = longitud (datos)
coches [ índice x ]
Tiene muchos métodos integrados que puede usar en combinación con matrices, como sort(), clear(),
copy(), count(), insert(), remove(), etc.
56
Machine Translated by Google
A continuación, verá un ejemplo básico de cómo puede usar un bucle For en Python:
El bucle For es probablemente una de las funciones más útiles de Python (o de cualquier tipo de
lenguaje de programación). A continuación, verá diferentes ejemplos de cómo puede usar un bucle
For en Python.
3 para x en datos:
4 imprimir (x)
5
6
” Te sl a ”
7 carlista = [ ”Volvo” , , "Ford" ]
8
1 norte = 10
La función range() devuelve una secuencia de números, comenzando desde 0 de forma predeterminada,
se incrementa en 1 (de forma predeterminada) y termina en un número específico.
57
Machine Translated by Google
Debería probar todos estos ejemplos para aprender la estructura básica de un bucle For.
Por lo general, desea usar un bucle For para encontrar la suma de un conjunto de datos dado.
1 dato = [ 1 , 5, 6, 3, 12, 3]
2
3 suma = 0
4
9 imprimir ( suma)
10
13 N = longitud (datos)
14
15 media = suma/N
dieciséis
17 imprimir (media)
1 30
2 5. 0
Los números de Fibonacci se utilizan en el análisis de los mercados financieros, en estrategias como
el retroceso de Fibonacci, y se utilizan en algoritmos informáticos como la técnica de búsqueda de
Fibonacci y la estructura de datos del montón de Fibonacci.
También aparecen en entornos biológicos, como la ramificación de los árboles, la disposición de las
hojas en un tallo, los frutos de una piña, la floración de la alcachofa, un helecho que se despliega y
la disposición de una piña.
Por definición, los dos primeros números de Fibonacci son 0 y 1, y cada número subsiguiente es la
suma de los dos anteriores.
58
Machine Translated by Google
f0 = 0, f1 = 1
3 mentira 1 = 0 4
mentira 2 = 1
6 impresión (fib 1)
7 impresión (fib 2)
8
13 imprimir (fibnext)
Solución alternativa:
1 norte = 10
3 fib = [ 0 , 1]
4
10 imprimir (falta)
3 mentira = [ ]
4
8 mentiras [ 0 ] = 0 9 mentiras
[1]=1
10
59
Machine Translated by Google
14
15 letra (falta)
Listado 5.8: Números de Fibonacci usando un ciclo For en Python Alt3
4 norte = 10
8 mentiras [ 0 ] = 0 9 mentiras
[1]=1
10
14
15 letra (falta)
Listado 5.9: Números de Fibonacci usando un ciclo For en Python Alt4
Ejemplo sencillo:
1 para el rango i ( 1 1 0 ) : para
, el
2 rango k ( 1 1 0 ) : print ( ik, )
3 ,
Los primeros 25 números primos (todos los números primos menores que 100)
son: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89,
97
60
Machine Translated by Google
Por definición, un número primo tiene tanto al 1 como a sí mismo como divisor. Si tiene
cualquier otro divisor, no puede ser primo.
Un número natural (1, 2, 3, 4, 5, 6, etc.) se llama número primo (o primo) si es mayor que 1 y
no se puede escribir como producto de dos números naturales que son ambos más pequeños.
que eso.
Cree un script de Python donde encuentre todos los números primos entre 1 y 200.
¡Consejo! Supongo que esto se puede hacer de muchas maneras diferentes, pero una forma es usar
2 For Loops anidados.
1 metro = 8
2
3 mientras que m >
4 2 : imprime
5 (m) m = m − 1
5.5 Ejercicios
A continuación encontrará diferentes ejercicios a su propio ritmo que debe realizar y resolver
por su cuenta. ¡La única forma de aprender Python es hacer muchos ejercicios!
61
Machine Translated by Google
Crea un Script en Python (archivo .py) donde trazas la solución x(t) en el intervalo de tiempo:
0 ≤ t ≤ 25
62
Machine Translated by Google
Capítulo 6
Creación de funciones en
Pitón
6.1 Introducción
Una función es un bloque de código que solo se ejecuta cuando se le llama. Puede pasar
datos, conocidos como parámetros, a una función. Una función puede devolver datos como
resultado.
Scripts vs Funciones
Guiones:
Funciones:
• Tener un espacio de trabajo separado y variables internas que solo son válidas dentro
la función
63
Machine Translated by Google
• Sus propias funciones definidas por el usuario funcionan de la misma manera que las funciones
integradas que usa todo el tiempo, como plot(), rand(), mean(), std(), etc.
Python tiene muchas funciones integradas, pero muy a menudo necesitamos crear nuestras propias
funciones (podríamos referirnos a estas funciones como funciones definidas por el usuario)
En Python, una función se define usando la palabra clave def:
1 def suma ( x , y ) :
2
3 volver x + y
La instrucción return [expresión] sale de una función y, opcionalmente, devuelve una expresión a la
persona que llama. Una declaración de devolución sin argumentos es lo mismo que devolver Ninguno.
Tenga en cuenta que debe usar dos puntos ":" al final de la línea donde define la función.
1 def suma ( x , y ) :
1 def suma ( x , y ) :
2
3 volver x + y
4
6x=27y=5
9 z = sumar ( x , y )
10
11 imprimir (z)
Listado 6.2: Creación y uso de una función de Python
64
Machine Translated by Google
1 def promedio ( x , y ) :
2
3
retorno ( x + y ) /2
Listado 6.3: Función que calcula el promedio
A continuación, creamos un nuevo archivo de Python (p. ej., testaverage.py) donde usamos
la función que creamos:
3 un = 2 4
segundo = 3
6 c = promedio (a ,b )
7
8 imprimir ( c )
Listado 6.4: Prueba de la función promedio
Ejemplo 6.2.1. Crear una función Función con múltiples valores de retorno
3 suma total = 0
4
12 N = longitud (datos)
13
dieciséis
18
19
20
sesenta y cinco
Machine Translated by Google
21 datos = [ 1 , 5 , 6 , 3 , 12 , 3]
22
23
6.3 Ejercicios
Ejercicio 6.3.2. Cree funciones de Python para convertir entre radianes y grados
Dado que la mayoría de las funciones trigonométricas requieren que el ángulo se exprese
en radianes, crearemos nuestras propias funciones para convertir entre radianes y grados.
Tenemos eso:
Esto da:
180
d[grados] = r[radianes] × ( ) (6.2)
π
y
π
r[radianes] = d[grados] × ( ) 180 (6.3)
Cree dos funciones que conviertan de radianes a grados (r2d(x)) y de grados a radianes
(d2r(x)) respectivamente.
66
Machine Translated by Google
Los números de Fibonacci se utilizan en el análisis de los mercados financieros, en estrategias como
el retroceso de Fibonacci, y se utilizan en algoritmos informáticos como la técnica de búsqueda de
Fibonacci y la estructura de datos del montón de Fibonacci.
También aparecen en entornos biológicos, como la ramificación de los árboles, la disposición de las
hojas en un tallo, los frutos de una piña, la floración de la alcachofa, un helecho que se despliega y
la disposición de una piña.
Por definición, los dos primeros números de Fibonacci son 0 y 1, y cada número subsiguiente es la
suma de los dos anteriores.
En términos matemáticos, la secuencia Fn de los números de Fibonacci está definida por la relación
de recurrencia
f0 = 0, f1 = 1
Los primeros 25 números primos (todos los números primos menores que 100) son: 2, 3,
5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97
Por definición, un número primo tiene tanto al 1 como a sí mismo como divisor. Si tiene cualquier
otro divisor, no puede ser primo.
Un número natural (1, 2, 3, 4, 5, 6, etc.) se llama número primo (o primo) si es mayor que 1 y no se
puede escribir como producto de dos números naturales que son ambos más pequeños. que eso.
¡Consejo! Supongo que esto se puede implementar de muchas maneras diferentes, pero una forma
es usar 2 For Loops anidados.
67
Machine Translated by Google
Cree una función de Python donde verifique si un número dado es un número primo o no.
68
Machine Translated by Google
Capítulo 7
7.1 Introducción
Python es un lenguaje de programación orientada a objetos (POO). Casi todo en Python es
un objeto, con sus propiedades y métodos.
La base de todos los lenguajes de programación orientada a objetos (POO) son las clases.
1 clase ClassName:
2 <sentencia −1>
3 .
4 .
5 .
6 <sentencia−N>
Coche de 1 clase :
2 modelo = ”Volvo”
3 color = ”Azul”
4
6 coche = coche ( )
7
1 volvo
2 azul
69
Machine Translated by Google
Este ejemplo no ilustra las cosas buenas con las clases, por lo que crearemos algunos
ejemplos más.
5 coche = coche ( )
6
7 coche. modelo = coche
”Volvo” 8 . color = ”Azul”
9
””
10 estampados ( coche . color + + coche modelo )
11
12 coche. modelo = coche
”Ford” 13 . color = ”Verde”
14
””
15 estampados ( coche . color + + coche modelo )
Listado 7.2: Ejemplo de clase de Python
Crearemos un ejemplo simple donde usamos la función init () para ilustrar el principio.
11
70
Machine Translated by Google
11
12 # Comencemos la clase
13
”
14 coche 1 = coche ( ” tesla , ”Rojo” )
15
16 coche 1 . disp l a yC ar ( )
17
18
24
32 coche 3 . disp l a yC ar ( )
Como puede ver en el código, ahora hemos definido una Clase "Coche" que tiene 2 variables
de Clase llamadas "modelo" y "color", y además hemos definido una Función (o Método)
llamada "displayCar()".
Es normal usar el término "Método" para funciones que se definen dentro de una clase.
Los métodos de clase se declaran como funciones normales con la excepción de que el
primer argumento de cada método es self.
Para crear instancias de una clase, llame a la clase usando el nombre de la clase y pase
cualquier argumento que acepte su método init ().
Por ejemplo:
71
Machine Translated by Google
4 # Comencemos la clase
5
”
6 coche 1 = coche ( ” tesla , ”Rojo” )
7
8 coche 1 . disp l a yC ar ( )
9
10
dieciséis
24 coche 3 . disp l a yC ar ( )
[idioma=Python]
72
Machine Translated by Google
7.3 Ejercicios
Cree una clase de Python donde calcule los grados en Fahrenheit en función de la
temperatura en Celsius y viceversa.
73
Machine Translated by Google
Capítulo 8
A medida que su programa se hace más largo, es posible que desee dividirlo en varios
archivos para facilitar el mantenimiento. También puede querer usar una función útil que haya
escrito en varios programas sin copiar su definición en cada programa.
Para respaldar esto, Python tiene una forma de colocar definiciones en un archivo y usarlas
en un script o en una instancia interactiva del intérprete (la ventana de la Consola de Python).
Python le permite dividir su programa en módulos que pueden reutilizarse en otros programas
de Python. Viene con una gran colección de módulos estándar que puede usar como base de
sus programas como hemos visto ejemplos en capítulos anteriores. No es el momento de
hacer tus propios módulos desde cero.
Considere que un módulo es lo mismo que una biblioteca de código. Un archivo que contiene
un conjunto de funciones que desea incluir en su aplicación.
Crearemos un módulo Python con 2 funciones. La primera función debe convertir de Celsius
a Fahrenheit y la otra función debe convertir de Fahrenheit a Celsius.
74
Machine Translated by Google
3 Tf = (Tc 9 / 5 ) + 32 vuelta
4 Tf
5
7 def f 2 c ( Vf ) :
8
9 Tc = ( Tf − 3 2 ) (5/9)
10 regresa Tc
5 Tf = c 2 f (Tc )
6
10 Tf = 32
11
12 Tc = f 2 c ( Tf )
13
1 Fahrenheit : 3 2. 0
2 C elsius : 0. 0
8.2 Ejercicios
Ejercicio 8.2.1. Crear módulo de Python para convertir entre radianes y grados
Dado que la mayoría de las funciones trigonométricas requieren que el ángulo se exprese
en radianes, crearemos nuestras propias funciones para convertir entre radianes
75
Machine Translated by Google
y grados.
Pruebe las funciones para asegurarse de que funcionan como se esperaba. Puede optar
por crear un nuevo archivo .py para probar estas funciones o puede usar la ventana Consola.
76
Machine Translated by Google
Capítulo 9
9.1 Introducción
Python tiene varias funciones para crear, leer, actualizar y eliminar archivos.
La función clave para trabajar con archivos en Python es la función open().
• ”r” Lectura Valor por defecto. Abre un archivo para lectura, error si el archivo lo hace
no existe
Además, puede especificar si el archivo debe manejarse como modo binario o de texto.
77
Machine Translated by Google
”
1 f = abrir ( ” mi archivo . txt , "x" )
2
5f . escribir (datos)
6
7f . cerca ( )
• ”r” Lectura Valor por defecto. Abre un archivo para lectura, error si el archivo lo hace
no existe
” ”r
1 f = abrir ( ” mi archivo . txt , ”)
2
3 datos = f . leer ( )
4
5 imprimir (datos)
6
7f . cerca ( )
78
Machine Translated by Google
1 dato = [ 1 . 6
, 3.4 , 5.5 , 94]
2
”
3 f = abrir ( ” mi archivo . txt
, "x" )
4
7
registro = str ( valor ) f .
8
escribir ( registrar )
9
f . escribir ( ”\n” )
10 f. cerca ( )
” , ” r
1 f = abrir ( ” mi archivo . txt
2
”)
3 para registro en f :
4
5
registro = registro. reemplazar ( ”\n” , ”” )
6
imprimir (registro)
7f . cerca ( )
9.6 Ejercicios
A continuación encontrará diferentes ejercicios a su propio ritmo que debe realizar y resolver por su cuenta.
¡La única forma de aprender Python es hacer muchos ejercicios!
Suponga que tiene los siguientes datos que desea registrar en un archivo como se muestra en la Tabla 9.1.
79
Machine Translated by Google
Suponga que lee datos de un sensor de temperatura cada 10 segundos durante un período
de, digamos, 5 minutos.
80
Machine Translated by Google
... ...
81
Machine Translated by Google
Capítulo 10
10.1.2 Excepciones
Incluso si una declaración o expresión es sintácticamente correcta, puede causar un error
cuando se intenta ejecutarla. Los errores detectados durante la ejecución se denominan
excepciones y no son incondicionalmente fatales: pronto aprenderá a manejarlos en los
programas de Python. Sin embargo, la mayoría de las excepciones no son manejadas por
programas y dan como resultado mensajes de error como se muestra aquí:
1 >>> 10 (1/0)
2 Seguimiento (última llamada más reciente):
3
4
5
Archivo ”<ipython−input −2−0b280 f36835c>” 10 ( 1 / 0 ) , línea 1 , en <módulo>
6
o:
82
Machine Translated by Google
• El bloque finalmente le permite ejecutar código, independientemente del resultado del intento.
y excepto bloques.
Cuando ocurre un error, o una excepción como lo llamamos, Python normalmente se detendrá y
generará un mensaje de error.
1
2 intento : 10 (1/
0)3
4 excepto : imprimir ( ”El cálculo falló ” )
o:
1
2 intento :
imprimir (x)
4 3 excepto : imprimir ( ”x no está defi nido” )
1
2 intento :
imprimir (x) 3 excepto
4 NameError: imprimir ( "x no está
definido" ) 5
6 excepto : imprimir ( "Algo está mal" )
Ejemplo:
83
Machine Translated by Google
1x=2
3
4 intente :
imprimir (x) 5 excepto
6 NameError: imprimir ( "x no está
definido" )
8 7 excepto : imprimir ( "Algo está
mal" ) 9
10 finalmente : imprimir ( "El programa ha terminado" )
En general, debe usar probar, excepto, finalmente cuando intente abrir un archivo, leer o
escribir archivos, conectarse a una base de datos, etc.
Ejemplo:
1
2 intento : f = abrir archivo
( ” ” ) mi.
3 txtf . w ri te ( ”Lorum Ipsum” )
4 excepto :
5 print ( ”Algo salió mal al escribir en el archivo ” ) 6 finalmente : f . cerca ( )
84
Machine Translated by Google
Capítulo 11
Depuración en Python
Como programador, una de las primeras cosas que necesita para desarrollar un programa serio
es un depurador.
Python tiene un depurador incorporado que se puede usar si está codificando Python con un
editor de texto básico y ejecutando sus programas de Python desde la línea de comandos.
Una mejor opción es utilizar las funciones de depuración integradas en su editor de Python. La
depuración generalmente se integra con el editor de Python que está utilizando.
85
Machine Translated by Google
Capítulo 12
Un paquete contiene todos los archivos que necesita para un módulo. Los módulos son bibliotecas
de código de Python que puede incluir en su proyecto.
Dado que Python es de código abierto, puede encontrar miles de paquetes de Python que puede
instalar y usar en sus programas de Python.
Puede usar una distribución de Python como la distribución de Anaconda (o distribuciones de Python
similares) para descargar e instalar muchos paquetes de Python comunes como se mencionó
anteriormente.
PIP es un administrador de paquetes para paquetes de Python, o módulos si lo desea. PIP es una
herramienta para instalar paquetes de Python.
Si no tiene PIP instalado, puede descargarlo e instalarlo desde esta página: https://pypi.org/project/
pip/
PIP generalmente se usa desde el Símbolo del sistema (Windows) o la ventana Terminal (macOS).
Algunos editores de Python también tienen una forma gráfica de instalar paquetes de Python, como,
por ejemplo, Visual Studio.
86
Machine Translated by Google
Parte III
Entornos Python y
Distribuciones
87
Machine Translated by Google
Capítulo 13
Introducción a Python
Ambientes y
Distribuciones
Python es de código abierto y todos pueden agrupar y distribuir Python y otros paquetes de Python.
Estos componentes juntos determinan qué construcciones de lenguaje y sintaxis son válidas, a qué
funcionalidad del sistema operativo puede acceder y qué paquetes puede usar.
• Anaconda
• Pabellón pensado
• WinPython
• etc.
88
Machine Translated by Google
Luego instale los paquetes de Python adicionales que necesita mediante PIP. https://
pypi.org/proyecto/pip/
13.1.1 PIP
Web:
https://pypi.org
PIP generalmente se usa desde el Símbolo del sistema (Windows) o la ventana Terminal (macOS).
13.1.2 Conda
Conda es un sistema de administración de paquetes y un sistema de administración de entornos de
código abierto que se ejecuta en Windows, macOS y Linux. Conda instala, ejecuta y actualiza paquetes
y sus dependencias.
El administrador de paquetes y entornos de Conda está incluido en todas las versiones de Ana conda.
Conda fue creado para programas de Python, pero puede empaquetar y distribuir software para
cualquier idioma.
Conda también le permite crear entornos separados que contengan archivos, paquetes y sus
dependencias que no interactuarán con otros entornos.
89
Machine Translated by Google
Web:
https://conda.io/
Web:
https://www.anaconda.com
Python "Entornos virtuales" es útil cuando tiene diferentes aplicaciones de Python que
necesitan diferentes versiones de Python o diferentes versiones de los paquetes de
Python que está utilizando.
90
Machine Translated by Google
capitulo 14
Anaconda
Web:
https://www.anaconda.com
Wikipedia:
https://en.wikipedia.org/wiki/Anaconda(P ythondistribution)
91
Machine Translated by Google
92
Machine Translated by Google
Capítulo 15
Pabellón pensado
Canopy está disponible gratuitamente para todos los usuarios bajo la licencia de Canopy.
Canopy brinda acceso a varios cientos de paquetes de Python, incluidos NumPy, SciPy,
Pandas, Matplotlib e IPython.
Web:
https://www.enthought.com/product/canopy/
93
Machine Translated by Google
Parte IV
Editores de Python
94
Machine Translated by Google
capitulo 16
Editores de Python
En teoría, puede usar el Bloc de notas de Windows para crear programas de Python,
pero en la práctica es imposible crear programas sin tener un editor con Depuración,
IntelliSense, formato de color, etc.
Para programas simples de Python, puede usar IDLE Editor, pero para programas más
avanzados, se recomienda un mejor editor.
• Espía
• Estudio visual
• PyCharm
• Ala
• Cuaderno Jupyter
Daremos una descripción general de estos editores de código en los próximos capítulos.
Si ya tiene un editor de código favorito, es un buen cambio que pueda usarlo para la
programación de Python.
El editor que debe usar depende de su experiencia, qué tipo de editores de código ha
usado anteriormente, sus habilidades de programación, lo que va a desarrollar en
Python, etc.
95
Machine Translated by Google
Para obtener una lista de los "mejores editores de Python", consulte [15].
96
Machine Translated by Google
capitulo 17
espía
Spyder es un entorno de desarrollo integrado (IDE) multiplataforma de código abierto para la programación
científica en el lenguaje Python.
97
Machine Translated by Google
• Explorador de variables
• etc.
Web:
https://www.spyderide.org
Si ha usado MATLAB anteriormente o quiere usar Python para uso científico, Spyder es una buena
opción. es fácil de instalar usando Anaconda Distribution.
Web:
https://www.anaconda.com
98
Machine Translated by Google
capitulo 18
Visual Studio Code es un editor simple y fácil de usar que se puede usar para muchos
lenguajes de programación diferentes.
Haga clic con el botón derecho y seleccione "Ejecutar archivo de Python en la terminal"
Web:
https://code.visualstudio.com
Wikipedia:
https://en.wikipedia.org/wiki/VisualStudioC ode
99
Machine Translated by Google
https://www.python.org
Web:
https://code.visualstudio.com/docs/languages/python
100
Machine Translated by Google
capitulo 19
Estudio visual
Se podría decir que Visual Studio es el hermano mayor de Visual Studio Code.
Visual Studio (desde 2017), tiene soporte integrado para Python, se llama "Soporte de
Python en Visual Studio".
Web:
https://visualstudio.microsoft.com
Wikipedia:
https://en.wikipedia.org/wiki/MicrosoftVisualStudio
Vaya a mi sitio web para obtener más información sobre Visual Studio y la programación
en C: https://www.halvorsen.blog/
101
Machine Translated by Google
Visual Studio es principalmente para Windows. Existe una versión para MacOS de Visual
Studio, pero tiene muchas menos funciones que la edición de Windows.
Tenga en cuenta que la compatibilidad con Python solo está disponible en Visual Studio para
Windows. Si usa Mac y Linux, necesita usar Visual Studio Code. Se podría decir que Visual
Studio Code es una versión reducida de Visual Studio.
Visual Studio (desde 2017), tiene soporte integrado para Python, se llama "Soporte de Python
en Visual Studio". Incluso si está integrado, debe seleccionar manualmente qué componentes
desea instalar en su computadora. Asegúrese de descargar y ejecutar el último instalador de
Visual Studio 2017 para Windows.
cuando ejecuta el instalador de Visual Studio (ya sea por primera vez o si ya instaló Visual
Studio 2017 y desea modificarlo), aparece la ventana que se muestra en la Figura 19.2.
El instalador le presenta una lista de las denominadas cargas de trabajo, que son grupos de
opciones relacionadas para áreas de desarrollo específicas. Para Python, seleccione la carga
de trabajo "Desarrollo de Python" y seleccione Instalar (Figura 19.3).
102
Machine Translated by Google
2 >>> segundo
= 5 3 >>> x = 3
4 >>> y = a x + segundo
5 >>> y
Comience seleccionando del menú: Archivo Nuevo Proyecto... Aparecerá la ventana Nuevo
proyecto. Consulte la figura 19.5.
Podemos crear una aplicación ordinaria de Python (uno o más scripts de Python), podemos
optar por crear una aplicación web utilizando marcos web como Django o Flask, o podemos
crear diferentes aplicaciones de GUI de escritorio. También podemos crear Juegos.
103
Machine Translated by Google
Comenzamos creando una aplicación básica de Python Hello World. Consulte la Figura 19.1.
Seleccione Archivo Nuevo Proyecto... Aparecerá la ventana Nuevo proyecto. Consulte la figura 19.5.
Presione F5 (nuestro clic en la flecha verde) para ejecutar o ejecutar el programa Python.
También puede hacer clic con el botón derecho en el archivo y seleccionar "Iniciar sin depurar".
Cree un nuevo archivo de Python haciendo clic con el botón derecho en el Explorador de soluciones y seleccione
Agregar Nuevo elemento... y luego seleccione "Vaciar archivo de Python".
4 xstart = 0 5 xst op
= 2 np . pi 6 incremento
remen t = 0. 1
7
10 y = np. pecado ( x )
11
12 plt. parcela ( x , y )
13 plt . título ( ' y=sin ( x ) ' )
104
Machine Translated by Google
En este ejemplo, usamos el paquete Matplotlib para trazar, por lo que debemos tener ese
paquete instalado en la computadora. Puede instalar el paquete Matplotlib en diferentes
entornos de Python.
Si aún no ha instalado el paquete Matplotlib (ya sea como parte de Anaconda o manualmente
mediante PIP), también puede instalar fácilmente los paquetes de Python desde Visual
Studio. Consulte la Figura 19.8.
También puede ver fácilmente qué paquetes de Python están instalados para los diferentes
entornos de Python. Consulte la Figura 19.9.
105
Machine Translated by Google
Lo bueno de usar Visual Studio es que tiene una interfaz gráfica de usuario para todo, no necesita
usar la ventana de comandos, etc. para instalar paquetes de Python, etc.
Presione F5 (nuestro clic en la flecha verde) para ejecutar o ejecutar el programa Python.
También puede hacer clic con el botón derecho en el archivo y seleccionar "Iniciar sin depurar".
Obtenemos los siguientes resultados, ver Figura 19.10.
106
Machine Translated by Google
107
Machine Translated by Google
108
Machine Translated by Google
capitulo 20
PyCharm
Web:
https://www.jetbrains.com/pycharm/
Wikipedia:
https://en.wikipedia.org/wiki/PyCharm
Anaconda y JetBrains también tienen una colaboración y ofrecen lo que llaman Py Charm
para Anaconda. Puedes descargarlo aquí:
109
Machine Translated by Google
https://www.jetbrains.com/pycharm/promo/anaconda/
Tenemos editores de código como Visual Studio y Visual Studio Code que se pueden
usar para muchos lenguajes de programación diferentes al instalar diferentes tipos de
complementos.
Los editores como Spyder y PyCharm son editores hechos a medida para Python lan
calibre
Spyder es un IDE liviano que generalmente se usa para uso científico. PyCharm, por otro
lado, es un IDE completo para el desarrollo de software en general mediante el uso del
lenguaje Python. Admite muchos complementos, es más fácil programar Django, etc.
110
Machine Translated by Google
capitulo 21
La familia Wing Python IDE de entornos de desarrollo integrados (IDE) de Wingware se creó
específicamente para el lenguaje de programación Python.
• Wing 101: una versión gratuita muy simplificada, para enseñar a profesionales principiantes
gramáticos
• Wing Personal: versión gratuita que omite algunas funciones, para estudiantes y
aficionados
• Wing Pro: una versión comercial (de pago) con todas las funciones, para profesionales
programadores
Web:
https://wingware.com
111
Machine Translated by Google
Wikipedia:
https://en.wikipedia.org/wiki/WingIDE
112
Machine Translated by Google
capitulo 22
Cuaderno Jupyter
Jupyter Notebook es una aplicación web de código abierto que le permite crear y
compartir documentos que contienen código en vivo, ecuaciones, visualizaciones y
texto.
Web:
http://jupyter.org
Wikipedia:
https://en.wikipedia.org/wiki/ProjectJupyter
113
Machine Translated by Google
22.1 JupyterHub
JupyterHub es una versión multiusuario del portátil diseñada para empresas, aulas y laboratorios de
investigación [17].
JupyterHub es de código abierto y está diseñado para ejecutarse en una variedad de infraestructura.
Esto incluye proveedores comerciales de nube, máquinas virtuales o incluso el hardware de su propia
computadora portátil.
Web:
http://jupyter.org/hub
Lo bueno de Microsoft Azure Notebooks es que tiene la infraestructura y todo en funcionamiento listo
para usar. Puedes usarlo gratis también.
Web:
https://notebooks.azure.com
La figura 22.2 muestra una descripción general de mis proyectos de Azure Notebook.
La figura 22.3 muestra una descripción general de mis cuadernos de Azure Notebook Project.
114
Machine Translated by Google
115
Machine Translated by Google
Parte V
116
Machine Translated by Google
capitulo 23
Matemáticas en Python
https://www.halvorsen.blog/documents/programming/matlab/
En este capítulo nos centraremos en el módulo matemático que forma parte de la biblioteca
estándar de Python.
El módulo matemático tiene todas las funciones matemáticas básicas que necesita, tales como:
Funciones métricas trigonométricas: sin(x), cos(x), etc. Funciones logarítmicas: log(), log10(), etc.
Constantes como pi, e, inf, nan, etc. etc.
Creamos algunos ejemplos básicos de cómo usar una Biblioteca, un Paquete o un Módulo:
3 x = 3. 1 4
4 y = sen ( x )
5
6 imprimir (y)
117
Machine Translated by Google
3 x = 3. 1 4
4 y = sen ( x ) 5
imprimir ( y )
6
7 y = cos ( x ) 8
imprimir ( y )
7 y = cos ( x ) 8
imprimir ( y )
1 importación de matemáticas
2
3 x = 3. 1 4 4 y =
matemática . pecado ( x )
5
6 imprimir (y)
3 x = 3. 1 4
4 y = mt. pecado ( x )
5
6 imprimir (y)
Hay ventajas y desventajas con los diferentes enfoques. Es posible que en su programa necesite
usar funciones de muchos módulos o paquetes diferentes. Si importa todo el módulo en lugar de
solo las funciones que necesita, usará más memoria de la computadora.
Muy a menudo, también necesitamos importar y usar varias bibliotecas donde las diferentes
bibliotecas tienen algunas funciones con el mismo nombre pero un uso diferente.
Otros módulos útiles en la biblioteca estándar de Python son las estadísticas (donde tiene funciones
como mean(), stdev(), etc.)
Para obtener más información sobre las funciones de la biblioteca estándar de Python,
ver:
https://docs.python.org/3/library/
118
Machine Translated by Google
23.1.1 Ejercicios
A continuación encontrará diferentes ejercicios a su propio ritmo que debe realizar y resolver
por su cuenta. ¡La única forma de aprender Python es hacer muchos ejercicios!
z = 3x 2
+ x + y (x)
+e
22 en
(23.1)
poli = ax2 + bx + c
número = ...
guarida . . .
=f= ...
Esto hace que la expresión sea más fácil de leer y comprender, y minimiza el riesgo de
cometer un error al escribir la expresión en Python.
Encuentre f(9)
119
Machine Translated by Google
2c 2 = un 2
+ segundo
(23.3)
Cree una función que use Pitágoras para calcular la hipotenusa de un triángulo rectángulo
(Figura 23.1), por ejemplo:
1 def py th agoras (a ,b )
2 ...
3 ...
4 volver c
E = mc2 (23.4)
Calcula cuánto de la masa del sol se usa para crear esta energía por día.
¿Cuántos años se necesitarán para convertir toda la masa del sol por completo? ¿Debemos
preocuparnos si el sol se agotará en nuestra generación o en la siguiente? justificar la
respuesta.
120
Machine Translated by Google
Cree una función que encuentre el área de la superficie de un cilindro en función de la altura (h) y el
radio (r) del cilindro. Ver figura ??.
23.2 Estadísticas
23.2.1 Introducción a la Estadística
Media o promedio: La
media es la suma de los datos dividida por el número de puntos de datos. Comúnmente se le llama
“el promedio”,
x1 + x2 + x3 + ... + xN norte 1
x¯ = = xi (23.5)
ni
=1
Significar:
norte
121
Machine Translated by Google
Diferencia:
norte
1 2
var(x) = (xi x¯) (23.7)
ni
=1
Desviación estándar: la
desviación estándar es una medida de la dispersión de los valores en un conjunto de datos o el valor
de una variable aleatoria. Se define como la raíz cuadrada de la varianza.
norte
1
2
estándar(x) = σ = √ var = (xi x¯) (23.8)
ni
=1
Tenemos que σ 2
= var(x)
Para obtener más información sobre las funciones de la biblioteca estándar de Python,
ver:
https://docs.python.org/3/library/
A continuación, encontrará algunos ejemplos de cómo usar algunas de las funciones de estadísticas en
el módulo de estadísticas en la biblioteca estándar de Python:
1 estadísticas de importaciónasst
2
, 2.5 , 3. 2 5 , 5.75]
3 datos = [ −1. 0
4
5 #Media o Promedio 6 m =
st . media (datos) 7 imprimir (m)
122
Machine Translated by Google
11 imprimir (desvst)
12
13 # Mediana 14
med = st . mediana (datos) 15 impresión
(med)
dieciséis
17 # V a ri anza 18
var = st . va ri anza (datos) 19 imprimir (var)
También puede usar la biblioteca NumPy. NumPy es el paquete fundamental para la computación
científica con Python.
A continuación encontrará algunos ejemplos de cómo usar algunas de las funciones estadísticas en
NúmPy:
5 #Media o Promedio 6 m =
np . media (datos) 7 imprimir
(m)
8
9 # Desviación estándar 10
Desviación estándar = np . std (datos)
11 imprimir (stdev)
12
13 # Mediana 14
med = np . mediana (datos) 15 impresión
(med)
dieciséis
20
123
Machine Translated by Google
Para obtener una comprensión más profunda de las matemáticas detrás de estas funciones
y aprender más sobre programación en Python, debe crear su propio módulo de estadísticas
en Python.
Cree su propio módulo de estadísticas en Python (p. ej., ”mystatistics.py) y luego cree un
script de Python (p. ej., ”testmystatistics.py) donde pruebe estas funciones.
3x = 2 mt. Pi
4
5 y = mt. sen ( x ) 6
imprimir ( y )
7
8 y = mt. cos ( x ) 9
imprimir ( y )
10
11 y = mt. bronceado ( x )
12 imprimir ( y )
Para obtener más información sobre las funciones de la biblioteca estándar de Python,
ver:
https://docs.python.org/3/library/index.html
124
Machine Translated by Google
1 importar matemáticas
como mt 2 importar mat pl o tli b . py pl otasplt
3
4 datos x = [ ] 5 datos y =
[]
6
7 para el rango de x ( 0 1 0 ,) :
8 xdata . agregar ( x ) y
9 = mt . sen(x)ydatos.
10 agregar (y)
11
En el ejemplo que hemos trazado sin(x), podemos extender fácilmente el programa para trazar
cos(x), etc.
Para obtener más información sobre las funciones de la biblioteca estándar de Python,
ver:
https://docs.python.org/3/library/index.html
4 xstart = 0 5 xst op =
2 np . pi 6 incremento remen t = 0. 1
10 y = np. pecado ( x )
125
Machine Translated by Google
11 plt. parcela ( x , y ) 12
plt . título ( ' y=sin ( x ) ' ) 13 plt . etiqueta
x ( ' ' ) 14 plt . ylabel ( ' ' ) X15
plt . cuadrícula ( ) 16 plt . yeje
( [ 0 , 2 np . pi , −1,
1 ] ) 17 plt . espectáculo( )
18
19 y = np. porque ( x ) 20
plt . parcela ( x , y ) 21 plt .
título ( ' y=cos ( x ) ' ) 22 plt . etiqueta x
( ' ' ) 23 plt . ylabel ( ' ' ) 24X
plt . cuadrícula ( ) 25 plt . yeje
( [ 0 , 2 np . pi , −1,
1 ] ) 26 plt . espectáculo( )
27
Este script de Python proporciona los gráficos como se muestra en la Figura 23.3.
Ejercicio 23.3.1. Crear funciones de Python para convertir entre radianes y grados.
Tenemos eso:
126
Machine Translated by Google
Cree una función que encuentre el ángulo A (en grados) en función de los argumentos de entrada (a,c), (b,c) y
(a,b) respectivamente.
Utilice, por ejemplo, un tercer "tipo" de entrada para definir los diferentes tipos anteriores.
Use su función anterior r2d() para asegurarse de que la salida de su función esté en grados y no en radianes.
a
pecado(A) = → A = arcosen(a ) (23.12)
C C
a
bronceado(A) = → A = arctan(a ) (23.14)
b b
2c 2 = un 2
+ segundo
(23.15)
1 >>> a=5 2
>>> b=8 3 >>>
c = raíz cuadrada ( a 2+b 2)
4
127
Machine Translated by Google
2 2 c = un 2
+ segundo
− 2ab cos(C) (23.16)
Asegúrese de agregar etiquetas y una leyenda y use diferentes estilos de línea y colores para las
gráficas.
23.4 Polinomios
Un polinomio se expresa como:
n−1
+ p2x
norte
donde p1, p2, p3, ... son los coeficientes del polinomio.
Web:
https://docs.scipy.org/doc/numpy1.13.0/reference/routines.polynomials.polynomial.html
Otros recursos:
128
Machine Translated by Google
129
130
Machine Translated by Google
capitulo 24
Matrix es un caso especial de matriz bidimensional donde cada elemento de datos tiene
estrictamente el mismo tamaño.
Las matrices son estructuras de datos muy importantes para muchos cálculos matemáticos y
científicos.
15346
un = 6389 (24.2)
1534457
un = 87893 (24.3)
131
Machine Translated by Google
15
45
un = (24.4)
32
78
Python no tiene un tipo incorporado para matrices. Sin embargo, podemos tratar la lista de una
lista como una matriz.
Aquí hay un ejemplo de cómo podemos implementar un vector y una matriz en estándar
Pitón:
1 un = [ 1 , 3, 7 , 2]
2
3 imprime ( ”a =" , a)
4
6A=[[1[5 , 3 , 7 , 2],
7 [6 , 8 , −9, 0 ] , 1
8 −7, 1 1 , 2]],
9
10 imprime ( ”A =" , A)
Entonces, podemos definir vectores y matrices con Python estándar, pero Python
estándar no admite la manipulación y el cálculo de ellos.
132
Machine Translated by Google
A continuación, verá cómo podemos usar NumPy para crear vectores y matrices y
manipularlos usando NumPy:
5 imprime ( ”a =" , a)
6
9 A = np. matriz ( [ [ 1 [ 5 [ 6 , 3, 7, ,
10 , 2 ] , −9, 0 ] ,
11 8 , −7, 1 1 , 12]])
12
13
14 imprime ( ”A =" , A)
15
dieciséis
17
18
21
22 B = np. matriz ( [ [ 1 [ 3 ,
23 0 ] , , −2]] )
24
25 C = A + B 26
imprimir (C)
27
28
29 C = A. punto (B) 30
letra (C)
31
32 C = A. transponer ( ) 33
imprimir (C)
24.2.1 Vectores
Use np.array() cuando defina vectores:
1 importar numpy como np
2
5 imprime ( ”a =" , a)
133
Machine Translated by Google
24.2.2 Matrices
También puede usar np.array() al definir matrices, pero es incluso mejor usar
np.matrix().
El objeto de matriz numpy es una subclase del objeto de matriz numpy y está hecho a medida
para matrices. Las matrices numpy son estrictamente bidimensionales, mientras que las
matrices numpy pueden tener cualquier dimensión.
Ejemplo:
1 importar numpy como np
2
6 imprime ( ”A =" , A)
A R nxm
B R nxm
Entonces
nxm
C=A+B R
Ejemplo:
0 1 −2
un = (24.5)
−3
103
B= (24.6)
−2
134
Machine Translated by Google
Entonces obtenemos:
0 1 −2 103 0 + 1 1 + 0 −2 111
A+B = = = (24.7)
−3 −2 + 3 −3 − 2 −5
8
9 C = A + B 10
imprimir (C)
Obtenemos:
1 [[11][1
2 −5]]
A R nxm
B R nxm
Entonces
nxm
C = UN − segundo R
Ejemplo:
0 1 −2
un = (24.8)
−3
135
Machine Translated by Google
103
B= (24.9)
−2
Entonces obtenemos:
0 1 −2 103 0 − 1 1 − 0 −2 − 3 −1 1 −5
A−B= = =
−3 −2 −3 − (−2) −1 (24.10)
Obtenemos:
1 [[ −1 1 ] 2 [−5
−1]]
nxm
A R
B R mxp
Entonces
C = AB R nxp
136
Machine Translated by Google
Dónde
norte
cjk = ajlblk
l=1
Ejemplo:
0 1 −2
un = (24.11)
−3
103
B= (24.12)
−2
Entonces obtenemos:
0 1 −2 103
AB =
−3 −2
0 ∙ 1 + 1 ∙ 3 0 ∙ 0 + 1 ∙ (−2) −2 ∙ 3 −2
= = (24.13)
1 − 3 ∙ 3 −2 ∙ 0 − 3 ∙ (−2) −11 6
Esto da:
1 [ [ 3 −2] 2 [−11
6]]
137
Machine Translated by Google
7 [ 3 , −2]] )
8
9 #Al terna ti va 1 10
C = A. punto (B) 11
imprimir (C)
12
13 #Al terna ti va 2 14
C = np . punto (A,B) 15
letra (C)
dieciséis
17 #Al terna ti va 3 18
C = np . estera (A) np . tapete (B) 19
estampado (C)
Listado 24.7: Multiplicación de matrices en Python Soluciones alternativas
Como se muestra en el ejemplo, puede usar una sintaxis diferente. Las 3 alternativas del ejemplo
dan el mismo resultado. Intentalo.
En la multiplicación de matrices, las matrices no necesitan ser cuadráticas, pero las dimensiones
internas deben ser las mismas. El tamaño de la matriz resultante serán las dimensiones exteriores.
Ver Figura 24.1.
AB = BA (24.14)
(A + B)C = AC + BC (24.16)
C(A + B) = CA + CB (24.17)
Cree un script de Python donde verifique que las reglas anteriores sean correctas.
138
Machine Translated by Google
La transformada de una matriz se forma convirtiendo todas las filas de una matriz dada en
columnas y viceversa.
12
dieciséis
17
21
1 [ [ 0 −2] [ 1
2 −3]]
3
4 [ [ 1 3 ] [ 0 −2]
5
139
Machine Translated by Google
6 [48]]
7
8 [ [ 1 2 −6] [ 4 −3
9 −2]]
24.2.8 Determinante
Dada una matriz A el Determinante viene dado por:
det(A) = |A|
un = a11 a12
(24.20)
a21 a22
Tenemos:
Ejemplo:
12
un = (24.22)
34
Obtenemos:
Ejemplo de pitón:
1 importar numpy como np 2
importar numpy. linalgasla
3
4 A = np. matriz ( [ [ 1 [ 3 , ,
5 , 2]4]])
6
7 Adet = la . de t (A)
8
9 impresión (Adet)
Listado 24.9: Determinante
140
Machine Translated by Google
Esto da:
1 −2.0000000000000004
Para una matriz cuadrada A, la inversa se escribe A−1 . Cuando A se multiplica por A−1, el
resultado es la matriz identidad I. Las matrices no cuadradas no tienen inversas.
Tenemos eso:
a11 a12
un = (24.25)
a21 a22
−1 1 a22 −a12
A = (24.26)
det(A) −a21 a11
Ejemplo de pitón:
1 importar numpy como np 2
importar numpy. linalgasla
3
7 Ainv = la . en v (A)
8
9 imprimir ( Ainv )
141
Machine Translated by Google
x1 + 2x2 = 5 (24.27)
hacha = b (24.29)
−1
x = un segundo
(24.30)
Obtenemos:
12
un = (24.31)
34
5
segundo =
6
(24.32)
x1
x= (24.33)
x2
Escritura de Python:
1 importar numpy como np 2
importar numpy. linalgasla
3
4 A = np. matriz ( [ [ 1 [ 3 , ,
5 , 2]4]])
6
7 b = np. matriz ( [ [ 5 ] ,
142
Machine Translated by Google
8 [6]])
9
10 Ainv = la . en v (A)
11
14 imprimir ( x )
1 [[ −4. ] [ 4 .
2 5]]
Escritura de Python:
3 A = np. matriz ( [ [ 1 [ 3 , ,
4 , 2]4]])
5
6 b = np. matriz ( [ [ 5 ] ,
7 [6]])
8
¡Nota! La matriz A debe ser cuadrada y de rango completo, es decir, la matriz inversa debe existir.
En muchos casos no podemos encontrar la matriz inversa, por ejemplo, cuando la matriz no es cuadrática.
Encontrar la matriz inversa para matrices grandes también requiere mucho tiempo.
Escritura de Python:
143
Machine Translated by Google
7 b = np. matriz ( [ [ 5 ] [ 6 ] [ 9 ] ] ) ,
8 ,
9
10
11 #x = np. Linalg. resolver (A, b) #No funciona porque la inversa (A) no funciona
existe
12
13
16 imprimir ( x )
1 [[ −3. 5 ] [ 4 . 1 7 8 5 7 1 4
2 3]]
24.4 Ejercicios
A continuación encontrará diferentes ejercicios a su propio ritmo que debe realizar y resolver por su
cuenta. ¡La única forma de aprender Python es hacer muchos ejercicios!
x1 + 2x2 = 5 (24.34)
Ejercicio 24.4.2. Suma, resta y multiplicación de matrices mediante bucles For anidados
Suponga que no puede realizar sumas, restas y multiplicaciones de matrices como se muestra en
los ejemplos anteriores.
144
Machine Translated by Google
3A=[[1[5[6 ,3, ,
4 , 7]8,
5 −9] , , −7, 1 1 ] ]
6
, 3,
7 segundo = [ [ 2 5 ] [ 5 , −9, −9] , [ 6 ,
8 1]]
9 , 8,
10
13
dieciséis
Debe probar su función haciendo los cálculos a mano y usando la funcionalidad numpy.
Compare los resultados y asegúrese de obtener el mismo
respuestas
145
Machine Translated by Google
capitulo 25
números complejos en
Pitón
z = a + jb (25.1)
Re(z) = a, Im(z) = b
z = a − jb (25.2)
z = rejθ (25.3)
146
Machine Translated by Google
Dónde:
2
r = |z| = un + segundo 2
(25.4)
b θ = arctan (25.5)
a
Para sumar o restar dos números complejos, simplemente sumamos (o restamos) sus partes
reales y sus partes imaginarias.
jθ1
z1 = r1e (25.6)
jθ2
z2 = r2e (25.7)
Multiplicación:
j(θ1+θ1)
z3 = z1z2 = r1r1e (25.8)
147
Machine Translated by Google
División:
jθ1
z1 r1e r1
z3 = = = y j(θ1−θ2) (25.9)
z2 r2e jθ2 r2
https://docs.python.org/3/library/cmath.html
Para obtener más información sobre las funciones de la biblioteca estándar de Python,
ver:
https://docs.python.org/3/library/
a = 5 + 3j (25.10)
148
Machine Translated by Google
b = 1 1j (25.11)
En Python podemos definir los números complejos y realizar operaciones básicas (+,
, *, /) como esta:
1 un = 5 + 3 j 2 segundo =
11j
3
4c=a+b5
imprime ( c )
6
7 re = un − segundo
8 imprimir ( re )
9
10 mi = un segundo
11 letra ( e )
12
13 f = a / b 14
imprimir ( f )
Listado 25.1: Números complejos básicos en Python
1 importación cmath
2
3 x = 2 4 y = −3
10
11 imprimir ( z . conjugar ( ) )
12
dieciséis
17
149
Machine Translated by Google
capitulo 26
Ecuaciones diferenciales
En las aplicaciones, las funciones generalmente representan cantidades físicas, las derivadas
representan sus tasas de cambio y la ecuación diferencial define una relación entre las dos.
Debido a que tales relaciones son extremadamente comunes, las ecuaciones diferenciales
desempeñan un papel destacado en muchas disciplinas, incluidas la ingeniería, la física, la
economía y la biología.
dy
= f(t, y), y(t0) = y0 dt (26.1)
x˙ = −ax + bu (26.2)
Tenemos lo siguiente:
• a, b Constantes
150
Machine Translated by Google
Con Python have podemos resolver estas ecuaciones diferenciales de muchas maneras diferentes.
Podemos usar los llamados solucionadores ODE o podemos hacer una versión discreta de las
ecuaciones diferenciales usando métodos de discretización como Euler, etc.
Con los solucionadores de EDO, Python puede resolver estas ecuaciones numéricamente. Las
ecuaciones diferenciales de orden superior deben reformularse en un sistema de ecuaciones
diferenciales de primer orden.
x˙ = hacha (26.3)
donde a = − 1
T, donde T se define como la constante de tiempo del sistema.
6 # Parámetros
7T=58a
= −1/T
9
10 x0 = 1 11
t=0
12
13 tstart = 0 14 tstop
= 25
15
18 x = [ ] 19
x = np . ceros ( tstop +1)
20
151
Machine Translated by Google
22
23
28
5 # Parámetros
6T=5
152
Machine Translated by Google
7 a = −1/T
8
9x0 = 1
10 t = 0
11
12 tstart = 0 13 tstop
= 25 14 inc remen t
=1
15 norte = 25
dieciséis
20 x = np. Exp ( a t) x0
21
22
Este código Python alternativo proporciona el mismo gráfico que se muestra en la Figura 26.1.
Resolver ecuaciones diferenciales como se muestra en este ejemplo funciona bien, pero el problema
es que primero tenemos que encontrar manualmente (con lápiz y papel) la solución a la ecuación
diferencial.
Una alternativa es usar solucionadores para ecuaciones diferenciales ordinarias (ODE) en Python.
En los ejemplos y tareas a continuación, aprenderemos cómo podemos usar estos solucionadores
ODE integrados.
Otro enfoque consiste en resolver tales ecuaciones desde "cero" haciendo una versión discreta de
la ecuación diferencial. Este enfoque se presenta más adelante en este libro de texto (capítulo 35).
153
Machine Translated by Google
https://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.odeint.html
https://docs.scipy.org/doc/scipy0.14.0/reference/generated/scipy.integrate.ode.html
x˙ = hacha (26.5)
donde a = − 1
T,
donde T se define como la constante de tiempo del sistema.
La sintaxis es la siguiente:
1 x = od ei nt (nombre de función , x0 , t)
Donde tenemos:
functioname: Función que devuelve valores derivados en los valores x y t solicitados como dxdt =
model(x,t)
t: Puntos de tiempo en los que se debe informar la solución. A menudo se calculan puntos internos
adicionales para mantener la precisión de la solución, pero no se notifican.
10 x0 = 1 11 t = np.
13
154
Machine Translated by Google
18
19 dxdt = a x
20
21 volver dxdt
22
23
24 # Resuelve ODE
25 x = od e nt ( mydi f f 26 print , x0 , t)
(x)
27
28
10 T = 5
11a = −1/T
12 x0 = 1 13 t = np .
15
19 dxdt = a x
20
21 volver dxdt
22
23
24 # Resuelve ODE
25 x = od e nt ( mydi f f 26 print , x0 , t , argumentos =(a , ) )
(x)
27
28
, 25 , 0 , 1])
155
Machine Translated by Google
36 plt. espectáculo ( )
En el ejemplo modificado tenemos los parámetros usados en la ecuación diferencial (en este caso
a) como argumento de entrada. Al hacer esto, es muy fácil cambiar los valores de los parámetros
utilizados en la ecuación diferencial sin cambiar el código de la ecuación diferencial.
1a = −0.2
2 x = od ei nt ( mydi ff , x0 , t , argumentos =(a , ) )
3
4 a = −0.1 5 x
= od ei nt ( mydi ff , x0 , t , argumentos =(a , ) )
dx
= −y (26.6)
dt
dy
=x (26.7)
dt
El código de Python es casi similar a los ejemplos anteriores, pero necesitamos hacer un pequeño
truco para que funcione.
código pitón:
156
Machine Translated by Google
10 # Condición inicial en 11 z0 = [ 1 1 ]
,
12
13
dieciséis
21
25
26 # Resuelve ODE
27 z = od e nt ( mydi f f 28 , z0 , t)
print ( z )
29
30 x = z [ : 31 y = z [ : ,0]
,1]
32
33
También podemos reescribir las ecuaciones diferenciales así (¿para que sea más fácil de
entender?):
dx1
= −x2 (26.8)
dt
dx2
= x1 (26.9)
_
157
Machine Translated by Google
10 # I nitialcon di ti on 11 xinit = [ 1 1 ]
,
12
13
dieciséis
21
25
26 # Resuelva ODE
27 x = od e nt ( mydi f f 28 , xinit , t)
print ( x )
29
30 x1 = x [ : ,0 ]
158
Machine Translated by Google
31 x2 = x [ : ,1]
32
33
2
(1 + t ) ¨w + 2tw˙ + 3w = 2 (26.10)
¡Nota! No se confunda porque en este ejemplo se usa w y no x o y. Todos estos son solo
parámetros o nombres de variables.
¡Nota! ˙w = dw d 2w
y ¨w = dt2
dt
Primero, debemos reescribir la ecuación para obtener la derivada más alta sola en el lado
izquierdo de la ecuación:
2 − 2tw˙ − 3w
w¨ = (26.11)
1+t2
159
Machine Translated by Google
w = x1 (26.12)
w˙ = x2 (26.13)
x˙ 1 = x2 (26.14)
=
2 − 2tx2 − 3x1 1
x2 (26.15)
+t2
código pitón:
13
dieciséis
25
26 # Resuelva ODE
27 x = od e nt ( mydi f f 28 , xinit , t)
print ( x )
29
30 x1 = x [ : 31 x2 = x [ : ,0]
,1]
32
33
160
Machine Translated by Google
40 plt. cuadrícula
( ) 41 plt . eje ( [ 0 , 5 , −1, 2 ] )
42 plt . Mostrar ( )
Listado 26.7: xxx
26.5 Ejercicios
El modelo es el siguiente:
161
Machine Translated by Google
x˙ = bx − px2 (26.18)
Utilice uno de los solucionadores de ODE en Python como se muestra en los ejemplos anteriores.
x˙ = hacha + b (26.19)
1 Donde a = − T , donde T se define como la constante de tiempo del sistema. Podemos
establecer b = 1.
x˙ = −ax + bu (26.20)
Tenemos lo siguiente:
162
Machine Translated by Google
• a, b Constantes
Donde t es el tiempo de simulación, F(t) es una fuerza externa aplicada al sistema, c es la constante
de amortiguamiento del resorte, k es la rigidez del resorte, m es una masa.
163
Machine Translated by Google
x˙(t) es la primera derivada de la posición, que es igual a la velocidad del objeto (m).
x¨(t) es la segunda derivada de la posición, que es igual a la aceleración del objeto (m).
Use sus habilidades aprendidas de los ejemplos anteriores para simular este sistema. Utilice uno de los
solucionadores de ODE en Python.
Use uno de los solucionadores de EDO en Python para resolver y trazar los resultados de la siguiente
ecuación diferencial en el intervalo [t0, tf ]:
1
+1+t w = cos(t) 3w (26.22)
2
Use uno de los solucionadores de ODE en Python para resolver y trazar los resultados de las siguientes
ecuaciones diferenciales:
x˙ 1 = x2 (26.23)
b
X2 =−
gramo x1 x2 (26.24)
r mr2
Las ecuaciones diferenciales anteriores son un modelo simplificado de un péndulo donde m es la masa,
r es la longitud del brazo del péndulo, g es la gravedad y b es un coeficiente de fricción.
En el modelo, x1 es la distancia desde el punto de partida (que es cuando el péndulo cuelga hacia
abajo) y x2 es la velocidad.
164
Machine Translated by Google
Suponga que, por ejemplo, retira el péndulo del punto de partida y luego lo deja caer,
¿qué sucede entonces? Puede, por ejemplo, utilizar las condiciones iniciales x1(0) = 0,5
y x2(0) = 0.
Explicar los resultados de la simulación y verlos en relación con el mundo real. ¿Tienen
sentido los resultados de la simulación?
165
Machine Translated by Google
capitulo 27
Interpolación
La interpolación se utiliza para estimar puntos de datos entre dos puntos conocidos. La
técnica de interpolación más común es la interpolación lineal.
numpy.interp
https://docs.scipy.org/doc/numpy/reference/generated/numpy.interp.html
scipy.interpolar https://
docs.scipy.org/doc/scipy/reference/tutorial/interpolate.html
4x=[15y , 2, 3]
=[3 , 2, 0]
6
7 x nuevo = 2. 5
8
13
166
Machine Translated by Google
5x = np. arreglar ( 0 1 0 ) 6 y =, np .
exp(−x / 3 . 0 ) 7 f = interpolar .
interp 1 d ( x , y )
8
9 xnuevo = np. ar an ge ( 0 10 , 9 , 0 1)
ynew = f ( xnew ) # usa la función de interpolación devuelta por ' interp 1 d
'
'o '
11 plt. plot ( x 12 plt . , y , , xnuevo , nuevo , '' )
mostrar ( )
167
Machine Translated by Google
11
168
Machine Translated by Google
En la Figura 27.3 vemos que la interpolación cúbica da buenos resultados basados en la función
coseno que usamos en este ejemplo.
27.1 Ejercicios
A continuación encontrará diferentes ejercicios a su propio ritmo que debe realizar y resolver por su
cuenta. ¡La única forma de aprender Python es hacer muchos ejercicios!
169
Machine Translated by Google
También debe trazar los puntos de datos y los datos interpolados en el mismo gráfico.
170
Machine Translated by Google
171
Machine Translated by Google
capitulo 28
En el capítulo anterior encontramos puntos interpolados, es decir, encontramos valores entre los
puntos medidos usando la técnica de interpolación. Sería más conveniente modelar los datos como
una función matemática y=f(x). Entonces podríamos calcular fácilmente cualquier dato que queramos
basándonos en este modelo.
Usaremos Python para crear un modelo de datos empíricos. Es importante tener en cuenta que estos
modelos son buenos solo en la región en la que hemos recopilado datos.
Estas técnicas utilizan un polinomio de grado N que se ajusta mejor a los datos Y en un sentido de
mínimos cuadrados. Un polinomio se expresa como:
n−1
+ p2x
norte
Podemos usar la función de ajuste de curvas en la biblioteca de Scipy Python para ayudarnos con el
ajuste de curvas.
https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curve fit.html
y = hacha + b (28.2)
172
Machine Translated by Google
Código Python:
3x=[04y= , 1 , 2 , 3 , 4 , 5]
[15 , 10, 9 , 6 , 2 , 0]
5
12 imprimir ( popt )
Listado 28.1: Ejemplo de ajuste de curvas
La función de ajuste de curva devuelve dos elementos, que podemos extraer y pcov. El argumento
popt son los parámetros de mejor ajuste para a y b.
La variable pcov contiene la matriz de covarianza, que indica las incertidumbres y correlaciones
entre parámetros.
[2.91428571 14.28571429]
A continuación, también es una buena idea trazar los datos reales en el mismo gráfico que el modelo
para comparar.
5x=[0 , 1, 2, 3, 4 , 5]
173
Machine Translated by Google
6y=[15 , 10, 9 , 6 , 2 , 0]
7
8
, X ,y)
12 popt, pcov = curvefit (li nearmodel
13
14 imprimir ( popt )
15
'o
16 plt. trama ( x ,y, ')
17
18
19 xstart = −1 20 xst op
= 6 21 inc remen t =
0. 1
22 xmodelo = np. ar an ge ( xstart inc rement ) , xstop ,
23
24 a = posición [ 0 ] 25
b = posición [ 1 ]
26
27 ymodelo = a xmodelo + b
28
norte n−1
y(x) = a0x + a1x + ... + an−1x + an (28.4)
norte n−1
y(x) = a0x + a1x + ... + an−1x + an (28.5)
174
Machine Translated by Google
Usaremos Python para encontrar y comparar los modelos usando diferentes órdenes del polinomio.
Solo tenemos 6 puntos de datos, por lo que un modelo con un orden superior a 5 no hará
sentido.
Código Python:
175
Machine Translated by Google
5x=[06y=[1 , 1 , 2 , 3 , 4 , 5]
5 , 10, 9 , 6 , 2 , 0]
7
8
14 imprimir ( popt )
15
19 xstart = −1 20 xst op = 6 21
inc remen t = 0. 1 22
xmodel = np . ar an ge ( xstart inc
rement ) , xstop ,
23
24 a = posición [ 0 ] 25 b =
posición [ 1 ] 26 c = posición
[2]
27
Podemos cambiar el código Python para hacer un 3.order, 4.order y 5.order también.
Aquí está el código de Python para un modelo de orden 5 (basado en eso, puede crear código
fácilmente para los modelos de orden 3 y 4):
5x=[06y=[1 , 1 , 2 , 3 , 4 , 5]
5 , 10, 9 , 6 , 2 , 0]
7
8
9 def li nearmodel ( x , a , b , C , d , mi , f ) :
10 volver a x 5+b x 4+c x 3+d x 2+e x+f
11
14 imprimir ( popt )
15
176
Machine Translated by Google
19 xinicio = −1
20 xst op = 6 21
inc remen t = 0. 1
22 xmodelo = np. ar an ge ( xstart inc rement ) , xstop ,
23
24 a = punto [ 0 ] 25
b = punto [ 1 ] 26 c =
punto [ 2 ] 27 d =
punto [ 3 ] 28 e =
punto [ 4 ] 29 f =
punto [ 5 ]
30
La Figura 28.2 muestra el gráfico generado por el código para los diferentes modelos.
Como era de esperar, los modelos de orden superior coinciden cada vez mejor con los datos.
¡Nota! El modelo de quinto orden coincide exactamente porque solo había seis puntos de datos
disponibles.
Es importante tener en cuenta que estos modelos son buenos solo en la región.
177
Machine Translated by Google
código pitón:
4 # Datos originales 5 x = [ 0
236y=[15, 1, , , 4 , 5]
, 10, 9 , 6 , 2 , 0]
7
10
3 2
y(x) = −0.06x + 0,54x − 4,1x + 14,7 (28.8)
178
Machine Translated by Google
Extiendamos el código creando diferentes modelos con diferentes órdenes. Para una fácil
comparación de diferentes modelos en el mismo programa, podemos usar un bucle For como se
muestra en el ejemplo de código a continuación.
4 # Datos originales 5 x = [ 0 3 6 y = [ 1
5 , 1, 2, , 4 , 5]
, 10, 9 , 6 , 2 , 0]
7
0.1
dieciséis
19
20 para el rango de pedido del modelo ( pedido de inicio , poner orden , 1):
21
22 # Encontrando el Modelo p =
23 np . polifit ( x ,y, orden del modelo)
179
Machine Translated by Google
24
25 imprimir (pag)
26
28.3 Ejercicios
A continuación encontrará diferentes ejercicios a su propio ritmo que debe realizar y resolver por su
cuenta. ¡La única forma de aprender Python es hacer muchos ejercicios!
y = hacha + b (28.9)
180
Machine Translated by Google
10 23 20
45 30 60
40 82 50
111 60 140
70 167 80
198 90 200
100 220
0 0
1,7 2,6
1,9 5 3,6
2,60 4,03 6,45
2,92 11.22
4,04 5,24 30.61
181
Machine Translated by Google
Grafique el resultado en la misma gráfica y compárelos. Agregue xlabel, ylabel, título y una leyenda
al gráfico y use diferentes estilos de línea para que el usuario pueda ver fácilmente la diferencia.
182
Machine Translated by Google
capitulo 29
Y = Φθ (29.1)
Dónde:
θ es un vector con los parámetros desconocidos en los que queremos encontrar los valores.
Supongamos que tenemos algunos datos y queremos encontrar un modelo matemático que se ajuste
a los datos.
2 2 2 2 + mi + mi + ... + mi 2 3
V (θ) = mi 1 metro
(29.2)
dV
=0 (29.3)
dθ
183
Machine Translated by Google
Derivaremos esta ecuación más adelante, pero primero debemos pasar por algunos ejemplos básicos.
y(u) = au + b (29.5)
184
Machine Translated by Google
Queremos encontrar los parámetros desconocidos del modelo a y b usando el método de mínimos
cuadrados en Python.
Primero, necesitamos ponerlo en forma de mínimos cuadrados.
Tenemos:
Y = Φθ (29.9)
Entonces obtenemos:
0.8 = a1 + b (29.10)
3.0 = a2 + b (29.11)
0.8 = a1 + b (29.12)
0.8 11
a
3.0 = 21 (29.13)
b
4.0 31
185
Machine Translated by Google
7 Y = np. matriz ( [ [ 0 . 8 ] [ 3 . 0 ] [ 4 . 0 ] ] ) ,
8 ,
9
10
11
12 #Método 1 − Ax = b (No funciona en este caso) 13 #theta = np . Linalg. solve (Phi, Y) #No funciona porque es
inversa (Phi)
no existe
14
15
16 #Method 2 − u si ngb uil t −in Función de mínimos cuadrados en NumPy 17 theta = np . Linalg. lstsq (Phi, Y, rcond=Ninguno) [ 0 ]
18
19 imprimir ( theta )
20
21
22 #Método 3 − Implementación de mínimos cuadrados desde cero 23 theta = np . Linalg. en v ( Phi . transponer ( ) np . mat
( Phi ) ) Phi .
transponer ( ) Y
24
25 letra ( theta )
1 [[1.6]
2 [0.6]]
186
Machine Translated by Google
capitulo 30
Diferenciación numérica
En Python normalmente nos ocupamos de los cálculos numéricos, por lo que nos
centraremos en encontrar un enfoque numérico y usar diferentes funciones para la
diferenciación numérica.
dy = ∆y =
y2 − y1
(30.2)
dx ∆x x2 − x1
Podemos usar la función NumPy diff() para implementar este enfoque numérico. A
continuación se proporcionarán varios ejemplos.
2y=x (30.3)
187
Machine Translated by Google
código pitón:
1 importar numpy como np 2
importar mat pl o tli b . py pl otasplt
3
5 xstart = −2 6 xst op =
2. 1 7 inc remen t = 0.
1
8 x = np. ar an ge (xinicio xstop , inc remen t ) ,
9
10 y = x 2
11
12 plt. trazar ( x , y )
13
14
15 xstart = −2 16 xst op
= 3 17 inc remen t =
1 18 x = np . ar an ge ( xstart
inc rement ) , xstop ,
188
Machine Translated by Google
19
20 y = x 2;
21
dy
= 2x (30.4)
dx
dy
(30.5)
dx(x = −2) = −4
dy
(30.6)
dx(x = −1) = −2
dy
(30.7)
dx(x = 0) = 0
dy
(30.8)
dx(x = 1) = 2
189
Machine Translated by Google
dy
(30.9)
dx(x = 2) = 4
código pitón:
1 importar numpy como np 2
importar mat pl o tli b . py pl otasplt
3
5 xstart = −2 6 xst op =
3 7 inc remen t = 1
11 y = x 2;
12
13
16 d yd xex ac t = 2 x
17
18 imprimir ( d yd xex ac t )
19
22
23
30 xinicio = −2 31 xst op
=2
32
35
Vemos que hay algunas diferencias entre las soluciones exactas y las soluciones numéricas.
190
Machine Translated by Google
código pitón:
1 importar numpy como np 2
importar mat pl o tli b . py pl otasplt
3
5 xstart = −2 6 xst op
= 2. 1 7 inc remen t =
0. 1
8 x = np. ar an ge (xinicio xstop , inc remen t ) ,
9
10 y = x 2;
11
12
15 d yd xex ac t = 2 x
dieciséis
19
20
191
Machine Translated by Google
22
25 xinicio = −2 26 xst op
=2
27
30
Vemos que las soluciones numéricas se acercan mucho a las soluciones exactas.
Cuando h → 0, debemos esperar que las soluciones numéricas coincidan exactamente
con las soluciones exactas.
192
Machine Translated by Google
2
3y=x + 2x −x+3 (30.10)
Encuentre dy analíticamente (utilice "bolígrafo y papel").
dx
Defina un vector x de 5 a +5 y use la función diff para aproximar la derivada y con respecto
a x (∆y/∆x).
Compare los datos en una matriz 2D y/o grafique el valor exacto de la aproximación y el
dx
dy en el mismo gráfico.
y = sen(x) (30.11)
n−1
(30.13)
norte
dp(x) n−2
= p1nxn−1 + p2(n − 1)x dx + ... + pn (30.14)
Realizar la diferenciación de polinomios en fácil porque solo necesita usar las reglas básicas
de diferenciación:
n−1
f(x) = axn → f (x) = un ∙ norte ∙ x (30.15)
193
Machine Translated by Google
Ejemplos:
3 2
f(x) = 4x → f(x) = 12x (30.17)
Fácilmente podríamos hacer una función general en Python que pudiera manejar esto. Si
no quiere hacer eso, puede usar la función polyder() NumPy.
Dado el polinomio
3
p(x) = 2 + x (30.19)
3+0∙x 2 +0∙x+2
p(x) = 1 ∙ x (30.20)
2
Sabemos que: p(x) = 3x
3p=[1 , 0, 0, 2]
4
7 imprimir (dpdx)
Listado 30.4: Diferenciación en polinomios
Los resultados:
dpdx = [3 0 0]
2 + 0 ∙ 2x + 0 ∙ 1
p(x) = 3 ∙ x (30.21)
194
Machine Translated by Google
Aquí hemos usado la función poly1d() en la biblioteca NumPy. ¡Asegúrate de probar este
ejemplo!
2 −x+3
y = x 3 + 2x (30.22)
2 2
y = (3x + 6x + 9)(x + 3x) (30.23)
195
Machine Translated by Google
24
196
Machine Translated by Google
capitulo 31
Integracion numerica
f(x)dx (31.1)
a
Dado y = f(x), la aproximación del Área (A) bajo la curva se puede encontrar dividiendo el área
en rectángulos y luego sumando la contribución de todos los rectángulos:
n−1
Aproximamos la integral usando n trapecios formados usando segmentos de línea recta entre
los puntos (xi−1, yi−1) y (xi , yi) para 1 ≤ i ≤ n como se muestra en la figura 31.1.
1 (y0 + y1)∆x
A = y0∆x + (y1 − y0)∆x = 2 2 (31.3)
Dada la función:
2y=x (31.4)
197
Machine Translated by Google
b 3
un
x 2 dx = (31.5)
a
3
La integral de 0 a 1 es:
1
1 2 dx = ≈ 0,3333 x 3 (31.6)
0
Usaremos la regla del trapezoide y la función diff en MATLAB para resolver la integral numérica de x
2 de 0 a 1.
b norte
198
Machine Translated by Google
∆x
norte
Dónde
segundo
− un ∆x = (31.9)
norte
4 un = 0 5
segundo = 1
6 norte = 10
7
8
11 y = x 2;
12
13 yderecha = y [ 1 : ] 14 yizquierda =
y [: −1]
15
dieciséis
21 impresión (A)
22
23
= 0,3350000000000001
En el ejemplo anterior, implementamos nuestra propia integración desde cero. Ese siempre es un buen
enfoque porque entonces llegamos a conocer las matemáticas detrás.
Pero, por lo general, desea utilizar una función predefinida que haga el trabajo por usted.
El subpaquete SciPy scipy.integrate contiene varias funciones para aproximar numéricamente integrales
definidas.
199
Machine Translated by Google
Eche un vistazo más de cerca a la documentación en prder para obtener una descripción general de
las diferentes funciones que están disponibles.
https://docs.scipy.org/doc/scipy/reference/integrate.htmlmodulescipy.integrate
código pitón:
1 de s ci py importar integrar
2
3 un = 0 4
segundo = 1
6 def y ( x ) :
7 vuelve x 2
8
11 imprimir ( yo )
Yo = (0.33333333333333337, 3.700743415417189e15)
Consulte lo siguiente para obtener información detallada sobre la función trapz: https://
docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.trapz.htmlscipy.integrate.trapz
código pitón:
3 un = 0 4
segundo = 1
5 norte = 10 6 dx
= ( segundo − un ) / norte
200
Machine Translated by Google
10 y = x 2;
11
14 imprimir ( yo )
I = 0.33499999999999996 Lo
cual es una buena aproximación cuando sabemos que la respuesta exacta es A = 13
Use algunas de las aproximaciones integrales que se muestran en los ejemplos anteriores
en la siguiente ecuación:
2
3y=x + 2x −x+3 (31.10)
También debe encontrar la solución exacta usando "bolígrafo y papel" para comparar.
Compara el resultado con la solución exacta.
Use algunas de las aproximaciones integrales que se muestran en los ejemplos anteriores
en la siguiente ecuación:
y = sen(x) (31.11)
También debe encontrar la solución exacta usando "bolígrafo y papel" para comparar.
Compara el resultado con la solución exacta.
201
Machine Translated by Google
Use algunas de las aproximaciones integrales que se muestran en los ejemplos anteriores en la
siguiente ecuación:
5y=x −1 (31.12)
También debe encontrar la solución exacta usando "bolígrafo y papel" para comparar.
Compara el resultado con la solución exacta.
n−1
p(x) = p1x + p2x + ... + pnx + pn+1 (31.13)
norte
En Python podemos usar la función polyint para realizar la integración en polinomios. Esta
función funciona de la misma manera que la función polyder que realiza la diferenciación de
polinomios.
2
y = x 3 + 2x −x+3 (31.14)
También debe encontrar la solución exacta usando "bolígrafo y papel" para comparar.
También debe trazar la función en el intervalo [a,b] donde elige diferentes valores para a y b.
202
Machine Translated by Google
31.2 Ejercicios
A continuación encontrará diferentes ejercicios a su propio ritmo que debe realizar y resolver por
su cuenta. ¡La única forma de aprender Python es hacer muchos ejercicios!
V2
W= P dV (31.15)
V1
VP = nRT (31.16)
Dónde:
• P = Presión
203
Machine Translated by Google
• V = Volumen [m3 ]
• T = Temperatura, [K]
También suponemos que el pistón contiene 1 mol de gas a 300 K y que la temperatura es
constante durante el proceso. V1 = 1m3 , V2 = 5m3
Implemente la integral utilizando algunos de los diferentes métodos que se muestran en los
ejemplos anteriores. También debe intentar encontrar la solución exacta usando "lápiz y
papel" para comparar.
204
Machine Translated by Google
capitulo 32
Mejoramiento
2
f(x) = x + 2x + 1 (32.1)
4 xmín = −5 5 xmáx = 5
6 dx = 0. 1
13 y = x 2+2 x+1;
14
15
código pitón:
1 de s ci py import op timi ze
2
205
Machine Translated by Google
3 xmín = −5 4 xmáx = 5
7 def y ( x ) :
8 vuelve x 2+2 x+1
9
10
xmín , xmáx)
11 x min = optimizar . finminbound ( y ,
12
13 impresiones (x min)
xmín = 1.0
Vemos que esta es la respuesta correcta según nuestra gráfica en la Figura 32.1.
2
f(x) = x + 2x + 1 (32.2)
206
Machine Translated by Google
Implemente una función de minimización básica desde cero utilizando un bucle For o un bucle
While.
Asegúrese de probar la función y ver si obtiene la misma respuesta que en el ejemplo anterior.
scipy.optimizar.fmin
scipy.optimize.minimize escalar
scipy.optimizar.minimizar
2 + 2x + 1
f(x) = x (32.3)
scipy.optimizar.fmin
scipy.optimize.minimize escalar
scipy.optimizar.minimizar
f(x) = x 3 − 4x (32.4)
scipyoptimize.fminbound
207
Machine Translated by Google
scipy.optimizar.fmin
scipy.optimize.minimize escalar
scipy.optimizar.minimizar
2 2 2
f(x, y) = (1 − x) + 100(y − x ) (32.6)
208
Machine Translated by Google
Parte VI
209
Machine Translated by Google
capitulo 33
Python es muy poderoso para realizar simulaciones, como simular sistemas dinámicos, es decir, resolver
ecuaciones diferenciales numéricas.
210
Machine Translated by Google
capitulo 34
Ecuaciones diferenciales
En las aplicaciones, las funciones generalmente representan cantidades físicas, las derivadas
representan sus tasas de cambio y la ecuación diferencial define una relación entre las dos.
Debido a que tales relaciones son extremadamente comunes, las ecuaciones diferenciales
desempeñan un papel destacado en muchas disciplinas, incluidas la ingeniería, la física, la
economía y la biología.
dy
= f(t, y), y(t0) = y0 dt (34.1)
x˙ = −ax + bu (34.2)
Tenemos lo siguiente:
• a, b Constantes
211
Machine Translated by Google
Con Python have podemos resolver estas ecuaciones diferenciales en muchos diferentes
maneras.
Podemos usar los llamados solucionadores ODE o podemos hacer una versión discreta de las
ecuaciones diferenciales usando métodos de discretización como Euler, etc.
Con los solucionadores de EDO, Python puede resolver estas ecuaciones numéricamente. Las
ecuaciones diferenciales de orden superior deben reformularse en un sistema de ecuaciones
diferenciales de primer orden.
212
Machine Translated by Google
capitulo 35
Sistemas discretos
Cuando tratamos con computadoras, necesitamos tratar con sistemas discretos.
35.1 Discretización
A veces queremos o necesitamos discretizar un sistema continuo y luego simularlo en Python. Cuando
se trata de simulación por computadora, necesitamos crear una versión discreta de nuestro sistema.
Esto significa que necesitamos hacer una versión discreta de nuestras ecuaciones diferenciales
continuas. La interpolación, el ajuste de curvas, etc. también se basan en un conjunto de valores
discretos (puntos de datos o medidas). Lo mismo con la Diferenciación Numérica y la Integración
Numérica, etc.
A continuación vemos una señal continua frente a la señal discreta para un sistema dado con un
intervalo de tiempo discreto T s = 0,1 s.
x(k + 1) − x(k) x˙ =
(35.1)
ts
213
Machine Translated by Google
Ts es el tiempo de muestreo
Existen muchos otros métodos de discretización, como "Euler hacia atrás", Zero Order Hold (ZOH),
el método de Tustin, etc.
x˙ = −ax + bu (35.2)
dx
¡Nota! ˙x es lo mismo que dt
Tenemos lo siguiente:
• a, b Constantes
x˙ ≈
xk+1 − xk
(35.3)
ts
Ts Intervalo de muestreo
Entonces obtenemos:
xk+1 − xk =
−axk + buk (35.4)
ts
214
Machine Translated by Google
Establecemos a=0.25, b=2 y u=1 (Puedes explorar con otros valores por tu cuenta)
Comenzamos creando el Python Script para la simulación de este sistema:
9 # Parámetros de simulación 10 Ts =
0. 1 11 Tstop =
30 12 uk = 1 #
Respuesta de paso 13 xk = 0 14 N = int
( Tstop /Ts )
# Longitud de simulación 15 data = [ ] 16 datos . agregar (xk)
17
18
19 # Sim ul a ti on 20
for k inr an ge (N) : xk1 = ( 1 −
21 a Ts ) xk + Ts b uk xk = xk1 data . agregar (xk1)
22
23
24
25
, 30, 0, 8])
215
Machine Translated by Google
9 # Parámetros de simulación 10 Ts
= 0. 1 # Tiempo de muestreo 11 Tstop
= 30 # Fin del tiempo de simulación 12 uk = 1 #
Respuesta de paso 13 N = int (Tstop /
Ts) # Sim ul a ti onlongitud 14 x = np . ceros (N+2) #
Inicialización del vector x 15 x [ 0 ] = 0
dieciséis
17
18 # Sim ul a ti on 19
for k inr an ge (N+1) : x [ k+1] =
20 ( 1 − a Ts ) x [ k ] + Ts b uk
21
22
216
Machine Translated by Google
32 plt. cuadrícula
( ) 33 plt . eje ( [ 0 , 3 0 , 0 , 8 ] )
34 plt . mostrar ( )
Listado 35.2: Simulación de un sistema dinámico discreto en Python
Debe probar ambos ejemplos y luego decidir cuál prefiere. Supongo que también hay
muchas otras formas de hacerlo.
35.2 Ejercicios
A continuación encontrará diferentes ejercicios a su propio ritmo que debe realizar y resolver
por su cuenta. ¡La única forma de aprender Python es hacer muchos ejercicios!
El modelo es el siguiente:
217
Machine Translated by Google
x˙ = bx − px2 (35.8)
Encuentre el modelo discreto usando el método Euler Forward a mano e implemente y simule
el sistema en Python usando un For Loop.
dx1
= −x2 (35.9)
_
dx2
= x1 (35.10)
_
Encuentre el sistema discreto y simule el sistema discreto en MATLAB. Resuelva las ecuaciones,
por ejemplo, en el lapso de tiempo [1 1] con valores iniciales [1, 1].
218
Machine Translated by Google
capitulo 36
36.1 Introducción
Por lo general, en una simulación, ejecuta la simulación en un bucle for. Cuando haya
terminado con la simulación, grafique los datos.
Repetimos un ejemplo básico de simulación del capítulo 35.
Establecemos a=0.25, b=2 y u=1 (Puedes explorar con otros valores por tu cuenta)
Comenzamos creando el Python Script para la simulación de este sistema:
9 # Parámetros de simulación
10 Ts = 0. 1 11
Tstop = 30 12 uk
= 1 # Respuesta de paso 13 xk = 0
14 N = int
( Tstop /Ts ) # Longitud de sim ul a ción 15 datos = [ ] 16
datos . agregar
(xk)
17
18
19 # Sim ul a ti on 20
for k inr an ge (N) : xk1 = ( 1
21 − a Ts ) xk + Ts b uk
219
Machine Translated by Google
22 xk = xk1
23 datos . agregar (xk1)
24
25
, 30, 0, 8])
Como puede ver en el código y cuando se ejecuta el código, los resultados de la simulación
se trazan en una sola operación una vez finalizada la simulación, es decir, después del bucle
for.
A veces queremos trazar un valor a la vez dentro del bucle, las llamadas "simulaciones en
tiempo real". Ese también es el caso si queremos trazar datos de un sensor o un proceso
real.
220
Machine Translated by Google
6 d el ay = 1 #Segundos
7
8 para i en rango ( 1 0 ) : y = np .
9 aleatorio . aleatorio ( ) plt . dispersión
10 ( i , y ) plt . pausa (d el ay)
11
12
13 plt. espectáculo ( )
No puede ver el comportamiento real de la gráfica mirando la figura 37.1, por lo que
221
Machine Translated by Google
Si ejecuta el código, verá que el gráfico se actualiza con un nuevo valor cada segundo, como
se especifica en el código.
9 # Parámetros de simulación 10 Ts
= 0. 1 11 Tstop
= 30 12 uk = 1 #
Respuesta de paso
222
Machine Translated by Google
13 xk = 0 14
N = int ( Tstop /Ts ) # Longitud de sim ul a ción 15 data = [ ]
16 data . agregar
(xk)
17
28 plt. espectáculo ( )
No puede ver el comportamiento real de la gráfica mirando la Figura 36.4, por lo que necesita
ejecutar el programa Python usted mismo.
Si ejecuta el código, verá que el gráfico se actualiza con un nuevo valor cada segundo,
como se especifica en el código.
En este ejemplo, hemos bloqueado la escala utilizando el método del eje. Si eliminamos o
comentamos la línea ”plt.axis([0, N, 0, 10])”, obtenemos un gráfico que escala
automáticamente el eje x y el eje y. Lo mejor depende de si conoce la duración de la
simulación desde el principio y conoce el valor mínimo y máximo de los resultados de la
simulación.
223
Machine Translated by Google
La Figura 36.5 muestra el gráfico en tiempo real con escalado automático después de 30
iteraciones para este ejemplo. No puede ver el comportamiento real de la gráfica mirando la
Figura 36.5, por lo que necesita ejecutar el programa Python usted mismo.
Figura 36.5: Simulación en tiempo real de un sistema discreto con escalado automático
Los ejemplos que se muestran muestran el paso de tiempo discreto k en el eje x. Por lo
general, queremos mostrar el tiempo continuo t en su lugar. Algunos pequeños ajustes a los
ejemplos lo hacen posible. Vea el código a continuación:
1 # Simulación en tiempo real de un sistema discreto 2 import
numpy as np 3 import mat
plot o tli b . py pl otasplt
4
9 # Parámetros de simulación
10 Ts = 0. 1
11 Tstop = 30 12
uk = 1 # Respuesta de paso 13 xk
= 0 14 ysc
al emax = 10 15 N = int
( Tstop /Ts ) # Sim ul a tion length 16 data = [ ] 17 data .
agregar (xk)
224
Machine Translated by Google
18
26 t = Ts k
27
31 plt. espectáculo ( )
La figura 36.6 muestra el gráfico final de este ejemplo. No puede ver el comportamiento real
de la gráfica mirando la Figura 36.6, por lo que necesita ejecutar el programa Python usted
mismo.
También podemos agregar algún formato con respecto a la apariencia de la trama (xlabel,
ylabel, título, etc.). El ejemplo de código final se muestra a continuación.
225
Machine Translated by Google
9 # Parámetros de simulación 10 Ts
= 0. 1 11 Tstop
= 30 12 uk = 1 #
Respuesta de paso 13 xk = 0 14 ysc
al emax =
10 15 N = int ( Tstop /Ts ) #
Longitud de simulación 16 datos = [ ] 17 datos . agregar (xk)
18
19
25
33 t = Ts k
34
38 plt. espectáculo ( )
Para crear un gráfico en tiempo real, necesitamos usar el módulo de animación en matplotlib.
Configuramos la figura y los ejes de la forma habitual, pero dibujamos directamente en los
ejes, ax, cuando queremos crear un nuevo cuadro en la animación.
226
Machine Translated by Google
FuncAnimation es una función especial dentro del módulo de animación que nos permite
automatizar la actualización del gráfico. Le pasamos a FuncAnimation() un identificador de la
figura que queremos dibujar, fig, así como el nombre de una función que debe llamarse a
intervalos regulares. Llamamos a esta función animate() y se define justo encima de nuestra
llamada a FuncAnimation().
Todavía en los parámetros de FuncAnimation(), establecemos fargs, que son los argumentos
que queremos pasar a nuestra función de animación (ya que no estamos llamando a animate()
directamente desde nuestro propio código). Luego, establecemos el intervalo, que es el tiempo
que debemos esperar entre las llamadas a animate() (en milisegundos).
Nota: Como argumento para FuncAnimation, observe que animate no tiene paréntesis. Esto es
pasar una referencia a la función y no el resultado de esa función. Si accidentalmente agrega
paréntesis para animar aquí, animar se llamará inmediatamente (solo una vez) y es probable
que obtenga un error
gráfico de adición ( 1 9 xs = [ ] 10 ys = [ ]
, 1 , 1)
11
12
dieciséis
temp c = ronda ( np . aleatorio . aleatorio ( ) , 2)
17
21
25
227
Machine Translated by Google
29
30 # Formatear plot
31 plt . xticks (rotación =45, ha=' derecha' ) plt.
32 subplotsadjust (inferior = 0.30) plt. título ( ' ' )
33 Datos de temperatura
34 plt. ylabel ( 'Temperatura (grados C)' )
35
36 # Configure la función pl ottocall animate ( ) periódicamente 37 a ni = anim a c ión . FuncAnimation (fig, intervalo = 1000) 38 plt.
espectáculo ( )
animar , fargs =(xs , ys ) ,
La figura 37.3 muestra el gráfico final de este ejemplo. No puede ver el comportamiento
real de la gráfica mirando la Figura 37.3, por lo que necesita ejecutar el programa
Python usted mismo.
Código Python:
228
Machine Translated by Google
10
dieciséis
# Parámetros del modelo a =
17 0. 2 5 b = 2
18
19
20 # Parámetros de simulación Ts = 0. 1
21 # Tiempo de muestreo uk = 1 #
22 Respuesta de paso global xk #
23 Como cambiamos xdentro de una función, definimos una variable global
24
28
32
36
48
49 # Configure la función pl ottocall animate ( ) periódicamente 50 a ni = anim a c ión . FuncAnimation (fig, intervalo =100) 51 plt.
Listado 36.7: Simulación en tiempo real de un sistema dinámico discreto con animación
La figura 36.8 muestra el gráfico final de este ejemplo. No puede ver el comportamiento
real de la gráfica mirando la Figura 36.8, por lo que necesita ejecutar el programa
Python usted mismo.
229
Machine Translated by Google
Figura 36.8: Simulación en tiempo real de un sistema dinámico discreto con animación
Blitting es una antigua técnica de gráficos por computadora en la que varios mapas de bits
gráficos se combinan en uno. De esta manera, solo era necesario actualizar uno a la vez,
evitando que la computadora tuviera que volver a dibujar toda la escena cada vez.
Matplotlib nos permite habilitar el blitting en FuncAnimation, pero significa que debemos
volver a escribir cómo funciona parte de la función animate(). Para obtener los verdaderos
beneficios del blitting, debemos establecer un fondo estático, lo que significa que los ejes no
se pueden escalar y ya no podemos mostrar marcas de tiempo en movimiento. Esto significa
que tienes que tomar lo bueno con lo malo. Así que tienes que elegir lo que es más importante
para ti en tus simulaciones.
Ejemplo 36.3.3. Trazado en tiempo real con animación con rendimiento mejorado
mance
Código Python:
5 # Parámetros 6 xlen
= 200 # Número de puntos para mostrar
230
Machine Translated by Google
15
dieciséis
20 # Añadir etiquetas
21 plt. title ( 'Datos de temperatura' ) 22 plt.
xlabel ( 'Muestras' ) 23 plt. ylabel
( 'Temperatura (gradosC)' )
24
27
29
32 #imprimir (temperatura c)
33
43 línea de retorno ,
44
47 animar
,
48 fargs =(ys , ) ,
49 intervalo =100,
50 blit=True ) 51
plt . espectáculo ( )
Listado 36.8: Trazado en tiempo real con animación
La figura 37.4 muestra el gráfico final de este ejemplo. No puede ver el comportamiento real
de la gráfica mirando la Figura 37.4, por lo que necesita ejecutar el programa Python usted
mismo.
231
Machine Translated by Google
Código Python:
1 importar numpy como np 2
importar mat pl o tli b . py pl otasplt 3 import mat pl
o tli b . anim a ción como anim a ción
4
5 # Parámetros
6 N = 200 7 xlen = N
dieciséis
22 # Añadir etiquetas
23 plt. title ( ' Simulación de dxdt = −ax + bu ' ) 24 plt . xlabel
( 'Muestras' ) 25 plt. yetiqueta ( ' ' )
X
26
29
34 # Parámetros de simulación Ts = 0.
35 1 # Tiempo de muestreo uk = 1 #
36 Respuesta de paso
232
Machine Translated by Google
37 global xk # Ya que cambiamos xdentro de una función, definimos una variable gob al
38
42
52 línea de retorno ,
53
Listado 36.9: Simulación en tiempo real de un sistema dinámico discreto con animación y mayor
velocidad
La figura 36.10 muestra el gráfico final de este ejemplo. No puede ver el comportamiento real de la
gráfica mirando la Figura 36.10, por lo que necesita ejecutar el programa Python usted mismo.
https://scipycookbook.readthedocs.io/items/MatplotlibAnimations.html
Otros recursos:
https://learn.sparkfun.com/tutorials/graphsensordatawithpythonandmatplotlib/allplot sensordata
https://stackoverflow.com/questions/11874767/howdoiplotinrealtimeinawhile loopusingmatplotlib
233
Machine Translated by Google
234
Machine Translated by Google
Parte VII
Adquisición de datos
(DAQ) con Python
235
Machine Translated by Google
capitulo 37
37.1 Introducción
Por lo general, queremos trazar los datos del sensor. Podemos graficar guardar los datos en
una matriz y luego graficar los datos al final del programa, pero lo más probable es que
queramos graficar un valor a la vez dentro del bucle, lo que se conoce como "graficación en
tiempo real".
En este capítulo solo mostramos cómo puede trazar los datos de cualquier sensor dado
utilizando este enfoque general. En lugar de los datos reales del sensor, solo usamos el
generador aleatorio en Python.
Para leer los datos reales del sensor, normalmente necesita un dispositivo DAQ (Adquisición
de datos) conectado a su PC o, por ejemplo, un dispositivo Raspberry Pi. En todos los casos,
normalmente necesitará instalar un controlador del proveedor del dispositivo DAQ o del
sensor que está utilizando.
6 d el ay = 1 #Segundos
7
8 para i en rango ( 1 0 ) : y = np .
9 aleatorio . aleatorio ( ) plt . dispersión
10 ( i , y ) plt . pausa (d el ay)
11
236
Machine Translated by Google
12
13 plt. espectáculo ( )
No puede ver el comportamiento real de la gráfica mirando la Figura 37.1, por lo que necesita ejecutar el
programa Python usted mismo.
Si ejecuta el código, verá que el gráfico se actualiza con un nuevo valor cada segundo, como se
especifica en el código.
¡Nota! Si usa Anaconda y Spyder, normalmente necesita cambiar la configuración de cómo se muestran
los gráficos en Spyder.
237
Machine Translated by Google
Para crear un gráfico en tiempo real, necesitamos usar el módulo de animación en matplotlib.
Configuramos la figura y los ejes de la forma habitual, pero dibujamos directamente en los ejes,
ax, cuando queremos crear un nuevo cuadro en la animación.
FuncAnimation es una función especial dentro del módulo de animación que nos permite
automatizar la actualización del gráfico. Le pasamos a FuncAnimation() un identificador de la
figura que queremos dibujar, fig, así como el nombre de una función que debe llamarse a
intervalos regulares. Llamamos a esta función animate() y se define justo encima de nuestra
llamada a FuncAnimation().
Todavía en los parámetros de FuncAnimation(), establecemos fargs, que son los argumentos
que queremos pasar a nuestra función de animación (ya que no estamos llamando a animate()
directamente desde nuestro propio código). Luego, establecemos el intervalo, que es el tiempo
que debemos esperar entre las llamadas a animate() (en milisegundos).
Nota: Como argumento para FuncAnimation, observe que animate no tiene paréntesis. Esto
es pasar una referencia a la función y no el resultado de esa función. Si accidentalmente
agrega paréntesis para animar aquí, animar se llamará inmediatamente (solo una vez) y es
probable que obtenga un error
238
Machine Translated by Google
gráfico de adición ( 1 9 xs = [ ] 10 ys = [ ]
, 1 , 1)
11
12
21
25
36 # Configure la función pl ottocall animate ( ) periódicamente 37 a ni = anim a c ión . FuncAnimation (fig, intervalo = 1000) 38 plt.
espectáculo ( )
animar , fargs =(xs , ys ) ,
La figura 37.3 muestra el gráfico final de este ejemplo. No puede ver el comportamiento real de
la gráfica mirando la Figura 37.3, por lo que necesita ejecutar el programa Python usted mismo.
239
Machine Translated by Google
Blitting es una antigua técnica de gráficos por computadora en la que varios mapas de bits
gráficos se combinan en uno. De esta manera, solo era necesario actualizar uno a la vez,
evitando que la computadora tuviera que volver a dibujar toda la escena cada vez.
Matplotlib nos permite habilitar el blitting en FuncAnimation, pero significa que debemos
volver a escribir cómo funciona parte de la función animate(). Para obtener los verdaderos
beneficios del blitting, debemos establecer un fondo estático, lo que significa que los ejes no
se pueden escalar y ya no podemos mostrar marcas de tiempo en movimiento. Esto significa
que tienes que tomar lo bueno con lo malo. Así que tienes que elegir lo que es más importante
para ti en tus simulaciones.
Ejemplo 37.3.2. Trazado en tiempo real con animación con rendimiento mejorado
mance
Código Python:
5 # Parámetros 6 xlen
= 200 # Número de puntos para mostrar
7 yrange = [ 0 , 2 0] # Rango de posibles valores de Y para mostrar
8
240
Machine Translated by Google
15
dieciséis
20 # Añadir etiquetas
21 plt. título ( ' ' ) Datos de temperatura 22
plt. xlabel ( 'Muestras' ) 23 plt. ylabel
( 'Temperatura (grados C)' )
24
27
29
32 #imprimir (temperatura c)
33
43 línea de retorno ,
44
45 # Configura la función pl ottocall animate ( ) periódicamente 46 a ni = anim a c ión . FuncAnimation ( fig , anime fargs =(ys , ) , interval
49
50
La figura 37.4 muestra el gráfico final de este ejemplo. No puede ver el comportamiento real de la
gráfica mirando la Figura 37.4, por lo que necesita ejecutar el programa Python usted mismo.
https://scipycookbook.readthedocs.io/items/MatplotlibAnimations.html
241
Machine Translated by Google
Otros recursos:
https://learn.sparkfun.com/tutorials/graphsensordatawithpythonandmatplotlib/allplot sensordata
https://stackoverflow.com/questions/11874767/howdoiplotinrealtimeinawhile loopusing
matplotlib
242
Machine Translated by Google
capitulo 38
Adquisición de datos
(DAQ) con Python
Python es probablemente más adecuado para cálculos numéricos, análisis, simulaciones, etc.
"adhoc", pero puede usarse para muchos otros propósitos, incluso si otros lenguajes de
programación son más adecuados.
• Dispositivo/hardware DAQ
• Software de controlador
Aquí encontrará más información, recursos, videos y ejemplos sobre DAQ: https://
www.halvorsen.blog/documents/technology/daq/
243
Machine Translated by Google
Web:
http://www.ni.com/
• NIUSB6001
• NIUSB6008
• NIUSB6009
USB6008:
http://www.ni.com/enno/support/model.usb6008.html
La mejor manera de hacer esto es usar la API Python NIDAQmx proporcionada por
National Instruments (nidaqmx). La API NIDAQmx Python está alojada en GitHub.
244
Machine Translated by Google
Para obtener más información acerca de los recursos de Python para hardware y software de
NI: ni.com/python
Web:
https://pypi.org/project/PyDAQmx/
https://pythonhosted.org/PyDAQmx/
38.2.1 NIDAQmx
NIDAQmx es el software que utiliza para comunicarse y controlar su dispositivo de adquisición
de datos (DAQ) de NI.
https://www.ni.com/download
245
Machine Translated by Google
Con MAX puede asegurarse de que su dispositivo DAQ funcione como se espera antes de
comenzar a usarlo en su programa Python. Puede usar los paneles de prueba para probar
sus canales de entradas y salidas analógicas y digitales.
También puede cambiar el nombre de la unidad, que debe usar en su código de Python.
246
Machine Translated by Google
Otros recursos:
Controle el dispositivo NI DAQ con Python y NI DAQmx: https://
knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z0000019Pf1SAE
Puede ampliar fácilmente estos ejemplos para adaptarlos a sus necesidades. Por lo general, debe incluir
un ciclo while en el que escribe y/o lee desde el dispositivo DAQ dentro del ciclo, por ejemplo, lee
valores de uno o más sensores que están conectados al dispositivo DAQ, es posible que desee crear
un sistema de control que lea el valor del proceso y luego escribir la señal de control calculada (por
ejemplo, utilizando un controlador PID) de vuelta al dispositivo DAQ y al proceso.
código pitón:
1 importación nidaqmx
2
6 v alor = 3
7 tarea . comenzar
8 tarea . tarea de escritura
9 (v alor). detener
¡Nota! El USB6008 solo puede emitir una señal de voltaje entre 0 y 5V.
código pitón:
247
Machine Translated by Google
1 importación nidaqmx
2
código pitón:
1 importación nidaqmx
2
código pitón:
1 importación nidaqmx
2
248
Machine Translated by Google
código pitón:
1 importación nidaqmx
2
6 v alor = Tarea
7 verdadera.
8 tarea de inicio tarea de
9 escritura (v alor). detener
código pitón:
1 importación nidaqmx
2
6 tarea . valor de
7 inicio = tarea. read ( ) print ( v
8 alor ) tarea .
9 detener
Debe usar las clases "lectores nidaqmx.stream" y escritores nidaqmx.stream para aumentar el
rendimiento de su aplicación, que acepta matrices NumPy preasignadas.
https://nidaqmxpython.readthedocs.io/en/latest/streamwriters.html#module nidaqmx.stream
escritores
249
Machine Translated by Google
• PC con Python
• Protoboard
• CONDUJO
Una placa de prueba se utiliza para cablear componentes eléctricos entre sí. La Figura 38.5 muestra
cómo debe cablear un LED utilizando una placa de pruebas.
6 v alor = Tarea
7 verdadera.
8 tarea de inicio tarea de
9 escritura (v alor). detener
250
Machine Translated by Google
código pitón:
1 importación nidaqmx 2
tiempo de importación
3
8 v alor = Tarea
9 verdadera. comenzar
10
11 i=1
12 mientras e i < 1 0:
13
251
Machine Translated by Google
20 tarea . detener
temperatura pequeño y de bajo costo y cuesta alrededor de $ 1 (puede comprarlo "en cualquier
lugar").
• PC con Python
• Protoboard
Conectamos el TMP36 a LabVIEW usando un dispositivo DAQ USB de National Instruments, por
ejemplo, USB6001, USB6008 o similar. He usado una placa de prueba para el cableado.
La Figura 38.8 muestra cómo podemos conectar el TMP36 junto con el dispositivo DAQ USB6008.
252
Machine Translated by Google
De la hoja de datos (Figura 38.9) vemos que existe una relación lineal entre el voltaje y los grados
Celsius (38.3):
y = hacha + b (38.3)
y2 − y1
y y1 = x2 (x − x1) (38.4)
x1
50 − 25
25 = 1 − (x − 0,75) y − (38.5)
0,75
Luego obtenemos la siguiente fórmula que podemos implementar en nuestro programa de Python:
y = 100x − 50 (38.6)
código pitón:
253
Machine Translated by Google
1 importación nidaqmx 2
tiempo de importación
3
11 i=0
12 mientras e i < 1 0:
13
18 imprimir ( ”Muestra : i )”
,
19 imprimir ( ” V ol ta je Valor : ” , redondo (voltaje 2))
,
20 imprimir ( ” C elsius Valor : ” , redondo (grados C, 1))
21 imprimir ( ”\n” )
22 tiempo . dormir ( 1 )
23 i = i +1
24
25 tarea . detener
254
Machine Translated by Google
En este ejemplo, trazaremos los datos del sensor utilizando los ejemplos de trazado en tiempo real
que se muestran en el Capítulo 37.
1 importar nidaqmx 2
importar hora 3
importar fecha y hora como dt 4
importar numpy como np 5
importar mat pl o tli b . py pl otasplt 6 import mat pl
o tli b . anim a ción como anim a ción
7
11
subparcela ( 1 15 xs = [ ] 16 ys = [ ]
, 1 , 1)
17
255
Machine Translated by Google
21 tarea. comenzar
22
23
38
42
52
53
54 # Configure la función pl ottocall readdaq ( ) periódicamente 55 a ni = anim a c ión . FuncAnimation (fig, readdaq,
fargs =(xs , ys ) ,
intervalo =1000) 56 plt.
mostrar ( ) 57 tarea .
detener
• PC con Python
256
Machine Translated by Google
• Protoboard
• Termistor de 10kohm
• Resistencia de 10kohm
Existe una relación no lineal entre la resistencia y la excitación. Para encontrar la temperatura
podemos usar la siguiente ecuación (ecuación de SteinhartHart):
1
= A + B ln(R) + C(ln(R))3 (38.7)
conocimientos tradicionales
TK es la temperatura en Kelvin.
1
conocimientos tradicionales =
(38.8)
A + B ln(R) + C(ln(R))3
CT = CT − 273,15 (38.9)
Alambrado...
La figura 38.10 muestra cómo conectamos los componentes entre sí.
257
Machine Translated by Google
R2
Vsal = Vin (38.10)
R1 + R2
El divisor de voltaje para nuestro sistema se vuelve como se muestra en la figura 38.12.
derecha
258
Machine Translated by Google
Vin en nuestro caso será +5V que obtenemos del dispositivo DAQ USB6008 como se
muestra en el diagrama de cableado.
VoutR0
Rt = (38.12)
Vin Vout
No estamos listos para comenzar a hacer el programa Python para este ejemplo.
9 Vin = 5
12
dieciséis
i=0
17 mientras e i < 1 0:
18
23
259
Machine Translated by Google
24 # S t ei nhartconstants A = 0. 0 0
25 1 1 2 9 1 4 8 B = 0. 0 0
26 0 2 3 4 1 2 5 C = 0. 0 0
27 00000876741
28
35 imprimir ( ”Muestra : i )” ,
36 imprimir ( ” V ol ta je Valor : ” , ronda ( Vout 2))
37 imprimir ( ” C elsius Valor : ” , ronda (TempC, 1, ) )
38 imprimir ( ”\n” )
39 tiempo . dormir ( 1 )
40 i = i +1
41
42 tarea . detener
código pitón:
1 Ver ejemplos anteriores
código pitón:
260
Machine Translated by Google
1 importación nidaqmx
2
7 tarea. comenzar ( )
8
12 tarea. parada ( ) 13
tarea . cerca ( )
Este es solo un ejemplo básico, que puede extender fácilmente usando un ciclo while
o usando algún tipo de trazado, etc.
261
Machine Translated by Google
Parte VIII
262
Machine Translated by Google
capitulo 39
Una base de datos es una forma estructurada de almacenar mucha información. La información se
almacena en diferentes tablas. Algunos de los sistemas de bases de datos más populares en la actualidad
son:
• Servidor SQL
• MySQL
• Maria DB
• MongoDB
• etc.
La figura 39.1 muestra un ejemplo de un diagrama ER que consta de dos tablas de base de datos.
Aquí puede obtener más información sobre los sistemas de bases de datos, descargar ejemplos y
obtener recursos adicionales, ver videos, etc.:
https://www.halvorsen.blog/documents/technology/database/
263
Machine Translated by Google
sistema, como insertar datos en la base de datos y recuperar datos de la base de datos.
Aquí puede obtener más información sobre SQL, descargar ejemplos y obtener recursos
adicionales, ver videos, etc.:
https://www.halvorsen.blog/documents/technology/database/
39.3 mysql
Aquí veremos cómo podemos comunicarnos con una base de datos MySQL desde Python.
39.4 Mongo DB
Aquí veremos cómo podemos comunicarnos con una base de datos MongoDB desde
Python.
MongoDB es una base de datos llamada NoSQL. Uno de los sistemas de bases de datos
NoSQL más populares es MongoDB.
264
Machine Translated by Google
capitulo 40
Aquí aprenderemos cómo podemos usar Python para comunicarnos con MongDB.
Aprenderemos cómo nos conectamos a una base de datos, cómo podemos insertar datos en la
base de datos y recuperar datos de la base de datos.
MongoDB es una base de datos llamada NoSQL. Uno de los sistemas de bases de datos NoSQL
más populares es MongoDB.
Python necesita un controlador MongoDB para acceder a la base de datos MongoDB. Existen
muchos controladores diferentes, por lo que solo necesita elegir uno.
40.2.1 PyMongo
La distribución PyMongo contiene herramientas para interactuar con la base de datos MongoDB
desde Python
https://pypi.org/proyecto/pymongo/
265
Machine Translated by Google
266
Machine Translated by Google
Parte IX
Aplicación Python
Desarrollo
267
Machine Translated by Google
capitulo 41
Desarrollo de
Aplicaciones con Python
Python es popular dentro de la computación, pero se puede usar dentro de muchas otras
aplicaciones y se puede integrar y usar en combinación con otros lenguajes de
programación, por ejemplo, para el desarrollo de aplicaciones web, etc.
Python se puede usar para crear páginas web (en combinación con HTML, CSS,
JavaScript). Por lo general, Python se usa en el lado del servidor, mientras que HTML, CSS
y JavaScript se usan en el lado del cliente.
Un ejemplo es Django, que es un marco Python del lado del servidor que se utiliza para
crear páginas web dinámicas.
Python también se puede utilizar para programar y crear aplicaciones de Raspberry Pi.
Mi lista de recomendaciones:
• Visual Studio y C
268
Machine Translated by Google
• Desarrollo de aplicaciones para las 2 plataformas principales iOS (XCode usando Swift
Lenguaje de programación) y Android (Android Studio usando Java
Lenguaje de programación o lenguaje de programación Kotlin)
SciPy es una colección de paquetes para matemáticas, ciencias e ingeniería, que se revisó a
fondo anteriormente en este libro de texto.
En mi opinión, las herramientas como Visual Studio, donde puede crear aplicaciones GUI
profesionales utilizando los lenguajes C o VB.NET en un paquete integrado, son una mejor opción.
Otra buena alternativa es LabVIEW, que tiene potentes características de GUI en combinación
con una amplia integración de hardware.
269
Machine Translated by Google
Para el desarrollo de Android tienes Android Studio. Aquí puedes usar lenguajes de
programación como Java y Kotlin.
Dado que este es un libro de texto de Python, volvamos a las opciones que tenemos si
queremos crear aplicaciones GUI de escritorio con Python.
• PyQt
• Tkinter
• WxPython
• PyGUI
• PySide2
• Kivy
Estas son solo algunas de las opciones que tenemos, para una visión general completa de
Los marcos de GUI para Python ven lo siguiente:
https://docs.python.org/3/library/othergui.htmlotrosguipaquetes https://
wiki.python.org/moin/GuiProgramming
PyQt y wxPython, todos tienen una apariencia moderna y más widgets que Tkinter.
Esto también es un pequeño problema cuando se trata del desarrollo de GUI de escritorio
con Python. Tienes tantas opciones y, a veces, es mejor tener una buena opción que
muchas opciones medio buenas.
41.2.1 PyQt
PyQt reúne el marco de aplicación multiplataforma Qt C++ y el lenguaje interpretado
multiplataforma Python. Qt es un conjunto de herramientas GUI multiplataforma.
https://riverbankcomputing.com/software/pyqt/intro
https://www.qt.io
270
Machine Translated by Google
Tutoriales de PyQt:
https://likegeeks.com/pyqt5tutorial/
https://buildsystem.fman.io/pyqt5tutorial
41.2.2 PySide2
PySide2 es el módulo oficial de Python del proyecto Qt for Python, que brinda acceso al marco
completo de Qt.
El marco PySide original fue lanzado originalmente por Nokia, entonces propietario de Qt.
Después de que Nokia vendiera Qt en 2011, PySide ya no se mantuvo. Luego PySide2 fue
establecido y mantenido por una comunidad. Finalmente, en 2016, la empresa Qt se comprometió
a apoyar oficialmente el proyecto PySide2.
Básicamente, PySide2 es muy similar a PyQt.
La desventaja de PySide2 (agosto de 2019) es que todavía está en "beta" (vista previa técnica).
https://pypi.org/proyecto/PySide2/
https://wiki.qt.io/Qtf o Python
41.2.3 Intercambiar
Otro marco GUI popular es Tkinter.
https://docs.python.org/2/library/tkinter.html
41.2.4 WxPython
WxPython es un conjunto de herramientas GUI multiplataforma para el lenguaje Python.
https://www.wxpython.org
https://wiki.wxpython.org/Getting
271
Machine Translated by Google
Un ejemplo es Django, que es un marco Python del lado del servidor que se utiliza para crear
páginas web dinámicas.
https://www.djangoproject.com Otros
marcos de aplicaciones web y lenguajes de programación populares son ASP.NET y PHP.
https://www.halvorsen.blog/documents/programming/web/
Aquí puede obtener más información sobre los sistemas de bases de datos y SQL, descargar
ejemplos y obtener recursos adicionales, ver videos,
etc.: https://www.halvorsen.blog/documents/technology/database/
https://www.halvorsen.blog/documents/technology/database/sqlserver.php
41.4.2 MySQL
MySQL es un sistema de gestión de bases de datos relacionales (RDBMS) de código abierto y
ampliamente utilizado.
MySQL viene en diferentes ediciones, tanto de pago (Enterprise) como gratuitas (Community).
272
Machine Translated by Google
https://www.halvorsen.blog/documents/technology/database/mysql.php
41.4.3 Maria DB
MariaDB es un derivado del sistema de base de datos MySQL más famoso.
El servidor de base de datos MariaDB se publica como software gratuito y de código abierto.
MariaDB tiene compatibilidad con MySQL en la mayoría de las situaciones. Se dice que MariaDB tiene
un rendimiento ligeramente mejor que MySQL.
https://www.halvorsen.blog/documents/technology/database/mariadb.php
41.4.4 Mongo DB
MongoDB es una base de datos distribuida de propósito general, basada en documentos.
273
Machine Translated by Google
capitulo 42
Microsoft Visual Studio es un entorno de desarrollo integrado (IDE) de Microsoft. Se utiliza para
desarrollar programas informáticos, así como sitios web, aplicaciones web, servicios web y
aplicaciones móviles. El lenguaje de programación predeterminado (principal) en Visual Studio es
C, pero se admiten muchos otros lenguajes de programación.
Visual Studio (de Visual Studio 2017), tiene soporte integrado para Python, se llama "Soporte de
Python en Visual Studio".
Web:
https://visualstudio.microsoft.com
Wikipedia:
https://en.wikipedia.org/wiki/MicrosoftVisualStudio
Aquí puede obtener más información sobre Visual Studio y C, descargar ejemplos y obtener
recursos adicionales, ver videos, etc.: https://
www.halvorsen.blog/documents/programming/csharp/
Para obtener una introducción a la integración de Python en Visual Studio, consulte el Capítulo 19.
274
Machine Translated by Google
capitulo 43
https://www.halvorsen.blog/documents/programming/labview/
Aquí encontrará información sobre LabVIEW, encontrará muchos recursos como material de
capacitación, videos, ejemplos de código, etc.
Web:
http://zone.ni.com/reference/enXX/help/371361R01/glang/python pal/
Utilice las funciones de Python para llamar al código de Python desde LabVIEW. Ver Figura 43.1
¡Nota! LabVIEW admite llamar a Python versión 2.7 y 3.6. Aunque las versiones no compatibles
pueden funcionar con las funciones de Python de LabVIEW, NI recomienda utilizar únicamente
versiones compatibles de Python.
275
Machine Translated by Google
poco.
Para ejecutar el código de Python, LabVIEW requiere las bibliotecas compartidas de Python
(DLL) en la ruta del sistema.
Para Windows: si instala Python 3.6, agregue el directorio que contiene python36.dll a la ruta del
sistema. Si instala Python 2.7, agregue el directorio que contiene python27.dll a la ruta del sistema.
Para obtener instrucciones detalladas sobre la instalación de Python para llamar al código de
Python: http://www.ni.com/productdocumentation/54295/en/
Funciones de LabVIEW para trabajar con Python: Open Python Session Python
Nodo Cerrar sesión de Python
Aquí presentaré algunos ejemplos de cómo podemos integrar un script de Python existente o una
función de Python.
276
Machine Translated by Google
3 Tf = (Tc 9 / 5 ) + 32 vuelta
4 Tf
5
7 def f 2 c ( Vf ) :
8
9 Tc = ( Tf − 3 2 ) (5/9)
10 regresa Tc
Luego, creamos un script de Python para probar las funciones (testf ahrenheit.py):
1 de fahrenheit importa c 2 f f2c
2
,
3 Tc = 0
4
5 Vf = c 2 f ( Tc )
6
10 Tf = 32
11
12 Tc = f 2 c ( Tf )
13
1 Fahrenheit : 3 2 . 0
2 C elsius : 0 . 0
277
Machine Translated by Google
278
Machine Translated by Google
279
Machine Translated by Google
capitulo 44
Raspberry Pi y Phyton
https://www.halvorsen.blog/documents/technology/iot/raspberry pi.php
Otros recursos:
https://learn.sparkfun.com/tutorials/pythonprogrammingtutorialgettingstarted withtheraspberry
pi/programminginpython
Primero, antes de comenzar a programar Python en un dispositivo Raspberry Pi, debe instalar
un sistema operativo como Raspbian. Raspbian es una distribución de Linux hecha a medida
para Raspberry Pi.
https://www.raspberrypi.org/downloads/raspbian/
280
Machine Translated by Google
capitulo 45
281
Machine Translated by Google
Parte X
Recursos
282
Machine Translated by Google
capitulo 46
Si está familiarizado con MATLAB, puede cambiar a Python con relativa facilidad.
La mayor parte de la funcionalidad y las funciones en diferentes cajas de herramientas tienen
funciones similares en Python.
• Introducción a MATLAB
283
Machine Translated by Google
https://se.mathworks.com/help/matlab/empezandoconpython.html
284
Machine Translated by Google
1 def c 2 f (Tc ) :
2
3 Tf = (Tc 9 / 5 ) + 32 vuelta
4 Tf
5
7 def f 2 c ( Vf ) :
8
9 Tc = ( Tf − 3 2 ) (5/9)
10 regresa Tc
5 Tf = c 2 f (Tc )
6
10 Tf = 32
11
12 Tc = f 2 c ( Tf )
13
1 Fahrenheit : 3 2. 0
2 C elsius : 0. 0
1 clc
2 Tc = 0 3 Tf
= py . farenheit c 2 f (Tc )
4 Tc = py. farenheit f 2 c ( Tf )
285
Machine Translated by Google
https://se.mathworks.com/help/matlab/matlabengineforpython.html
286
Machine Translated by Google
capitulo 47
Recursos de Python
Biblioteca SciPy:
https://www.scipy.org
Biblioteca Matplotlib:
https://matplotlib.org
287
Machine Translated by Google
Código de estudio
visual: https://code.visualstudio.com
Estudio visual:
https://visualstudio.microsoft.com
PyCharm:
https://www.jetbrains.com/pycharm/
Ala:
https://wingware.com
Cuaderno Jupyter:
http://jupyter.org
288
Machine Translated by Google
Bibliografía
mejor idea
[15] TechBeamers, la pitón https://www.techbeamers.com/bestpythonide
"Conseguir
pythonprogramming/”, 2018.
289
Machine Translated by Google
[18] python.org, "Aplicaciones para https://www.python.org/ pitón
about/apps/", 2018.
3/library/,” 2018.
290
Machine Translated by Google
Parte XI
Soluciones a ejercicios
291
Machine Translated by Google
Crea un Script en Python (archivo .py) donde trazas la solución x(t) en el intervalo de tiempo:
0 ≤ t ≤ 25
Escritura de Python:
1 importar matemáticas
como mt 2 importar numpy
como np 3 importar mat pl o tli b . py pl otasplt
4
10 # Parámetros de simulación 11 x0 =
1 12 t = 0
13
14 t inicio = 0
292
Machine Translated by Google
15 cucharaditas = 25
dieciséis
19 x = [ ] 20 x =
np . ceros ( tstop +1)
21
24
29
293
Machine Translated by Google
Matemáticas en Python
z = 3x 2
2+x ln (x)
+y 2+e (3)
Prueba con diferentes valores para x e y.
3 def calcexpression ( x , y ) :
4
5 z=3 x 2 + metro . raíz cuadrada ( x 2+y 2 ) + metro . exp (mt. log (x))
6 volver z
3x=24y=2
6 z = mimatemática. calcexpresión ( x , y )
7
8 imprimir (z)
1 1 6. 8 2 8 4 2 7 1 2 4 7 4 6 1 9
[Fin de la solución]
294
Machine Translated by Google
poli = ax2 + bx + c
número = ...
guarida . . .
=f= ...
Esto hace que la expresión sea más fácil de leer y comprender, y minimiza el riesgo de cometer un error al
escribir la expresión en Python.
Encuentre f(9)
Escritura de Python:
1...
[Fin de la solución]
295
Machine Translated by Google
Sistemas discretos
Población de bacterias
En esta tarea simularemos un modelo simple de una población de bacterias en un frasco.
El modelo es el siguiente:
x˙ = bx − px2 (7)
Encuentre el modelo discreto usando el método Euler Forward a mano e implemente y simule el
sistema en Python usando un For Loop.
xk+1 − xk x˙
≈ (8)
ts
Ts Intervalo de muestreo
Entonces obtenemos:
296
Machine Translated by Google
Escritura de Python:
1 # Sim ul a ci onof B acte ri a P opul a ti on 2 import
numpy as np 3 import mat pl o
tli b . py pl otasplt
4
9 # Parámetros de simulación
10 Ts = 0. 0 1 11
Tstop = 1 12 xk
= 100 13 N =
int ( Tstop /Ts ) # Longitud de sim ul a ción 14 datos = [ ] 15
datos . agregar
(xk)
dieciséis
17
18 # Sim ul a ti on 19
for k inr an ge (N) : xk1 = xk +
20 Ts ( b xk − p xk 2);
21 xk = xk1
22 datos . agregar (xk1)
23
27 plt. pl ot ( t 28 , datos )
plt . title ( ' Sim ul a ci onof B acte ri a P opul a ti on ' ) 29 plt . xlabel ( ' t [ s ]
' ) 30 plt . ylabel ( ' ' ) 31 plt . g ri
d ( ) 32 plt . eje ( [ 0 33Xplt .
mostrar ( )
, 1, 0 , 100])
[Fin de la solución]
297
Machine Translated by Google
dx1
= −x2 (11)
_
dx2
= x1 (12)
_
Encuentre el sistema discreto y simule el sistema discreto en Python. Resuelva las ecuaciones,
por ejemplo, en el lapso de tiempo [1 1] con valores iniciales [1, 1].
Escritura de Python:
1 # Sim ul a c ión con 2 V a ri a bl es 2 import
numpy as np 3 import mat pl
o tli b . py pl otasplt
4
9 # Parámetros de simulación 10 Ts = 0. 1 11
T inicio = −1 12
Tparada = 1 13 x1k = 1
14 x2k = 1
298
Machine Translated by Google
17 datosx2 = [ ] 18 datosx1 .
20
21
22 # Sim ul a ti en 23
para k inr an ge (N) : x1k1 = x1k
24 − Ts x2k x2k1 = x2k + Ts
25 x1k
26
Tstop+Ts, Ts)
34
, 1, −1,5 , 1.5])
Solución alternativa:
299
Machine Translated by Google
6b=1
7 p = 0. 5
8
9 # Parámetros de simulación
10 Ts = 0. 1 11
T inicio = −1 12 Tstop
= 1 13 N = int
( ( Tstop−T start ) /Ts ) # Longitud simulada 14 x1 = np . ceros (N+2) 15 x2 =
np. ceros (N+2) 16 x1 [ 0 ] = 1 17
x2 [ 0 ] = 1
18
19
20 # Sim ul a ci on 21
para k inr an ge (N+1) : x1 [ k+1] =
22 x1 [ k ] − Ts x2 [ k ] x2 [ k+1] = x2 [ k ] +
23 Ts x1 [ k ]
24
25
Elija el enfoque que más le convenga. También debe verificar el tiempo que toma la
simulación. Para simulaciones más grandes, esta segunda alternativa puede ser mejor.
[Fin de la solución]
300
Machine Translated by Google