Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Python

Módulos Matemáticos em Python: Math e Cmath

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called Mathematical Modules in Python.
Mathematical Modules in Python: Random

Portuguese (Português) translation by Erick Patrick (you can also view the original English article)

Ao criar programas no dia-a-dia, geralmente nos deparamos com situações onde precisamos de um pouco de matemática para realizar uma tarefa. Como outras linguagens, Python provê vários operadores para cálculos básicos, como * para multiplicação, % para módulo e // para divisão piso.

Se criamos programas para esses tipos de tarefas, como estudar a movimentação periódica ou simulação de circuitos elétricos, precisaremos de funções trigonométrica assim como números complexos. Embora não possamos usá-las diretamente, podemos fazê-los através de dois módulos matemáticos. Eles são o math e o cmath.

O primeiro dá acesso às funções hiperbólicas, trigonométricas e logarítimias para números reais, e a segunda permite trabalhar com números complexos. Nesse tutorial, falaremos das funções mais importantes oferecidas por esses módulos. A não ser que dito o contrário, todos os retornos são pontos flutuantes.

Funções Aritiméticas

Essas funções realizam várias operações aritiméticas, como calcular o piso, teto ou valor absoluto de um número usando floor(x), ceil(x) e fabs(x), respectivamente. A função ceil(x) retornará o menor número inteiro maior ou igual a x. Similarmente, floor(x) retornará o maio número inteiro menor ou igual a x. A função fabs(x) retona o valor absoluto de x.

Também podemos realizar operações não triviais, como o cálculo do fatorial usando factorial(x). Um fatorial é o produto de um inteiro e todos os inteiros positivos menor que ele. É usado extensivamente ao lidar com combinações e permutações. Pode ser usado para calcular o valor do seno e coseno.

Outra função útil no módulo math é gcd(x, y) que dá o maior divisor comun (GDC, no inglês) de dois números x e y. Quando x e y são diferentes de zero, essa função retorna o maior inteiro positivo que divide ambos. Tambem podemos usá-la indiretamente para calcular o menor múltiplo comum de dois números usando essa fórmula:

Eis algumas funções aritiméticas que Python oferece:

Funções Trigonométricas

Essas funções relacionam ângulos e lados de um triângulo. Elas tem muitas aplicações, incluindo o estudo dos triângulos e a modelagem de fenômenos periódicos como ondas de som e luz. Lembremo-nos que o ângulo provido é em radiano.

Podemos calcular sin(x), cos(x) e tan(x) diretamente usando esse módulo. Contudo, não há fórmula direta para calcular cosec(x), sec(x) e cot(x), mas seus valores são recíprocos aos retornos de sin(x), cos(x), tan(x), respectivamente.

Ao invés de calcular o valor das funções trigonométricas em um certo ângulo, também podemos fazer o inverso e calcular o ângulo que gerou um valor, usando asin(x), acos(x) e atan(x).

Quem conhece o teorema de Pitágoras? Ele diz que o quadrado da hipotenusa (o lado oposto ao ângulo reto) é igual à soma dos quadrados dos outros dois lados. A hipotenusa também é o lado maior de um triângulo reto. O módulo math provê a função hypot(a, b) para calcular o comprimento da hipotenusa.

Funções Hiperbólicas

Funções hiperbólicas são análogas às trigonométricas porém baseiam-se em uma hipérbole ao invés de círculo. Em trigonometria, os pontos (cos b e sin b) representam pontos em um círculo. Nas funções hiperbólicas, os pontos representam os pontos que formas o lado direito de uma hipérbole equilátera.

Como nas funções trigonoétricas, podemos calcular sinh(x), cosh(x) e tanh(x) diretamente. Os outros valores podem ser calculados usando as várias relações entre esses três valores. Também há funcções como asinh(x), acosh(x) e atanh(x) para calcular o inverso dos valores hiperbólicos correspondentes.

Como math.pi é 3.141592653589793, ao usar asinh() no retorno de sinh(math.pi), obtemos π de volta.

Funções de Logarítimicas e de Potência

Provavelmente lidaremos mais com potências e logarítimos que funções hiperbólicas e trigonométricas. Felizmente, o móduo math provê várias funções para calcular logarítimos.

Podemo usr log(x, [base]) pra calcular o log de um dado número x na base em questão. Se deixamos o argumento base em branco, o valor do log de x será calculado na base e. Aqui, e é a constante matemática cujo valor é 2.71828182... e pode ser acessada via math.e. Por falar nisso, Python nos permite acessar outra constante, π, usando math.pi.

Se quisermos calculas o logarítimo na base-2 ou base-10 usando log2(x) e log10(x), teremos valores mais preciso que log(x, 2) e log(x, 10). Lembremo-nos que não existe log3(x), então temos de usar log(x, 3) para calcular logarítimos na base-3. O mesmo vale para todas as outras bases.

Se o número que queremos o logarítimo é próximo de 0, podemos usar log1p(x). O 1p em log1p significa 1 mais. Assim, log1p(x) calcula log(1+x) onde x é próximo de zero. Contudo, é mais preciso usar log1p(x).

Também podemos calcular o valor de x elevado à potência y usando pow(x, y). Antes de computador os valores, a função converte ambos argumentos para ponto flutuante. Se quisermos o resultado em inteiro, devemos usar a função embutida de Python, pow(), ou o operador **.

Também podemos computador a raiz quadrada de qualquer número x usando sqrt(x), mas obtemos o mesmo usando pow(x, 0.5).

Números Complexos

Números complexos são presentados internamente por coordenadas polares ou Cartesianas. Um número complexo z será representado em coordenadas Cartesianas como z = x + iy, onde x representa a parte real e y representa a imaginária. Outra forma de representá-los é por coordenadas polares.

Nesse caso, o número z seri definido pela combinação do módulo r e o ângulo phi. O módulo r é a distância entre o número complexo z e a origem. O ângulo phi é o ângulo anti-horário medido em radianos a partir do eixo x positivo ao segmento de linha unindo-se a z e à origem.

Ao lidar com números complexos, o módulo cmath é de grande ajuda. O módulo de um número complexo pode ser calculado usando a função padrão abs(), e sua fase pode ser calculada usando phase(z), disponível em cmath. Podemos converter um número complexo usando da forma Cartesiana para polar, usando polar(z), que retornará um par (r, phi), onde r é abs(z) e phi é phase(z).

Similarmente, convertemos um número complexo da forma polar para Cartesiana usando rect(r, phi). O número complexo retornado será r * (math.cos(phi) + math.sin(phi)*1j).

O módulo cmath também permite usar funções matemáticas comuns em números complexos. Por exemplo, podemos calcular a raiz quadrada dum número complexo usando sqrt(z) ou o cosseno usando cos(z).

Números complexos tem várias aplicações como modelagem de circuitos elétricos, dinâmica de fluidos e análise de sinais. Se precisarmos trabalhar com qualquer um deles, cmath não nos disapontará.

Ideias Finais

Todas essas funções discutidas acima tem suas aplicações específicas. Por exemplo, podemos usar factorial(x) para problemas de combinação e permutação. Podemos usar funções trigonométricas para resolver um vetor em coordenadas Cartesianas. Também podemos usá-las para simular funções periódicas como ondas de som e luz.

A curva de uma corda pendurada entre dois posts pode ser determinada por uma função hiperbólica. Como todas as funções estão disponíveis diretamente no módulo math, é bem fácil criar programas pequenos que realizam essas tarefas.

Esperamos que tenham curtido o tutorial. Quaisquer dúvidas, deixe um comentário.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.