0% encontró este documento útil (0 votos)
33 vistas39 páginas

Documento de Python (Junio 2021)

Este documento presenta una introducción al lenguaje de programación Python. Explica las características y ventajas de Python, incluyendo que es de código abierto, multiplataforma y de tipado dinámico. También describe palabras clave, variables, operaciones aritméticas, cadenas, arreglos y funciones matemáticas incluidas en bibliotecas como NumPy, SciPy y Matplotlib. El documento proporciona ejemplos básicos de sintaxis de Python.

Cargado por

Leonel Mendieta
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
33 vistas39 páginas

Documento de Python (Junio 2021)

Este documento presenta una introducción al lenguaje de programación Python. Explica las características y ventajas de Python, incluyendo que es de código abierto, multiplataforma y de tipado dinámico. También describe palabras clave, variables, operaciones aritméticas, cadenas, arreglos y funciones matemáticas incluidas en bibliotecas como NumPy, SciPy y Matplotlib. El documento proporciona ejemplos básicos de sintaxis de Python.

Cargado por

Leonel Mendieta
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 39

Universidad Nacional Autónoma de Nicaragua, Managua

Recinto Universitario Rubén Darío”


Facultad Regional Multidisciplinaria, FAREM - Carazo
Programa de Doctorado
Matemática Aplicada

PYTHON

Autor

Dr. Iván Augusto Cisneros Díaz

Managua, Julio 2021


Índice

1. PYTHON 3
1.1. Características del Lenguaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2. Palabras Claves de Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3. Las variables de Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4. Operaciónes Aritméticas de Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2. Numeros Aleatorios en Python 9

3. Cadenas en Python 9
3.1. Métodos de cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

4. Arreglos 12
4.1. Operaciónes con arreglos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.2. Funciones sobre arreglos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.3. Arreglos aleatorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.4. Algunos métodos convenientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.5. Arreglos Bidimensionales en Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.6. Creación de arreglos bidimensionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.7. Operaciónes con arreglos bidimensionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.8. Otras operaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

5. Funciónes Matemática de Numpy 21

6. Funciones Matemática de Math (Compatible con C++) 22

7. Funciónes Matemática de Scipy (Algebra Lineal) 23

8. Funciónes Matemática de Scipy (Raíces de Ecuacionesl) 24

9. Funciónes Matemática de Sympy (Programación Simbólica) 25

10.Programas de Ejemplos 26
1. PYTHON

PYTHON es un lenguaje de programación de tipo script creado por Guido van Rossum a principios de
los años 90, cuyo nombre proviene del grupo ((Monty Python)). El objetivo es un lenguaje con una sintaxis
muy limpia y con un código legible. Dicho lenguaje fue puesto en libertad en 1991.

Se puede descargar de forma gratuita en la siguiente dirección

https : ==www:spyder ide:org=

Iniciaremos el estudio de Python, con la siguiente información:

¿Qué puede hacer Python?

1. Desarrollo web (del lado del servidor).

2. Desarrollo de software,

3. Matemáticas complejas

4. Secuencias de comandos del sistema.

5. Se puede utilizar junto con el software para crear ‡ujos de trabajo.

6. Puede conectarse a los sistemas de bases de datos. También puede leer y modi…car archivos.

7. Se puede utilizar para manejar grandes volúmenes de datos y manipular bases de datos

8. Puede ser utilizado para el prototipado rápido, o para el desarrollo de software listo para la producción.

¿Por qué Python?

1. Python funciona en diferentes plataformas (Windows, Mac, Linux, Frambuesa Pi, etc).

2. Python tiene una sintaxis sencilla similar a la del idioma Inglés.

3. Python tiene una sintaxis que permite a los desarrolladores escribir programas con menos líneas que
algunos otros lenguajes de programación.

4. Python se ejecuta en un sistema de intérprete, lo que signi…ca que el código puede ser ejecutada tan
pronto como está escrito. Esto signi…ca que la creación de prototipos puede ser muy rápido.

5. Python puede ser tratada de una manera de procedimiento, un modo orientado a objetos o de una
manera funcional.

3
La sintaxis Python en comparación con otros lenguajes de programación

1. Python fue diseñado para facilitar la lectura, y tiene algunas similitudes con el idioma Inglés con la
in‡uencia de las matemáticas.

2. Python utiliza nuevas líneas para completar una orden, a diferencia de otros lenguajes de progra-
mación que a menudo utilizan puntos y comas o paréntesis.

3. Python se basa en la indentación, con el espacio en blanco, para de…nir el alcance; tales como el
alcance de bucles, funciones y clases. Otros lenguajes de programación utilizan a menudo rizado-
soportes para este propósito.

1.1. Características del Lenguaje

1. Interpretado

2. Tipado dinámico: una misma variable puede tomar valores de distinto tipo en distintos momentos

3. Multiplataforma: Symbian, Unix, Windows, Linux. . .

4. Conexiones con otros lenguajes (FORTRAN, C, C++, . . . )

5. Manejo de excepciones

6. Orientado a objetos

7. Código abierto

El lenguaje Python permite:

1. Desarrollo rápido de código.

2. Lenguaje de muy alto nivel

3. Sintaxis clara y sencilla. Mantenimiento fácil.

4. Gran cantidad de librerías

5. Lenguaje de propósito general

Comentario de Python

1. Comentario de una sola línea, se utiliza el simbolo #

2. Comentario de varias lineas, se utiliza el simbolo "(tres comillas dobles) para apértura y cerradura.

4
1.2. Palabras Claves de Python

No se pueden utilizar para nombres de variables, objetos o clases. Son propias del sistema de progra-
mación.
and as assert break
class continue def del
elif else except exec
…naly for from global
if import in is
lambda not or pass
print raise return try
while with yield
Librerias de Python (Cálculo Cientí…co)

Algunas librerías de Pyton que se utilizan para cálculos matemáticos, todas ellas poseen diferentes
funciones para el manejo de las matemáticas.

1. NUMPY: Librería que proporcióna herramientas para la generación y manipulación de arrays.

2. SCIPY: Librería de optimización, Fourier, cuadratura e integración numérica, . . . (depende de


NUMPY).

3. SYMPY: Librebía de cálculo simbólico.

4. MATPLOTLIB: Librería de Grá…cos 2D y 3D.

Módulos de Python

Los módulos son programas que amplian las funciónes y clases de PYTHON para realizar tareas es-
pecí…cas. Por ejemplo, el módulo os permite usar muchas funciónes del sistema operativo.

Los módulos se pueden cargar de diversas formas, entre ellas:

1. from módulo import *

2. import módulo

3. import modulo as alia.

En estos dos últimos casos, una función de módulo hay que llamarla módulo.función o alia.función
respectivamente, mientras que en el primero basta con función.

Las ventajas de usar módulos son:

5
1. Las funciónes y variables deben ser de…nidas sólo una vez, y luego pueden ser utilizadas en muchos
programas sin necesidad de reescribir el código.

2. Permiten que un programa pueda ser organizado en varias secciónes lógicas, puestás cada una en un
archivo separado.

3. Hacen más fácil compartir componentes con otros programadores.

Python viene « de fábrica» con muchos módulos listos para ser usados. Además, es posible descargar
de internet e instalar módulos prácticamente para hacer cualquier cosa.

Algunos módulos de Python son:

1. math

2. random

3. datetime

4. fractions

5. turtle

1.3. Las variables de Python

En Python, las variables se crean cuando se asigna un valor a la misma, no existen mandatos o sentencias
para declarar variables. Las variables son recipientes para almacenar valores de datos. A diferencia de otros
lenguajes de programación, Python no tiene ningún mandato para declarar una variable. Una variable se
crea el primer momento en que se asigna un valor a la misma.

x = 3;141592

y = "P ython"

Las variables no necesitan ser declaradas con cualquier tipo particular e incluso puede cambiar el tipo
después de que se han estáblecido. Las variables de cadena se pueden declarar ya sea mediante el uso
de comillas simples o dobles: Los nombres de variables puede tener un nombre corto o un nombre más
descriptivo. Las variables de cadena se pueden declarar ya sea mediante el uso de comillas simples o dobles.

Reglas para usar variables en Python:

1. Un nombre de variable debe comenzar con una letra o el carácter de subrayado.

2. Un nombre de variable no puede comenzar con un número.

6
3. Un nombre de variable sólo puede contener caracteres y guiones alfanuméricos (AZ, 0-9 y _)

4. Los nombres de variables se diferencia entre mayúsculas y minúsculas (edad, edad y la edad son tres
variables diferentes).

Asignar valor a múltiples variables

Python le permite asignar valores a las múltiples variables en una sola línea, x; y; z = 1; 2; 3; de la misma
manera, se puede asignar el mismo valor a las múltiples variables en una sola línea x; y; z = 3;141592

Variables globales

Las variables que se crean fuera de una función se conocen como variables globales, se pueden declarar
tanto dentro de las funciónes y fuera de ellas.

Los casos tipicos son:

1. Crear una variable fuera de una función, y utilizarlo dentro de la función

2. Si se crea una variable con el mismo nombre dentro de una función, esta variable será local, y sólo
puede ser utilizado dentro de la función. La variable global con el mismo nombre seguirá siendo como
era, global y con el valor original.

La palabra clave mundial

Normalmente, cuando se crea una variable dentro de una función, esa variable es local, y sólo se puede
utilizar dentro de esa función. Para crear una variable global dentro de una función, se puede utilizar la
global palabra clave.

Tipos de datos de Python

Tipo Datos
Texto str
Numerico int, ‡oat, complex
Secuencia list, tuple, range
Boole bool
Conjunto set, frozenset

Conseguir el tipo de datos

Usted puede obtener el tipo de datos de cualquier objeto mediante el uso de la type() función, por
ejemplo, si x = 5; entonces
print(type(x))

7
tambien, se puede convertir de un tipo a otro con los métodos int(); f loat() y complex().

x = oat(x)

x = complex(x)

sin embargo, no es posible convertir los números complejos en otro tipo de número.

1.4. Operaciónes Aritméticas de Python

1. Suma: +

2. Resta: -

3. Producto: *

4. Division real: /

5. Division entera: //

6. Potencia: **

7. Resto o módulo: %

Notaciónes Compactas Aritméticas

1. c+ = a implica c = c + a

2. c = a implica c = c a

3. c = a implica c = c a

4. c= = a implica c = c=a

5. c % = a implica c = c %a (Resto de la division entera)

6. c = a implica c = c a (Potencia)

7. c== = a implica c = c==a (Cociente entero)

Operaciónes lógicas y relaciónales

Operaciónes lógicas

1. x or y

2. x and y

8
3. not x

Operaciónes Relaciónales

1. == (igualdad)

2. <= (menor o igual)

3. >= (mayor o igual)

4. ! = (distinto)

2. Numeros Aleatorios en Python

Python tiene incorporado un módulo llamado random que se puede utilizar para generar números
aleatorios
import random

Métodos de Ramdom

1. random:seed(n) : Inicializa el generador de número aleatorio

2. random:randrange(n1 ; n2 ) : Devuelve un número aleatorio entero entre n1 y n2 1

3. random:randint(n1 ; n2 ) : Devuelve un número aleatorio entero entre n1 y n2

4. random:random() : Devuelve un número aleatorio entero entre 0 y 1

Por ejemplo

import random

print(random:randrange(1; 10))

3. Cadenas en Python

Al igual que muchos otros lenguajes de programación, las cadenas en Python son matrices de bytes que
representan los caracteres Unicode. Sin embargo, Python no tiene un tipo de datos de caracteres, un solo
carácter es simplemente una cadena con una longitud de 1. Los corchetes se pueden utilizar para elementos
de acceso de la cadena.

Ejemplo :

Obtener el carácter en la posición 1 (recordemos que el primer carácter tiene la posición 0):

9
print(cadena[1])

Rebanar

Puede devolver una gama de caracteres utilizando la sintaxis rebanada. Especi…ca el índice de inicio y
el índice …nal, separados por dos puntos, para devolver una parte de la cadena.

Ejemplo

Obtener los personajes de la posición 2 a la posición 5 (no incluido)

print(cadena[2:5])

La indexación negativa

Utilizar índices negativos para iniciar el corte desde el …nal de la cadena.

Ejemplo

Obtener los personajes de la posición 5 a la posición 1, a partir del recuento desde el …nal de la cadena:

print(cadena[-5:-2])

Longitud de la cadena

Para obtener la longitud de una cadena, utilice la len() función, la cual devuelve la longitud de una
cadena:

print(len(cadena))

3.1. Métodos de cadenas

Python tiene un conjunto de métodos integrados que se pueden utilizar en las cadenas o cuerdas. Todos
los métodos de cadena devuelven nuevos valores. No cambian la cadena original.

1. El strip() método elimina cualquier espacio en blanco desde el principio o el …nal:

cadena:strip()

2. El lower() método devuelve la cadena en minúsculas:

cadena:lower()

10
3. El upper() método devuelve la cadena en mayúsculas:

cadena:upper()

4. El replace() método reemplaza una cadena con otra cadena:

cadena:replace(cad1; cad2)

1. El capitalize() método convierte el primer caracter en mayusculas:

cadena:capitalize()

2. El center() método alineará al centro la cadena, utilizando un carácter especi…cado (el espacio es el
valor predeterminado) como carácter de relleno.center()

cadena:center(longitud; caracter)

3. El count() método devuelve el número de veces que una subcadena aparece en la cadena:

cadena:count(subcadena; inicio; f in)

4. El …nd() método busca la primera aparición del valor especi…cado. El método devuelve 1 si no se
encuentra el valor.
cadena:count(cadena; inicio; f in)

5. El ljust() método método alineará a la izquierda la cadena, utilizando un carácter especi…cado (el
espacio es el valor predeterminado) como carácter de relleno.

cadena:ljust(length; character)

6. El rjust() método alineará a la izquierda la cadena, utilizando un carácter especi…cado (el espacio es
el valor predeterminado) como carácter de relleno.

cadena:ljust(length; character)

7. El swapcase() método devuelve una cadena donde todas las letras mayúsculas son minúsculas y
viceversa.
cadena:swapcase()

8. El title() método devuelve una cadena donde el primer carácter de cada palabra está en mayúsculas.
Como un encabezado o un título.
cadena:title()

11
9. Comprobación de que si una subcadena está en otra cadena

x = subcadena in cadena

10. Comprobación de que si una subcadena no está en otra cadena

x = subcadena not in cadena

11. Concatenar dos cadenas


cad1 + cad2

4. Arreglos

Las estructuras de arreglo permiten manipular datos de manera muy ‡exible. Combinándolas y anidán-
dolas, es posible organizar información de manera estructurada para representar sistemas del mundo real.
En muchas aplicaciónes de Ingeniería, por otra parte, más importante que la organización de los datos es
la capacidad de hacer muchas operaciónes a la vez sobre grandes conjuntos de datos numéricos de manera
e…ciente. Algunos ejemplos de problemas que requieren manipular grandes secuencias de números son: la
predicción del clima, la construcción de edi…cios, y el análisis de indicadores …nancieros entre muchos otros.

La estructura de datos que sirve para almacenar estas grandes secuencias de números (generalmente de
tipo ‡oat) es el arreglo.

Los arreglos tienen algunas similitudes con las listas: los elementos tienen un orden y se pueden acceder
mediante su posición, los elementos se pueden recorrer usando un ciclo for.

Sin embargo, también tienen algunas restricciónes: todos los elementos del arreglo deben tener el mismo
tipo, en general, el tamaño del arreglo es …jo (no van creciendo dinámicamente como las listas), se ocupan
principalmente para almacenar datos numéricos.

Los arreglos son los equivalentes en programación de las matrices y vectores de las matemáticas. Pre-
cisamente, una gran motivación para usar arreglos es que hay mucha teoría detrás de ellos que puede ser
usada en el diseño de algoritmos para resolver problemas verdaderamente interesantes.

Creación de arreglos

El módulo que provee las estructuras de datos y las funciónes para trabajar con arreglos se llama
NumPy, y normalmente viene incluído con Python, por lo que hay que instalarlo por separado.

Descargue el instalador apropiado para su versión de Python desde la página de descargas de NumPy.

Para usar las funciónes provistas por NumPy, debemos importarlas al principio del programa:

12
from numpy import array

Como estaremos usando frecuentemente muchas funciónes de este módulo, conviene importarlas todas
de una vez usando la siguiente sentencia:

from numpy import *

El tipo de datos de los arreglos se llama array. Para crear un arreglo nuevo, se puede usar la función
array pasándole como parámetro la lista de valores que deseamos agregar al arreglo:

a = array([6, 1, 3, 9, 8])

Todos los elementos del arreglo tienen exactamente el mismo tipo. Para crear un arreglo de números
reales, basta con que uno de los valores lo sea:

b = array([6.0, 1, 3, 9, 8])

Otra opción es convertir el arreglo a otro tipo usando el método astype:

b.astype(complex)

Hay muchas formas de arreglos que aparecen a menudo en la práctica, por lo que existen funciónes
especiales para crearlos:

1. zeros(n) crea un arreglo de n ceros.

2. ones(n) crea un arreglo de n unos.

3. arange(a, b, c) crea un arreglo de forma similar a la función range, con las diferencias que a, b y c
pueden ser reales, y que el resultado es un arreglo y no una lista.

4. linspace(a, b, n) crea un arreglo de n valores equiespaciados entre a y b.

13
4.1. Operaciónes con arreglos

Las limitaciónes que tienen los arreglos respecto de las listas son compensadas por la cantidad de
operaciónes convenientes que permiten realizar sobre ellos.

1. Las operaciónes aritméticas entre arreglos se aplican elemento a elemento:

a) a = array([55, 21, 19, 11, 9])

b) b = array([12, -9, 0, 22, -9])


# sumar los dos arreglos elemento a elemento

c) a + b

a+b produce un arreglo de la forma ([ 77, 12, 33, 0])


a-b produce un arreglo de la forma ([ 43, 30, 19, -11, 18])
a*b produce un arreglo de la forma ([ 660, -189, 0, 242, -81])

Las operaciónes entre un arreglo y un valor simple funciónan aplicando la operación a todos los elementos
del arreglo, usando el valor simple como operando todas las veces:

a = array([55; 21; 19; 11; 9])


# multiplicar por 0.1 todos los elementos
0;1 a = ([5;5; 2;1; 1;9; 1;1; 0;9])

Note que si quisiéramos hacer estas operaciónes usando listas, necesitaríamos usar un ciclo para hacer
las operaciónes elemento a elemento.

4.2. Funciones sobre arreglos

NumPy provee muchas funciónes matemáticas que también operan elemento a elemento. Por ejemplo,
podemos obtener el seno de 9 valores equiespaciados entre 0 y con una sola llamada a la función sin:
2

from numpy import linspace, pi, sin


x = linspace(0; ; 9)
2

El vector x da como resultado

14
array([ 0. , 0.19634954, 0.39269908,
0.58904862, 0.78539816, 0.9817477 ,
1.17809725, 1.37444679, 1.57079633])

Ahora, aplicando el vector x a la función seno, obtenemos que sin(x) es

array([ 0. , 0.19509032, 0.38268343,


0.55557023, 0.70710678, 0.83146961,
0.92387953, 0.98078528, 1. ])

Como puede ver, los valores obtenidos crecen desde 0 hasta 1, que es justamente como se comporta la
función seno en el intervalo [0; ]. Aquí también se hace evidente otra de las ventajas de los arreglos: al
2
mostrarlos en la consola o al imprimirlos, los valores aparecen perfectamente alineados. Con las listas, esto
no ocurre.

4.3. Arreglos aleatorios

El módulo NumPy contiene a su vez otros módulos que proveen funciónalidad adiciónal a los arreglos
y funciónes básicos.

El módulo numpy.random provee funciónes para crear números aleatorios (es decir, generados al azar),
de las cuales la más usada es la función random(), que entrega un arreglo de números al azar distribuidos
uniformemente entre 0 y 1:

from numpy.random import random


random(3)
array([0;53077263; 0;22039319; 0;81268786])

Obtener elementos de un arreglo

Cada elemento del arreglo tiene un índice, al igual que en las listas. El primer elemento tiene índice
0. Los elementos también pueden numerarse desde el …nal hasta el principio usando índices negativos. El
último elemento tiene índice 1:

a = array([6;2; 2;3; 3;4; 4;7; 9;8])


a[0] es el elemento 6.2 y asi sucesivamente

15
Una sección del arreglo puede ser obtenida usando el operador de rebanado a[i:j]. Los índices i y j
indican el rango de valores que serán entregados:

Si tenemos el array([ 6.2, -2.3, 3.4, 4.7, 9.8]), entonces a[1:4] es el arreglo array([-2.3, 3.4, 4.7]), de
manera similar a[2:-2] es el arreglo array([ 3.4]).

Si el primer índice es omitido, el rebanado comienza desde el principio del arreglo. Si el segundo índice
es omitido, el rebanado termina al …nal del arreglo, por ejemplo:

a[: 2] implica el arreglo array([ 6.2, -2.3])


también,
a[2 :] es el arreglo array([ 3.4, 4.7, 9.8])

Un tercer índice puede indicar cada cuántos elementos serán incluídos en el resultado, por ejemplo

a = linspace(0; 1; 9)
array([0;0; 0;125; 0;25; 0;375; 0;5; 0;625; 0;75; 0;875; 1:])

Una manera simple de recordar cómo funcióna el rebanado es considerar que los índices no se re…eren
a los elementos, sino a los espacios entre los elementos.

4.4. Algunos métodos convenientes

Los arreglos proveen algunos métodos útiles que conviene conocer. Los métodos min y max, entregan
respectivamente el mínimo y el máximo de los elementos del arreglo, por ejemplo

a = array([4;1; 2;7; 8;4; pi; 2;5; 3; 5;2])


a:min()
-2.5
a:max()
8.4

Los métodos argmin y argmax entregan respectivamente la posición del mínimo y del máximo, por
ejemplo

a:argmin()
4
a:argmax()
2

16
Los métodos sum y prod entregan respectivamente la suma y el producto de los elementos:

a:sum()
24.041592653589795
a:prod()

4.5. Arreglos Bidimensionales en Python

Los arreglos bidimensionales son tablas de valores. Cada elemento de un arreglo bidimensional está
simultáneamente en una …la y en una columna. En matemáticas, a los arreglos bidimensionales se les llama
matrices, y son muy utilizados en problemas de Ingeniería.

En un arreglo bidimensional, cada elemento tiene una posición que se identi…ca mediante dos índices:
el de su …la y el de su columna.

4.6. Creación de arreglos bidimensionales

Los arreglos bidimensionales también son provistos por NumPy, por lo que debemos comenzar impor-
tando las funciónes de este módulo:

from numpy import *

Al igual que los arreglos de una dimensión, los arreglos bidimensionales también pueden ser creados
usando la función array, pero pasando como argumentos una lista con las …las de la matriz, por ejemplo:

a = array([[5.1, 7.4, 3.2, 9.9],


[1.9, 6.8, 4.1, 2.3],
[2.9, 6.4, 4.3, 1.4]])

Todas las …las deben ser del mismo largo, o si no ocurre un error de valor.

Los arreglos tienen un atributo llamado shape, que es una tupla con los tamaños de cada dimensión.
En el ejemplo, a es un arreglo de dos dimensiones que tiene tres …las y cuatro columnas:

a:shape
Salida: (3, 4)

Los arreglos también tienen otro atributo llamado size que indica cuántos elementos tiene el arreglo:

17
a:size
Salida: 12

Por supuesto, el valor de a.size siempre es el producto de los elementos de a.shape.

Hay que tener cuidado con la función len, ya que no retorna el tamaño del arreglo, sino su cantidad de
…las:

len(a)
Salida: 3

Las funciónes zeros y ones también sirven para crear arreglos bidimensionales. En vez de pasarles como
argumento un entero, hay que entregarles una tupla con las cantidades de …las y columnas que tendrá la
matriz:

zeros((3; 2))
array([[0; 0:]; [0; 0]; [0; 0:]])
ones((2; 5))
array([[1:; 1:; 1:; 1:; 1:]; [1:; 1:; 1:; 1:; 1:]])
Lo mismo se cumple para muchas otras funciónes que crean arreglos; por ejemplo la función random:

from numpy.random import random


random((5, 2))
array([[ 0.80177393, 0.46951148],
[ 0.37728842, 0.72704627],
[ 0.56237317, 0.3491332 ],
[ 0.35710483, 0.44033758],
[ 0.04107107, 0.47408363]])

4.7. Operaciónes con arreglos bidimensionales

Al igual que los arreglos de una dimensión, las operaciónes sobre las matrices se aplican término a
término:

a = array([[5, 1, 4],
... [0, 3, 2]])
b = array([[2, 3, -1],
... [1, 0, 1]])
a+b
array([[7, 4, 3],
[1, 3, 3]])

18
Obtener elementos de un arreglo bidimensional

Para obtener un elemento de un arreglo, debe indicarse los índices de su …la i y su columna j mediante
la sintaxis a[i; j]:

a = array([[3;21; 5;33; 4;67; 6;41]; [9;54; 0;30; 2;14; 6;57];


[5;62; 0;54; 0;71; 2;56]; [8;19; 2;12; 6;28; 8;76];
[8;72; 1;47; 0;77; 8;78]])
luego a[1; 2] es 2.14

También se puede obtener secciónes rectangulares del arreglo usando el operador de rebanado con los
índices:

a[1 : 3; 0 : 3]
array([[9;54; 0;3; 2;14; 6;57]; [5;62; 0;54; 0;71; 2;56]; [8;19; 2;12; 6;28; 8;76]])

Para obtener una …la completa, hay que indicar el índice de la …la, y poner : en el de las columnas
(signi…ca « desde el principio hasta el …nal» ). Lo mismo para las columnas:

a[2; :]
array([5;62; 0;54; 0;71; 2;56])
a[:; 3]
array([6;41; 6;57; 2;56; 8;76; 8;78])

4.8. Otras operaciones

La trasposición consiste en cambiar las …las por las columnas y viceversa. Para trasponer un arreglo,
se usa el método transpose:

array([[ 3.21, 5.33, 4.67, 6.41],


[ 9.54, 0.3 , 2.14, 6.57],
[ 5.62, 0.54, 0.71, 2.56]])

a:transpose()
array([[ 3.21, 9.54, 5.62],
[ 5.33, 0.3 , 0.54],
[ 4.67, 2.14, 0.71],
[ 6.41, 6.57, 2.56]])

El método reshape entrega un arreglo que tiene los mismos elementos pero otra forma. El parámetro
de reshape es una tupla indicando la nueva forma del arreglo:

19
a = arange(12)
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
a.reshape((4, 3))
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
a.reshape((2, 6))
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11]])

La función diag aplicada a un arreglo bidimensional entrega la diagonal principal de la matriz (es decir,
todos los elementos de la forma a[i, i]):

a = array([[ 3.21, 5.33, 4.67, 6.41],


[ 9.54, 0.3 , 2.14, 6.57],
[ 5.62, 0.54, 0.71, 2.56]])
diag(a)
array([ 3.21, 0.3 , 0.71])

Además, diag recibe un segundo parámetro opciónal para indicar otra diagonal que se desee obtener.
Las diagonales sobre la principal son positivas, y las que están bajo son negativas:

diag(a; 2)
array([4;67; 6;57])
diag(a; 1)
array([9;54; 0;54])

Reducciónes por …la y por columna

Algunas operaciónes pueden aplicarse tanto al arreglo completo como a todas las …las o a todas las
columnas. Por ejemplo, a.sum() entrega la suma de todos los elementos del arreglo. Además, se le puede
pasar un parámetro para hacer que la operación se haga por …las o por columnas:

a = array([[ 4.3, 2.9, 9.1, 0.1, 2. ],


... [ 8. , 4.5, 6.4, 6. , 4.3],
... [ 7.8, 3.1, 3.4, 7.8, 8.4],
... [ 1.2, 1.5, 9. , 6.3, 6.8],

20
... [ 7.6, 9.2, 3.3, 0.9, 8.6],
... [ 5.3, 6.7, 4.6, 5.3, 1.2],
... [ 4.6, 9.1, 1.5, 3. , 0.6]])
a.sum()
174.4
a.sum(0)
array([ 38.8, 37. , 37.3, 29.4, 31.9])
a.sum(1)
array([ 18.4, 29.2, 30.5, 24.8, 29.6, 23.1, 18.8])

El parámetro indica a lo largo de qué dimensión se hará la suma. El 0 signi…ca « sumar a lo largo de las
…las» . Pero hay que tener cuidado, ¡por que lo que se obtiene son las sumas de las columnas! Del mismo
modo, 1 signi…ca « a lo largo de las columnas, y lo que se obtiene es el arreglo con las sumas de cada …la.

Las operaciónes a.min() y a.max(), obtienene el maximo o minino de cada …la o columna.

5. Funciónes Matemática de Numpy

Es necesario importar la biblioteca numpy mediante la instrucción

import numpy as np

1. np: sin (x) : Calcula el seno de x

2. np: cos (x) : Calcula el coseno de x

3. np: tan (x) : Calcula la tangente de x

4. np: arcsin (x) : Calcula el ángulo que tiene por seno dicho número

5. np: arc cos (x) : Calcula el ángulo que tiene por coseno dicho número

6. np: arctan(x) : Calcula el ángulo que tiene por tangente dicho número

7. np:degrees(rad) : Convierte los radianes de grados

8. np:radians(deg) : Convierte los grados en radianes

9. np: sinh (x) : Calcula el seno hiperbólico de x

10. np: cosh (x) : Calcula el coseno hiperbólico de x

11. np: tanh (x) : Calcula la tangente hiperbólica de x

21
12. np: arcsinh (x) : Calcula el ángulo que tiene por arco seno hiperbólico dicho número

13. np: arccosh (x) : Calcula el ángulo que tiene por arco coseno hiperbólico dicho número

14. np: arctanh (x) : Calcula el ángulo que tiene por arco tangente hiperbólico dicho número

15. np:around(num; dec) : Redondea el número con cierto número de decimales

16. np:exp(x) : Calcual el exponencial de x

17. np:log(x) : Calcula el logaritmo natural de x

18. np:log10(x) : Calcula el logaritmo base 10 de x

19. np:sqrt(x) : Calcula la raiz cuadrada de x

20. np:power(num; pot) : Calcula numpot

21. np:gcd(num1; num2) : Calcula el maximo comun divisor de ambos números

22. np:gcd:reduce([num1 ; num2 ; :::; numn ]) : Calcula el maximo comun divisor de varios números

23. np:lcm(num1; num2) : Calcula el minimo comun multiplo de ambos números

6. Funciones Matemática de Math (Compatible con C++)

Es el módulo que contiene muchas funciones matematicas y se debe de importar por

f rom math import

1. math:f actorial(n) : Calcula el factorial de n

2. math:abs(n) : Calcula el valor absoluto de n

3. math:f abs(n) : Calcula el valor absoluto de n

4. math: lcm(n) : Calcula el mínimo común múltiplo de n1 y n2

5. math: gcd(n) : Calcula el máximo común divisor de n1 y n2

6. math:ceil(n) : Calcula el entero mayor o igual que n

7. math:comb(n; k) : Calcula la combinatoria de n en k

8. math:perm(n; k) : Calcula la permutacion de n en k sin repeticion

9. math:remainder(x; y) : Retorna el resto de x respecto a y

22
10. math:trunc(x) : Trunca el valor de x sin importar sus decimales.

11. math: exp(x) : Retorna el exponencial de x

12. math: log(x) : Retorna el logaritmo natural de x

13. math: log 10(x) : Retorna el logaritmo decimal de x

14. math: log 2(x) : Retorna el logaritmo base 2 de x

15. math:pow(x; y) : Retorna el valor de x elevado a la potencia y

16. math:sqrt(x) : Retorna la raiz cuadrada de x

17. math: sin (x) : Calcula el seno de x en radianes

18. math: cos (x) : Calcula el coseno de x en radianes

19. math: tan (x) : Calcula la tangente de x en radianes

20. math: arcsin (x) : Calcula el ángulo que tiene por seno dicho número en radianes

21. math: arc cos (x) : Calcula el ángulo que tiene por coseno dicho número en radianes

22. math: arctan(x) : Calcula el ángulo que tiene por tangente dicho número en radianes

23. math:degrees(rad) : Convierte los radianes de grados

24. math:radians(deg) : Convierte los grados en radianes

25. math: erf(x) : Returna la funcion error en x

26. math:gamma(x) : Returna la funcion gamma en x

7. Funciónes Matemática de Scipy (Algebra Lineal)

Es el principal paquete de Python, la información completa se puede localizar en

https : ==scipy:org=docs:html

Es necesario importar la biblioteca scipy mediante la instrucción

f rom scipy import linalg

1. scipy:linalg:inv(matriz) : Calcula la matriz inversa

2. linalg:solve(matriz cuadrada; coef icientes) : Resuelve sistema de ecuaciónes lineales cuadrado

23
3. scipy:linalg:solve_triangular(matriz; coef icientes) : Resuelve sistemas de ecuaciónes triangulares

4. linalg:det(matriz) : Calcula el determinante de una matriz

5. scipy:linalg:eigvals(matriz) : Calcula los valores y vectores propios

6. scipy:linalg:lu (matriz) : Factoriza una matriz por la descomposición LU

7. scipy:linalg:cholesky(matriz) : Factoriza una matriz por el método de Cholesky

8. Funciónes Matemática de Scipy (Raíces de Ecuacionesl)

Es necesario importar la biblioteca scipy mediante la instrucción

f rom scipy import linalg

1. scipy:optimize:bisect(f; a; b) : método de la bisección

2. optimize:root_scalar(f; bracket = [a;


/ b]; method = 0brentq0) : Raices de ecuaciónes

Los métodos pueden ser

a) ’bisect’

b) ’brentq’

c) ’brenth’

d ) ’ridder’

e) ’toms748’

f ) ’newton’

g) ’secante’

h) ’halley’

3. scipy:optimize:newton(f; semilla) : Calcula el método de Newton

4. scipy:integrate:romberg(f; a; b) : Calcula la integral en una variable

5. scipy:integrate:quad(f; a; b) : Calcula integral en una variable

6. scipy:integrate:dblquad(f; xa; xb; yc; yd) : Calcula integrales dobles

7. scipy:integrate:tplquad(f; xa; xb; yc; yd; ze; zf ) : Calcula integrales triples

8. scipy:integrate:quadrature(f unc; a; b) : Calcula integral en una variable por cuadraturas de Gauss

9. scipy:integrate:solve_ivp(f; [0; 4]; [0; 2]) : Resuelve ecuaciónes diferenciales

24
10. scipy:interpolate:lagrange(x; y) : Calcula el polinomio interpolador de Lagrange

11. scipy:misc:derivative(f; x0 ; dx = 1e n) : Calcula primer derivada de f evaluada en x0

9. Funciónes Matemática de Sympy (Programación Simbólica)

Es necesario importar la biblioteca scipy mediante la instrucción

f rom sympy:ntheory:generate import sieve; prime; isprime; primepi; randprime; f actorint

1. sieve:primerange(a; b) : Genera los primos en el rango establecido entre a y b

2. prime(n) : Genera el n - ésimo número primo.

3. isprime(n) : Veri…ca si el número n es un número primo

4. primepi(n) : Genera el número de primos menores que n

5. nextprime(n) : Genera el primo inmediato mayor de n

6. prevprime(n) : Genera el primo inmediato menor de n

7. randprime(a; b) : Genera un primo aleatorio en el aleatorio [a; b)

8. f actorint(n) : Factoriza el entero n con sus respectivas potencias

Tambien, podemos hacer programacion simbolica, mediante la llamada a

f rom sympy import

y luego hacer simbolo a la variable mediante la instruccion

x; y = Symbol("x y")

1. dif f (f; x; n) : Calcula la derivada de f respecto a x de orden n

2. dif f (f; x; x; x; y; y y; ) : Calcula derivada parcial

3. integrate(f; x) : Calcula la integral inde…nida de una funcion en una variable

4. integrate(f; (x; a; b)) : Calcula la integral de…nida de una funcion en una variable

5. integrate(f; (x; a; b); (y; a; b)) : Calcula la integral de…nida de una funcion en dos variable

6. integrate(f; (x; a; 1)) : Calcula la integral impropia de una funcion en una variable

25
7. limit(f; x; x0 ) : Calcula el limite de una funcion en el punto x0

8. limit(f; x; x0 ; " + ") : Calcula el limite de una funcion en el punto x0 por la derecha

9. limit(f; x; x0 ; " ") : Calcula el limite de una funcion en el punto x0 por la izquierda

10. expresion = f uncion; expresion:series(f uncion; x; n) : Calcula el desarrollo en serie de la


expresion dada hasta el orden (n 1)

10. Programas de Ejemplos

1. Numeros primos de Wagsta¤

#Números Primos de Wagsta¤

import sympy.ntheory as nt

for q in range(3,102):

if nt.isprime(q):

p=round((2**q+1)/3)

if nt.isprime(p):

print(p)

print()

2. Obtener todos los primos menores que

from sympy.ntheory import isprime

#Primos entre 2 y 500

for i in range(2, 500):

if isprime(i):

print(i, end=)

print()

3. Generar un arreglo unidimensional de 10 números aleatorios y obtener su máximo y mínimo.

import numpy as np

#Arreglo aleatorio, obteniendo máximo y mínimo.

arreglo = np.random.randint(100, 999, size=15)

26
def obtenerMayor():

return max(arreglo)

def obtenerMenor():

return min(arreglo)

print(’Arreglo Aleatorio: ’+ str(arreglo))

print(’El mayor es: ’+ str(obtenerMayor()))

print(’El menor es: ’+ str(obtenerMenor()))

4. Generar una matriz triangular superior aleatoria de orden 5

#Matriz triangular superior aleatoria de orden 5

from random import randint

…las, columnas = 5 , 5

matriz =[[randint(10,99) for i in range(0,5)] for j in range(0,5)]

for i in range(…las):

for j in range(columnas):

if i>j:

matriz[i][j]= 0

print()

for a in matriz:

print(a)

5. Factores Primos de un numero determinado

#Factores primos de un numero

from sympy.ntheory import primefactors

L=primefactors(1001)

suma=0

print ("Factores Primos : ", end=)

for i in L:

print (i, end=)

27
suma=suma+i

print()

print (.E l resultado es: ", suma)

6. Miscelanea sobre Operaciones Matriciales

import numpy as np

.O peraciones matriciales usuales

Generando una matriz determinada "

print()

A=np.array([[2,5,0],[4,7,8],[6,3,4]])

print ("Matriz A")

print (A)

print()

#Generando una matriz aleatoriaa

A=np.random.randint(10,size=(3,3))

print ("Matriz A")

print (A)

print()

#Producto de un escalar por una constante

print("Matriz 2*A")

print (2*A)

print()

print ("Matriz B")

B=np.array([[1,2,1],[2,3,0],[0,3,4]])

print(B)

print()

#Generando una matriz nula de orden 3

C=np.zeros((3,3),dtype=int)

print ("Matriz C")

28
print (C)

print()

print ("Suma matricial A+B")

print (A+B)

print()

print (Resta matricial A-B")

print (A-B)

print()

print ("Producto Matricial A*B")

#Primer forma

print (np.dot(A,B))

print()

#Segunda forma

print (np.matmul(A,B))

print()

#Primera forma de matriz traspuesta

print ("Matriz Traspuesta de A")

print (np.transpose(A))

print()

#Segunda forma de matriz traspuesta

print ("Matriz Traspuesta de A")

for i in range(0,3):

for j in range (0,3):

C[i,j]=A[j,i]

print (C)

print()

print ("Potencia Matricial")

print (np.linalg.matrix_power(A,5))

print()

print ("Determinante")

29
print (round(np.linalg.det(A),0))

print()

print ("Inversa")

print (np.linalg.inv(A))

print()

#Solucion de un Sistema de Ecuación de Orden Cuadrado

A=np.array([[2,-1,1],[-1,1,7],[0,1,6]])

B=np.array([3,-2,-1])

print("Solucion del S.E.L")

print (np.linalg.solve(A,B))

print()

7. Metodo de Abbasbandy (3)

#Metodo de Abbasbandy (3)

import numpy as np

#Primera forma de declarar una funcion

def f(x):

return np.exp(-x)-x**3

#Segunda forma de declarar una funcion

def fd1(x):

return (-np.exp(-x)-3*x**2)

#Tercera forma, funcion lambda

fd2 = lambda x: np.exp(-x)-6*x

i=1

xn=0.7

conta=0

error=10e-25

while True:

xnn=xn-f(xn)/fd1(xn)-(f(xn)**2*fd2(xn))/(2*fd1(xn)**3)-

30
(f(xn)**3*fd2(xn)**2)/(2*fd1(xn)**5)-

(3*f(xn)**5*fd2(xn)**3)/(8*fd1(xn)**8)-(f(xn)**5*fd2(xn)**4)/(32*fd1(xn)**9)

conta=conta+1

if abs((xnn-xn)/xnn)<error:

break

xn=xnn

print()

print("Método Abbasbandy 3, solución obtenida en", conta, "interacciones {:.10f}".format(xnn))

print()

8. Diferenciacion Centrada

#Diferenciacion centrada

import numpy as np

def f(x):

return (np.exp(x)*np.cos(x))

x=0.5

h=0.01

print(f.E l valor de la Derivada evaluada en {x} es:", (-f(x+2*h)+8*f(x+h)-8*f(x-h)+f(x-2*h))/(12*h))

9. Conjetura de Collatz

#Conjetura de Collatz

#Prueba de la conjetura de collatz en Python

def par(num):

if (num % 2 == 1):

return False

else:

return True

def CalculateCollatz(num):

while num > 1:

31
if (par(num) == False):

num = num * 3 + 1

print(int(num), end=)

else:

num = num / 2

print(int(num), end=)

num=int(input(’Ingresa un numero : ’))

print(num, end=)

CalculateCollatz(num)

10. Generar los numeros que veri…can x2 y2 z 2 = 27

#Genera los numeros que veri…ca x2 y2 z 2 = 27

#Veri…ca la condicion x**2-y**2-z**2==27

for x in range(1,35):

for y in range(1,35):

for z in range(1,35):

if x**2-y**2-z**2==27:

print(x, , y, , z)

11. Generar los primeros numeros primos de Wagsta¤

#Numero primos de Wagsta¤

import sympy.ntheory as nt

for q in range(3, 102):

if nt.isprime(q):

p=round((2**q+1)/3)

if nt.isprime(p):

print(p)

print()

32
12. Metodo de Newton

#Metodo de Newton

from math import exp, log

def f(x):

return exp(-x) - log(x)

def fd(x):

return - exp(-x) - (1/x)

x=‡oat(input("Valor inicial: "))

error_per, conta = 0.000005, 0

while True:

xn=x-f(x)/fd(x)

conta=conta+1

if abs((xn-x)/xn)<error_per:

break

x=xn

print("La solucion es :", x,.obtenida en la iteraccion:", conta )

13. Programa que genera el coseno por recursion

#Coseno recursivo

def coseno():

x= ‡oat(input (.E s criba el numero : "))

k=1

u =[1]

while True :

u.append (-x **2/(2* k *(2*k -1))* u[k -1])

if abs(u[k]-u[k -1]) <1e-100:

break

k+=1

print ("{:.50f}".format(sum(u)))

33
coseno() #Llamada a la funcion coseno

14. Factorial de un numero

#Calcula el factorial

from numpy import prod

from functools import reduce

from operator import mul

def factorial(n):

print(prod(range(1,n+1)))

factorial(10)

def factorial(n):

print (reduce(mul,range(1,n+1)))

factorial(10)

def factorial(n):

print(reduce((lambda x,y: x*y),range(1,n+1)))

factorial(10)

def factorial(n):

if n==0:

return 1

else:

return (n*factorial(n-1))

print(factorial(10))

34
15. Metodo RK4

#Metodo Runge Kutta 4

import numpy as np

x=0

y=2

h=0.5

def f (x,y):

return 4*np.exp(0.8*x)-0.5*y

while x<=3.5:

k1=f(x,y)

k2=f(x+0.5*h,y+0.5*k1*h)

k3=f(x+0.5*h,y+0.5*k2*h)

k4=f(x+h,y+k3*h)

yn=y+1/6*h*(k1+2*k2+2*k3+k4)

x=x+h

y=yn

print ("{:.50f}".format(y))

16. Generar los primeros 4 numeros perfectos

#Numeros perfectos

# Numeros Perfectos

suma=0

for i in range (1, 10000):

suma=0

for j in range(1, i):

if i % j == 0:

suma=suma+j

if suma==i:

print(i, , end=)

35
17. Seno hiperbolico por serie de potencias

#Seno hiperbolico por series de potencias

def factorial(x):

if x==0:

return 1

else:

return (x*factorial(x-1))

x=2

suma=0

k=1

while True:

suma=suma+x**(2*k-1)/factorial(2*k-1)

k=k+1

if k>=7:

break

print(.E l valor aproximado es : ", suma)

18. Integracion por trapecio multiple

#Trapecio multiple

import numpy as np

def f(x):

return (np.arcsin(x))

n=1001

a=0.5

b=1

h=(b-a)/n

suma=0.0

for i in range(1,n):

suma=suma+2*f(a+i*h)

print(.E l valor de la integral es : ", h/2*(f(a)+suma+f(b)))

36
19. Convertir un decimal a binario

#Conversion decimal a binario

num=str(bin(int(input("Deme el numero decimal: "))))

for i in range(2, len(num)):

print (num[i], end=)

20. Elementos repetidos contiguo en un arreglo aleatorio

#Cuenta elementos repetidos en un arreglo

arr = []

counter = 0

narr = []

for i in range(0, 100):

arr.insert(i, random.randint(0,9))

for j in range(0, 100):

if j < len(arr) - 1:

if arr[j] == arr[j + 1]:

counter = counter + 1

narr.insert(i, arr[j])

print(.A rreglo original: "+ str(arr))

print("Numeros contiguos repetidos: "+ str(narr))

print(Çantidad: "+ str(counter))

21. Interpolacion de Lagrange y Newton

from scipy.interpolate import lagrange

from numpy import array

import numpy as np

x=[0,1,2]

y=[1,2,9]

print(lagrange(x, y))

37
def f(x):

return (np.log(x))

def lagrange(xx):

suma=0

for i in range(0,8):

prod=f(x[i])

for j in range(0,8):

if i!=j :

prod=prod*(xx-x[j])/(x[i]-x[j])

suma=suma+prod

return (suma)

x=array([1, 4, 6, 5, 3, 1.5, 2.5, 3.5])

y=np.zeros(8)

ea=np.zeros(8)

print()

print("Deme el valor a evaluar en el polinomio : ")

xx=‡oat(input())

print(.E l valor del polinomio de Lagrange es : ", lagrange(xx))

#METODO DE INTERPOLACION DE NEWTON

n=8

def newton(xx):

fdd=np.zeros([8,8])

for i in range(0,n):

fdd[i,0]=f(x[i])

for j in range(1,n):

for i in range(0,n-j):

fdd[i,j]=(fdd[i+1,j-1]-fdd[i,j-1])/(x[i+j]-x[i])

xter=1

y[0]=fdd[0,0]

for orden in range(1,n):

38
xter=xter*(xx-x[orden-1])

yy=y[orden-1]+fdd[0,orden]*xter

ea[orden]=yy-y[orden-1]

y[orden]=yy

return (y[orden])

print()

print(.E l valor del polinomio de Newton es : ", newton(xx))

39

También podría gustarte