Documento de Python (Junio 2021)
Documento de Python (Junio 2021)
PYTHON
Autor
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
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
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.
2. Desarrollo de software,
3. Matemáticas complejas
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.
1. Python funciona en diferentes plataformas (Windows, Mac, Linux, Frambuesa Pi, etc).
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. Interpretado
2. Tipado dinámico: una misma variable puede tomar valores de distinto tipo en distintos momentos
5. Manejo de excepciones
6. Orientado a objetos
7. Código abierto
Comentario de Python
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.
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.
2. import módulo
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.
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.
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.
1. math
2. random
3. datetime
4. fractions
5. turtle
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.
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).
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.
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.
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.
Tipo Datos
Texto str
Numerico int, ‡oat, complex
Secuencia list, tuple, range
Boole bool
Conjunto set, frozenset
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. Suma: +
2. Resta: -
3. Producto: *
4. Division real: /
5. Division entera: //
6. Potencia: **
7. Resto o módulo: %
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
6. c = a implica c = c a (Potencia)
Operaciónes lógicas
1. x or y
2. x and y
8
3. not x
Operaciónes Relaciónales
1. == (igualdad)
4. ! = (distinto)
Python tiene incorporado un módulo llamado random que se puede utilizar para generar números
aleatorios
import random
Métodos de Ramdom
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
print(cadena[2:5])
La indexación negativa
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))
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.
cadena:strip()
cadena:lower()
10
3. El upper() método devuelve la cadena en mayúsculas:
cadena:upper()
cadena:replace(cad1; cad2)
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:
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
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:
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])
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:
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.
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.
c) a + b
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:
Note que si quisiéramos hacer estas operaciónes usando listas, necesitaríamos usar un ciclo para hacer
las operaciónes elemento a elemento.
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
14
array([ 0. , 0.19634954, 0.39269908,
0.58904862, 0.78539816, 0.9817477 ,
1.17809725, 1.37444679, 1.57079633])
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.
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:
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:
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:
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.
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
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()
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.
Los arreglos bidimensionales también son provistos por NumPy, por lo que debemos comenzar impor-
tando las funciónes de este módulo:
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:
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
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:
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]:
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])
La trasposición consiste en cambiar las …las por las columnas y viceversa. Para trasponer un arreglo,
se usa el método transpose:
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]):
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])
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:
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.
import numpy as np
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
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
22. np:gcd:reduce([num1 ; num2 ; :::; numn ]) : Calcula el maximo comun divisor de varios números
22
10. math:trunc(x) : Trunca el valor de x sin importar sus decimales.
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
https : ==scipy:org=docs:html
23
3. scipy:linalg:solve_triangular(matriz; coef icientes) : Resuelve sistemas de ecuaciónes triangulares
a) ’bisect’
b) ’brentq’
c) ’brenth’
d ) ’ridder’
e) ’toms748’
f ) ’newton’
g) ’secante’
h) ’halley’
24
10. scipy:interpolate:lagrange(x; y) : Calcula el polinomio interpolador de Lagrange
x; y = Symbol("x y")
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
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()
if isprime(i):
print(i, end=)
print()
import numpy as np
26
def obtenerMayor():
return max(arreglo)
def obtenerMenor():
return min(arreglo)
…las, columnas = 5 , 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)
L=primefactors(1001)
suma=0
for i in L:
27
suma=suma+i
print()
import numpy as np
print()
A=np.array([[2,5,0],[4,7,8],[6,3,4]])
print (A)
print()
A=np.random.randint(10,size=(3,3))
print (A)
print()
print("Matriz 2*A")
print (2*A)
print()
B=np.array([[1,2,1],[2,3,0],[0,3,4]])
print(B)
print()
C=np.zeros((3,3),dtype=int)
28
print (C)
print()
print (A+B)
print()
print (A-B)
print()
#Primer forma
print (np.dot(A,B))
print()
#Segunda forma
print (np.matmul(A,B))
print()
print (np.transpose(A))
print()
for i in range(0,3):
C[i,j]=A[j,i]
print (C)
print()
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()
A=np.array([[2,-1,1],[-1,1,7],[0,1,6]])
B=np.array([3,-2,-1])
print (np.linalg.solve(A,B))
print()
import numpy as np
def f(x):
return np.exp(-x)-x**3
def fd1(x):
return (-np.exp(-x)-3*x**2)
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()
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
9. Conjetura de Collatz
#Conjetura de Collatz
def par(num):
if (num % 2 == 1):
return False
else:
return True
def CalculateCollatz(num):
31
if (par(num) == False):
num = num * 3 + 1
print(int(num), end=)
else:
num = num / 2
print(int(num), end=)
print(num, end=)
CalculateCollatz(num)
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)
import sympy.ntheory as nt
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
def f(x):
def fd(x):
while True:
xn=x-f(x)/fd(x)
conta=conta+1
if abs((xn-x)/xn)<error_per:
break
x=xn
#Coseno recursivo
def coseno():
k=1
u =[1]
while True :
break
k+=1
print ("{:.50f}".format(sum(u)))
33
coseno() #Llamada a la funcion coseno
#Calcula el factorial
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):
factorial(10)
def factorial(n):
if n==0:
return 1
else:
return (n*factorial(n-1))
print(factorial(10))
34
15. Metodo RK4
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))
#Numeros perfectos
# Numeros Perfectos
suma=0
suma=0
if i % j == 0:
suma=suma+j
if suma==i:
print(i, , end=)
35
17. Seno hiperbolico por serie 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
#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)
36
19. Convertir un decimal a binario
arr = []
counter = 0
narr = []
arr.insert(i, random.randint(0,9))
if j < len(arr) - 1:
counter = counter + 1
narr.insert(i, arr[j])
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)
y=np.zeros(8)
ea=np.zeros(8)
print()
xx=‡oat(input())
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]
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()
39