Matemáticas nativas
Cita con formato IEEE:
E. Bahit, "Matemáticas nativas", in
Python Aplicado, 4th ed., EBRC Publisher, 2022, pp.
189-207.
Cita con formato APA 7:
Bahit, E. (2022). Matemáticas nativas. In
Python Aplicado (4th ed., pp. 189-207). EBRC Publisher.
Cita en línea:
(Bahit, 2022)
La biblioteca estándar de Python ofrece siete módulos para dar soporte a operaciones numéricas, estadísticas, y matemáticas en general. Estos módulos se describen en la siguiente tabla.
Módulo | Función | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
numbers | Se trata de un módulo que define pseudoclases abstractas para
tipos numéricos, pero que no están destinados a ser instanciados,
sino heredados12. La jerarquía de tipos definidos es
la siguiente:
|
||||||||||
math | El módulo math provee un acceso directo a funciones matemáticas generales definidas en el estándar del lenguaje C. Algunas de sus funciones se describen a continuación. La documentación completa se encuentra disponible en https://docs.python.org/es/3/library/math.html | ||||||||||
cmath | Similar a math pero con soporte para números complejos. | ||||||||||
decimal | Es una alternativa al tipo float que ofrece mayor precisión en el cómputo aritmético y redondeo de números de coma flotante. | ||||||||||
fractions | Módulo para realizar operaciones de cómputo con números racionales. | ||||||||||
random | Módulo para generación de números pseudoaleatorios criptográficamente inseguros. | ||||||||||
statistic | Funciones estadísticas. |
El módulo math
Algunas de las funciones destacadas de este módulo son las funciones
comb
(combinatoria), factorial
,
perm
(permutaciones), gcd
(máximo común
divisor), prod
(producto), log
(logaritmo),
pow
(potencia), sqrt
(raíz cuadrada),
sin
, cos
, y tan
(seno, coseno, y
tangente, respectivamente). También retorna algunas constantes como
pi
y e
(número de Euler).
Combinaciones, factoriales y permutaciones
La teoría combinatoria formula las bases necesarias para poder realizar cuentas en situaciones complejas que no se resuelven con una simple suma.
Una combinación es cualquier selección de parte o de todos los objetos simultáneamente, a partir de un número de objetos dados.
Por ejemplo, ¿cuántas posibles combinaciones de dos letras existen a partir de las letras de la palabra hola? Se pueden combinar: ho, hl, ha, ol, oa, y la. Es decir, que para un total de 4 letras, tomadas de a 2 letras por vez, existe un total de 6 posibles combinaciones.
El número de combinaciones posibles para n objetos diferentes, seleccionando r objetos por vez, para r \le n está determinado por:
^{n}C_{r} = {n! \over {r!(n-1)!}}
Donde:
n! se denomina n factorial o factorial de n y se obtiene multiplicando todos los enteros positivos de n hasta el 1. Así, para n=7, n!=7 \times 6 \times 5 \times 4 \times 3 \times 2 \times 1 (en la práctica, se prescinde de la multiplicación por 1).
Dado que entre 0 y 1 el único entero positivo es 1, el factorial de 0 es 1, tal que 0! = 1.
^{n}C_{r} Se lee como combinaciones de n tomadas de r en r. También se denota con el binomio {n \choose r}.
Así, retomando el ejemplo de combinaciones de letras de la palabra hola tomadas de a 2 por vez, las 6 combinaciones posibles se obtendrían a partir de:
^{4}C_{2} = {4! \over {2!(4-2)!}}= {{4 \times 3 \times 2 \times 1} \over {2 \times 1 (4-2)!}} = {24 \over 2 \times 1 \times 2 \times 1} = {24 \over 4} = 6
La función math.comb(n, r)
disponible desde
Python 3.8, retorna el número de combinaciones posibles
para n elementos tomados de r elementos por vez,
sin necesidad de tener que recurrir al factorial:
>>> from math import comb >>> comb(4, 2) 6
Sin embargo, en versiones anteriores, sí será necesario recurrir al
cálculo factorial, que podrá hacerse mediante la función
math.factorial(x)
donde x es el número a
factorizar:
>>> from math import factorial >>> n = 4 >>> r = 2 >>> factorial(n) 24 >>> c = factorial(n) / (factorial(r) * factorial(n-r)) >>> c 6.0
En una combinación, el orden de los elementos es indistinto. Cuando el orden—y no la combinación— es importante, se aplican las leyes de la...