Módulo Math

Teoria Completa

Usando módulos em Python

Cara, vamos supor que pra resolver um determinado exercício você precise calcular o seno de um ângulo qualquer. Vai por mim, fazer isso na unha vai ser muuuito difícil. Por isso que hoje eu vim te contar da existência dos módulos.

A ideia do negócio é que você pode importar códigos escritos por outras pessoas. módulo que a gente vai aprender a usar hoje vai ser o math, este módulo vem com códigos prontos relacionados a (adivinhe?!) matemática! Pra importar um módulo em Python, a gente só precisa da seguinte linha:

Não to zoando, realmente é só isso. Depois dessa linha, o programa vai conhecer tudo que tem dentro do módulo, mas antes dessa linha, não. Ou seja, o módulo só existirá a partir de onde você importar. Por isso, a dica é você sempre importar módulos na primeira linha do seu código.

Obs: caso você queira importar algum outro módulo sem ser o math, basta mudar “math” nessa linha pelo nome do módulo que você quer importar, ta ok?! Vamos falar de outros nos próximos tópicos.

Obs 2: caso você tenha que importar mais de um módulo, faça isso nas primeiras linhas. Um embaixo do outro. Mas garanta que acima de um import só tenha outros imports.

Usando Pi

Agora que a gente já sabe importar o módulo, vamos falar sobre alguns métodos do módulo math, que vão salvar nossas vidas várias vezes!

O primeiro é o Pi. Até aqui, sempre que a gente precisou usar Pi, a gente digitou 3.14. Mas o módulo math vem com um Pi com várias casas decimais. Pra usar o Pi do módulo, usamos o math.pi.

Viu?! Dá pra fazer contas usando o Pi com 15 casas decimais! (se você executar esse código, vai ver que os resultados têm 15 casas decimais).

Além do Pi, a gente costuma usar bastante funções trigonométricas também!

Métodos trigonométricos

Já vou deixar de cara pra você dar uma olhada em como usar as funções trigonométricas da matemática usando módulo math.

Mas tu não pode esquecer que essas funções recebem os ângulos em radianos. Se tu quiser converter de grau pra radianos, é necessário usar uma função de conversão.

Esse código faz exatamente a mesma coisa que o último, mas a gente usou a função math.radians() pra fazer conversões de graus pra radianos. Em seguida, fizemos os cálculos das funções trigonométricas. Também é possível o processo contrário, converter radianos pra graus, usando a função math.degrees().

Método de raiz quadrada

Algumas pessoas podem ficar bem confusas calculando raiz quadrada usando expoentes fracionários. O módulo math trás uma solução.

Esses dois códigos fazem exatamente a mesma coisa. Os dois calculam e exibem a raiz quadrada de 49. O segundo é mais fácil de entender (sqrt é abreviação de “square root”, que significa “raiz quadrada” em inglês). Mas o primeiro é mais flexível. Com o math.sqrt() só é possível calcular raízes quadradas, enquanto o método do expoente fracionário pode ser usado pra raízes cúbicas, etc..

Além disso, o expoente fracionário resulta em um número complexo se você tentar calcular raízes negativas. Em contrapartida, o math.sqrt() vai retornar um erro. Se sua questão envolver números complexos, a primeira solução é a única possível.

Na verdade, usar expoente fracionário resolve a maioria dos problemas no calculo de raizes, então minha dica é você sempre optar por ele, ok?!

Logaritmos com math

Também pode ser útil utilizar logarítmos pra resolver algum exercício. O módulo math trás um método pra usar logarítmos naturais (famoso ln).

Não esquece que não dá pra calcular log de número negativo, e nem de 0, ok?! O módulo math só abrange números reais (infinitos não são números reais).

Caso você queira calcular o log de uma base específica, você pode usar o segundo parâmetro da função math.log() pra escolher a base.

Usando constante de euler

Assim como pi, o módulo math trás a constante de euler pra gente, mas por meio de uma função. A função math.exp(x) retorna e^x.

Arredondamentos

O módulo math também vem com algumas funções que ajudam a gente quando precisamos arredondar um número real pra um número inteiro. As funções math.floor() e math.ceil() arredondam pra baixo e pra cima, respectivamente. Se liga em como usar:

Números complexos

Cara, tudo no módulo math foi feito só pro domínio real. Não dá pra fazer cálculos de números complexos usando essa biblioteca, mas, caso você realmente precise usar complexos, você pode trocar o módulo math pelo cmath.

O módulo funciona da mesma forma, e tem as mesmas funções. Porém, o resultado sempre vai ter parte imaginária. É a única forma de fazer operações com complexos. Mas mano, só usa isso se for necessário, ok?! Se o exercício não especificar que é pra usar, então tu usa o math mesmo.

Dicas finais

Cara, programação tem muito mais a ver com pensar do que com digitar. Você pode até decorar todos os comandos do mundo, mas o importante mesmo é fazer os exercícios de fixação. Te espero lá, ok?! Forte abraço!

Expandir

Exercício Resolvido #1

PUC-Rio, Lista 2.

Uma rampa plana, de 36 m de comprimento, faz ângulo de 30° com o plano horizontal. Uma pessoa que sobe a rampa inteira eleva-se verticalmente quantos metros?

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Fala aí, meu parceiro! Parece que voltamos ao ensino fundamental, véi. Mas é bom que a gente relembra essas paradas de trigonometria que cai em todas as matérias de engenharia!

Primeiro, não ficou muito óbvio no enunciado, mas a questão quer saber a altura da barrinha vermelha da figura. Bora chamar essa altura de h pra facilitar nossa vida.

Pra gente descobrir a altura H, bora usar essa regrinha aqui:

Lembra dela? Seno é igual ao cateto oposto sobre a hipotenusa. Pra nossa sorte, a gente já tem o ângulo theta e a hipotenusa! Vamos substituir os valores.

Pronto! Nossa matemática termina por aqui. A partir daqui, vamos fazer essa conta usando Python. Na verdade, essa até dava pra fazer porque o seno de 30º a gente já sabe, mas vai por mim, seu professor de prog vai ficar bolado se a gente não usar Python pra resolver!

Passo 2

Pra resolver aquela continha em Python, primeiro a gente precisa ter acesso ao módulo math, que é onde estão guardadas as funções trigonométricas em Python. Pra isso, vamos importar a biblioteca!

Pronto! Fazer as importações de módulos logo nas primeiras linhas do código é importante pra gente não se enrolar depois, já que as novas funções só estarão disponíveis abaixo dessa linha.

Agora que já temos acesso ao módulo, a gente pode começar a calcular. Vamos, primeiramente, transformar 30º em radianos, jae? Isso porque as funções trigonométricas do módulo math estão todas em radianos. Pra fazer a conversão, bora usar a função math.radians()

Show! Agora, na variável “angulo” a gente tem salvo o ângulo 30º em radianos. Só falta a gente calcular o valor de H.

Pronto! Agora a altura foi calculada, mas a gente não sabe qual é ainda. Precisamos que o programa nos informe o resultado.

Passo 3

Pro programa nos contar qual o resultado salvo na variável H, a gente vai usar a função print()! Olha:

Ala! Agora, ao executar, o programa vai retornar pra gente o resultado. Repara que esse programa não tem valores variáveis. A gente tá usando Python como uma calculadora mesmo. Sempre que executarmos, o resultado será o mesmo. E a ideia do enunciado é essa!

Ok, esse resultado não tá muito bonito não. Vamos dar uma melhoradinha usando formatação de string. Lembra de formatação de string? São importantes, hein! Dá uma olhadinha no tópico que tem aqui na playlist. Vai ser rápido, prometo.

Pronto! Usando formatação e usado uma mensagem mais bonitinha, bora ver como fica o resultado do nosso programa:

Olha lá, que bonito.

Essa é a resposta do nosso problema. Repara que o enunciado não tá pedindo o programa, mas sim a altura. A resposta é só o número mesmo.

Então é isso! Te vejo no próximo exercício, mano! Valeuuuuu!

Resposta

18 metros.

Exercício Resolvido #2

PUC-Rio, Lista 2.

Um pequeno, porém, horrível, alienígena está no topo da Torre Eiffel (que tem 324 metros de altura) e ameaça destruir a cidade de Paris! Um agente da MIB está no nível do chão, a 54 metros da Torre Eiffel, mirando sua arma a laser no alienígena. Em que ângulo, em graus, o agente deve disparar a arma?

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

E aí, maninho! Pra resolver essa questão, a gente vai precisar lembrar lá de trigonometria do ensino fundamental. Mas tu reparou que a questão não tá pedindo o código? Só tá pedindo o resultado da conta mesmo… A gente vai escrever o código, executar, pegar a resposta e pronto. A gente até poderia usar a calculadora do PC, mas aí seu professor ia ficar boladão!

Então, bora usar Python pra resolver esse problema. A primeira coisa que a gente tem que se ligar é que, apesar de todo o textinho do enunciado (bem legal, inclusive), a questão só quer saber o ângulo de um triângulo de catetos 54 e 324.

E pra gente descobrir, vamos usar algumas das funções de matemática que são disponibilizadas pra gente no módulo math, que vem junto do python. Mas primeiro, a gente precisa importar o módulo.

Passo 2

Pra importar algum módulo, precisamos usar a palavra-chave “import”, e colocar em seguida o nome do módulo que queremos importar. Olha como fica:

Pronto! Mas não esquece que, caso tenha mais outros códigos no seu programa, é importante que o import esteja nas primeiras linhas. Se não, o professor vai puxar sua orelha, ok?!

Beleza! Agora que já temos acesso às funções matemáticas de Python, bora pensar em como a gente pode descobrir o ângulo do enunciado.

Passo 3

Bom, os dados que nós temos são o cateto oposto e o cateto adjacente ao nosso ângulo. O que esses dados nos lembram?

Isso aí! Nos lembram da tangente!

Mas, cara… A gente não quer descobrir a tangente de teta… A gente quer descobrir quanto é o próprio teta! Pra tirar aquela função tan dali, vamos precisar usar a função inversa da tangente. Essa é ruim de lembrar mesmo...

Mas a função inversa da tangente é a função arco-tangente! Então, se a gente aplicar essa função dos dois lados da equação vai ficar assim:

A função arco-tangente cancela a função tangente, e aí sobra só o teta do lado esquerdo da equação! Pronto, já sabemos como descobrir o ângulo… Partiu escrever essa parada em Python!

Passo 4

Bora criar uma variável pra salvar o resultado da nossa conta! Lembrando que as funções inversas trigonométricas em Python são math.asin(), math.acos() e math.atan().

Pronto! Repara que a ordem é importante, ok?! É o cateto oposto dividido pelo adjacente, assim como tá lá na figura! Se colocar ao contrário, o resultado vai ser diferente.

Mas, se liga também que o resultado vai estar em radianos… Bom, não tá errado, mas a gente tá bem mais acostumado a usar graus, e o enunciado também tá pedindo pra converter. Então, bora converter! Pra isso, a gente pode usar a função math.degrees().

Pronto! A gente atualizou o valor da variável theta, e agora ela tá guardando o ângulo em graus. Show!

O programa tá calculando tudo pra gente, mas ainda precisamos exibir a resposta!

Passo 5

Pra exibir a resposta pro usuário (nesse caso, a gente mesmo), vamos usar a função print() aliada com formatação de string. Se tu não estiver craque em formatar string, dá uma olhadinha nesse tópico, porque bem importante. Tá lá em Operações com String.

Voltando pro nosso programa, vai ficar mais ou menos assim:

Aí sim! Agora, quando a gente executar, o ângulo vai ser calculado, transformado pra graus e exibido. Vamos executar!

Pronto! Temos a resposta que nosso enunciado pediu. Agora é só alegria!

Te vejo no próximo exercício, doido! Valeuuuuu

Resposta

O agente deve atirar em um ângulo de 80.54º.

Exercício Resolvido #3

PUC-Rio, Lista 2.

Possuo 4 bolas amarelas, 3 bolas vermelhas, 2 bolas azuis e 1 bola verde. Pretendo colocá-las em um tubo acrílico translúcido e incolor, onde elas ficarão umas sobre as outras na vertical. De quantas maneiras distintas podemos formar essa coluna de bolas?

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

E aí, maninho! Se liga nesse exercício de combinação que caiu na PUC. Eu MORRIA de medo de análise combinatório no ensino médio.

Agora eu continuo morrendo de medo, mas pelo menos é na faculdade!

A ideia do enunciado é que as bolinhas vão sem empilhadas, e o professor quer que a gente descubra quantas formas diferentes de arrumar essas bolinhas existem. Bom, vamos pensar num problema um pouquinho menor aqui só pra gente pegar a ideia...

Passo 2

Se liga, imagina que a gente tem 4 bolinhas e 4 buraquinhos pra encaixar as bolinhas.

Cara, a ideia é que, no primeiro buraco a gente tem todas as bolinhas na mão ainda… A gente pode colocar qualquer uma das 4, certo? Temos 4 opções. Vamos escolher uma aleatoriamente aqui no nosso exemplo, e vou escrever embaixo quantas opções a gente tinha pra escolher na hora.

Pronto! Agora, no buraquinho seguinte, a gente pode colocar qualquer uma das outras que sobraram. E sobraram 3! Então a gente tem 3 opções de bolinhas pra colocar no segundo buraquinho ali. Vou escolher a azul agora.

A gente tinha 3 opções na hora de escolher, e escolhemos a azul… Vamos repetir o processo mais duas vezes!

Pronto! A gente organizou as bolinhas de uma forma qualquer, aleatória que eu mesmo escolhi na hora de fazer a ilustração. Mas o importante é pensar em quantas opções a gente tinha na hora de escolher a bolinha. Se a gente multiplicar as opções que a gente tinha em cada etapa, a gente vai ter a quantidade de possíveis combinações! Nesse caso:

Talvez tu não tenha reconhecido, mas isso é a mesma coisa que 4 fatorial.

Generalizando: a quantidade de combinações possíveis é a quantidade de bolinhas fatorial. Mas quando temos duas ou mais bolinhas iguais, caímos eu outro problema.

Passo 3

Adicionei mais uma bolinha e coloquei na frente das outras. Se liga em como ficou o nosso mesmo exemplo agora:

Show! Parece que a gente tem 5 fatorial de possíveis combinações agora. Mas cara, o que acontece se a gente trocar a primeira bolinha com a terceira??

Olha:

Isso aí mesmo que você tá pensando! Não mudou nada, doido! Como as bolinhas são iguais, não faz diferença se a gente trocar elas de lugar. Então, na verdade, essa combinação é igual a anterior. Por isso, a gente não precisa contar com ela. Pra gente descartar bolinhas iguais, a gente só precisa dividir o total de combinações pela quantidade fatorial de cada bolinha. Nesse caso:

Show! Sacamos a ideia… Generalizando as combinações com elementos iguais, a gente chega nessa fórmula:

Onde n é a quantidade total de bolinhas e q é a quantidade de cada tipo de bolinha. Partiu escrever essa lógica em Python!

Passo 4

Primeiramente, vamos começar importando o módulo math. Assim, a gente vai ter acesso as funções matemáticas que vêm no Python. Dentre elas, a função math.factorial().

Pronto! Lembra de colocar o import sempre no início do programa, jae?!

Agora, vamos criar uma variável e calcular o total de combinações. Vou chamar a variável de C só pra economizar espaço. Lembrando que o total de bolinhas e a quantidade de cada uma são dados do enunciado...

Pronto! Agora a gente só precisa exibir a quantidade de combinações.

Passo 5

Pra exibir a resposta, a gente vai usar a função print(). A danadinha tá em todas.