segunda-feira, 20 de abril de 2020

Funções hiperbólicas em NumPy

Funções hiperbólicas em NumPy


Para podemos trabalhar com as funções hiperbólicas a biblioteca numpy disponibiliza três funções: sinh, cosh e tanh. Essas funções recebem radianos como argumentos e retornam seno hiperbólico, cossenos hiperbólico e tangente hiperbólico, respectivamente.
Veja um exemplo com a função sinh:
Exemplo
import numpy as np

a = np.sinh(np.pi/2)

print(a)
Com esse exemplo descobrimos que o seno hiperbólico de pi sobre 2 é 2,30.
A função sinh também pode receber os radianos numa matriz e retornar uma matriz com os resultados.
Exemplo
import numpy as np

array = np.array([np.pi/2, np.pi/3, np.pi/4, np.pi/5])

print(np.sinh(array))

Seno, cosseno e tangente hiperbólica para ângulo

Para descobrir o radiano com o seno, cosseno e tangente hiperbólica, podemos utilizar as funções arcsinh, arccosh e arctanh, respectivamente. E logo depois utilizar o resultado dessas funções e descobrir o ângulo com a função rad2deg.
Exemplo
import numpy as np

a = np.rad2deg(np.arcsinh(1.0))

print(a)
A função rad2deg recebe um radiano e retorna um grau.

Trigonometria com NumPy

Trigonometria com NumPy


A trigonometria estuda as relações entre os lados e os ângulos dos triângulos.
As funções trigonométricas são as funções relacionadas aos triângulos retângulos. As funções relacionadas aos triângulos retângulos são os senos, cossenos e tangentes. Para trabalhar com senos, cossenos e tangentes a biblioteca numpy fornece as funções sin, cos e tan.
As funções sin, cos e tan recebem um valor radiano e fornecem os cenos, cossenos e tangentes, respectivamente.
Exemplo
import numpy as np

seno = np.sin(np.pi/2)

print(seno)
Nesse exemplo descobrimos que o seno de pi sobre dois é um.
A função sin também pode receber uma listas com os valores.
Exemplo
import numpy as np

seno = np.sin([np.pi/2, np.pi/3, np.pi/4, np.pi/5])

print(seno)
Nesse exemplo o retorna da função sin também será uma lista com os resultados dos senos de pi sobre 2, pi sobre 3, pi sobre 4 e pi sobre 5.
As funções cos e tan funcionam da mesma maneira que a sin. Se for passado um valor para a função ela só vai retornar um valor. Se for passado mais de uma valor a função vai retornar uma lista com os resultados.

Convertendo graus em radianos

A função matemática para converter graus em radianos é pi dividido por cento e oitenta vezes o grau desejado. Pi/180 * grau para a conversão.
As funções trigonométricas recebem radianos como parâmetros. Por isso a biblioteca numpy fornece funções para converter graus em radianos, e vice-versa.
Para converter graus em radianos a função usada é deg2rad. A função deg2rad pode receber um único valor ou uma lista com os graus para conversão.
Exemplo
import numpy as np

matriz = np.array([90, 180, 270, 360])

radianos = np.deg2rad(matriz)

print(radianos)

Radianos para graus

A função para transformar radianos em graus é a rad2deg. Assim como a função deg2rad, a função rad2deg pode receber um único valor ou receber uma lista com os radianos. Nesse caso o resultado da função rad2deg vai ser uma lista com os valores convertidos.
Exemplo
import numpy as np

matriz = np.array([np.pi/2, np.pi, 1.5*np.pi, 2*np.pi])

graus = np.rad2deg(matriz)

print(graus)

Seno, cosseno e tangente para radianos e ângulo

Se você precisar descobrir um radiano a partir de um seno, cosseno ou tangente a biblioteca numpy fornece as funções para isso. São elas: arcsin, arccos e arctan, respectivamente. E para converter de radianos para graus é só usar a função rad2deg.
Exemplo
import numpy as np

graus = np.rad2deg(np.arcsin(1.0))

print(graus)
As funções arcsin, arccos e arctan podem receber uma matriz como argumentos e retornar uma matriz com os resultados da conversão.
Exemplo
import numpy as np

graus = np.rad2deg(np.arcsin([1, -1, 0.1]))

print(graus)

Hipotenusa

Podemos utilizar o teorema de pitágoras com a biblioteca numpy e descobrir a hipotenusa de um triangulo retângulo. A função para isso é a hypot.
Exemplo
import numpy as np

base = 8
cateto = 5

hipotenusa = np.hypot(base, cateto)

print(hipotenusa)
Com esse exemplo descobrimos que a hipotenusa de um triangulo retângulo, com o valor da base sendo oito e o cateto sendo cinco, é 9,43.

domingo, 19 de abril de 2020

MMC e MDC com NumPy

MMC e MDC com NumPy

Mínimo múltiplo comum

O mínimo múltiplo comum (mmc) de dois números é o menor numero natural que é múltiplo simultaneamente dos dois números. Se não existir tal número natural então o mmc é zero. Para encontrar os múltiplos de um número, basta multiplicar esse número pela sequência dos números naturais.
Para saber se um número é múltiplo de um outro, devemos dividir pelo outro. Por exemplo, 25 é múltiplo de 5, porque ele é divisível por 5.
A função para descobrir o mínimo múltiplo comum de dois números com a biblioteca numpy em python é a lcm.
Exemplo
import numpy as np

print(np.lcm(6, 4))
Para descobrir o mínimo múltiplo comum de uma matriz podemos utilizar a função reduce da biblioteca numpy. A função reduce recebe uma matriz e retorna o mínimo múltiplo comum de todos os números da matriz.
Exemplo
import numpy as np

print(np.lcm.reduce([6, 4, 9]))

Máximo divisor comum

O maior divisor comum é o maior número que pode dividir dois ou mais números com resto igual a zero. Por exemplo: os divisores comuns de 12 e 18 são 1,2,3 e 6. Dentre eles, 6 é o maior. Então chamamos o 6 de máximo divisor comum de 12 e 18.
Para descobri o máximo divisor comum de dois números com a biblioteca numpy em python usamos a função gcd.
Exemplo
import numpy as np

print(np.gcd(9, 6))
Nesse exemplo, o resultado é três pois o três é o maior número que pode dividir seis e nove sem resto.
Para descobrir o maior divisor comum de uma matriz a função reduce é usada.
Exemplo
import numpy as np

print(np.gcd.reduce([138, 66, 402, 324]))
O resultado da função reduce é o número seis. Isso porque os números da matriz são todos múltiplos do número seis.

Produto e diferença com NumPy

Produto e diferença com NumPy


Produto

Para descobrir qual é o produto dos elementos de uma matriz podemos utilizar a função prod da biblioteca numpy.
Exemplo
import numpy as np

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

matriz = np.prod(array)

print(matriz)
Com esse exemplo o resultado será seis, porque 1*2*3 é igual a 6.
A função prod também pode receber uma lista com matrizes.
Exemplo
import numpy as np

array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])

matriz = np.prod([array1, array2])

print(matriz)
Nesse exemplo o resultado é 720, pois 1*2*3*4*5*6 é igual 720. Todos os elementos das duas matrizes são multiplicados, como se fossem apenas uma matriz. Também é possível multiplicar apenas os elementos de cada matriz individualmente com o parâmetro axis=1.
Exemplo
import numpy as np

array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])

matriz = np.prod([array1, array2], axis=1)

print(matriz)
Nesse exemplo, o retorno é uma lista com o resultado da multiplicação das duas matrizes individualmente. O primeiro valor da lista de retorno é o resultado da multiplicação dos elementos da primeira matriz e o segundo valor é o resultado da multiplicação dos elementos da segunda matriz.

Produto acumulativo

Para trabalhar com produto acumulativo a biblioteca numpy disponibiliza a função cumprod. A função cumprod vai receber uma matriz e retornar uma matriz com o mesmo numero de elementos da matriz que receber. Cada elemento dessa matriz é o produto acumulado dos elementos anteriores. Por exemplo, na lista [1, 2, 3, 4], o resultado seria uma matriz com os valores 1, 2, 6 e 24.
Exemplo
import numpy as np

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

matriz = np.cumprod(array)

print(matriz)

Diferença

Na biblioteca numpy temos a função diff. A função diff retorna uma lista com o resultado da diferença entre um elemento e o seu antecessor, com exceção do primeiro elemento. Por exemplo, a diferença entre os elementos da lista [1, 2, 3, 4] é [1, 1, 1]. Isso porque 2-1=1, 3-2=1 e 4-3=1.
Exemplo
import numpy as np

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

matriz = np.diff(array)

print(matriz)
Também podemos pegar o resultado da diferença e tirar a diferença. Por exemplo, no exemplo anterior o resultado da diferença foi [1, 1, 1]. E se quiséssemos tirar a diferença desse resultado? Simples. Precisaríamos apenas adicionar o parâmetro n=2 na função diff.
Exemplo
import numpy as np

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

matriz = np.diff(array, n=2)

print(matriz)
O resultado desse exemplo é [0, 0] pois 1-1=0, 1-1=0.

Somatório com NumPy

Somatório com NumPy


Qual é a diferença entre o somatório e a adição? Com o somatório um número infinitos de elementos podem ser somados, diferente da adição que soma apenas dois elementos.
Exemplo
import numpy as np

array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])

matriz = np.add(array1, array2)

print(matriz)
Nesse exemplo temos a soma dos números na vertical, como se fosse uma tabela. Por isso o resultado é uma matriz com os elementos 5, 7 e 9. No somatório todos os elementos são somados.
Para realizar uma somatória de todos os elementos de uma matriz a biblioteca numpy disponibiliza a função sum. A função sum soma todos os elementos da matriz passada como argumento e retorna o resultado da soma dos elementos de todas as matrizes.
Exemplo
import numpy as np

array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])

matriz = np.sum([array1, array2])

print(matriz)
A função sum, por padrão, soma todos os elementos de uma matriz. Para mudar esse comportamento podemos passar o argumento axis=1. Assim cada matriz será somada individualmente. E a função sum vai retornar uma matriz com os resultados da soma dos elementos de cada matriz, individualmente.
Exemplo
import numpy as np

array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])

matriz = np.sum([array1, array2], axis=1)

print(matriz)

Soma acumulativa

Com a soma acumulativa a soma dos dois últimos elementos são somados com o elemento atual. Por exemplo, na matriz [1, 2, 3] o resultado seria 1, 3 e 6.
Para fazer uma somatória acumulativa a biblioteca numpy disponibiliza a função cumsum. A função cumsum recebe uma lista como argumento e retorna uma lista com a mesma quantidade de elementos da matriz de entrada.
Exemplo
import numpy as np

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

matriz = np.cumsum(array)

print(matriz)
Cada elemento da matriz resultado é a soma dos dois elementos anteriores na matriz de entrada.

sábado, 18 de abril de 2020

Logaritmos com NumPy

Logaritmos com NumPy


Os logaritmos são usados para facilitar contas em que existem exponenciação. Os logaritmos são capazes de transformar produtos em soma, divisões em subtrações e potências em multiplicações.
John Napier foi o primeiro a estudar os logaritmos. Foi ele o responsável por descobrir que os logaritmos podiam ser usados para transformar produtos em soma, divisão em subtração e potenciação em multiplicação.
A descoberta de John Napier foi muito útil na época, e é até hoje. Imagine fazer multiplicações com números grandes sem uma calculadora. Com certeza não era fácil. Por isso a importância dos logaritmos. Com os logaritmos as multiplicações passavam a ser somas. Isso facilitava muita coisa.
Com o logaritmo, basicamente se responde uma pergunta: Qual é o expoente que o resultado será x usando a base 2 (ou outra base)? A biblioteca numpy fornece duas funções para trabalhar com logaritmos na base dois e na base dez, uma função pra cada base.
Exemplo
import numpy as np

log = np.log2(8)

print(log)
Nesse exemplo, obtemos a resposta para a pergunta: Qual é o expoente que o resultado será oito usando a base dois? A resposta é três porque dois elevado a três o resultado é oito.
Para descobrir qual é o expoente que o resultado será x com a base dez, podemos utilizar a função log10 da biblioteca numpy.
Exemplo
import numpy as np

log = np.log10(100)

print(log)
Nesse exemplo, obtemos a resposta para a pergunta: Qual é o expoente que o resultado será cem usando a base dez? A resposta é dois porque dez elevado a dois o resultado é cem.

E para trabalhar com outras bases?

Infelizmente a biblioteca numpy só fornece essas duas funções. Mais para nossa felicidade a biblioteca math fornece a função log. A função log pode trabalhar com qualquer base. Para usar a função log passamos dois argumentos: o resultado da exponenciação e a base.
Exemplo
from math import log

print(log(8, 2))
Nesse exemplo, obtemos a resposta para a pergunta: Qual é o expoente que o resultado será oito usando a base dois? A resposta é três porque dois elevado a três o resultado é oito.

sexta-feira, 17 de abril de 2020

Arredondando números decimais com NumPy

Arredondando números decimais com NumPy


Existem cinco formas de arredondar um número decimal com numpy:
  • Com o método trunc
  • Com o método fix
  • Com o método around
  • Com o método floor
  • Com o método ceil

Função trunc

O método trunc remove todas as casas decimais dos números. E retorna o número mais próximo de zero. Por exemplo, o número 3.4, o número mais perto de zero é o três.
Exemplo
import numpy as np

array = np.trunc([-3.4567, 3.9879])

print(array)
Note que a função retorna o número mais perto de zero, seja ele positivo ou negativo. Outra coisa importante de se notar é que mesmo sem casas decimais, o número permanece sendo um número de ponto flutuante (float). O número não foi convertido num inteiro. Apenas as casas decimais do número foram zeradas.

Função fix

A função fix faz a mesma coisa que a função trunc: zera todas as casas decimais dos números.
Exemplo
import numpy as np

array = np.fix([-3.4567, 3.9879])

print(array)

Função around

A função around arredonda o número pra cima ou pra baixo. Se a casa decimal do lado direito for maior ou igual a seis, o número será arredondado para cima. E se a casa decimal for menor ou igual a cinco, o número será arredondado para baixo.
A função around recebe dois parâmetros. O primeiro parâmetro é a lista de números para arredondar (ou um número só) e o segundo é o número de casas decimais que o resultado final deve ter.
Exemplo
import numpy as np

array = np.around([3.456, 3.984], 2)

print(array)
Repare que o resultado é uma matriz com os números 3.46 e 3.98. O primeiro número foi arredondado para cima e o segundo para baixo. Isso porque a última casa decimal do primeiro número é maior ou igual a seis, e a ultima casa decimal do segundo número é menor ou igual a cinco.

Função floor

A função floor tem o mesmo resultado que as funções trunc e fix. Ela arredonda o número decimal para o número inteiro abaixo mais próximo. Mais não converte o número num inteiro.
Exemplo
import numpy as np

array = np.floor([3.456, 3.984])

print(array)

Função ceil

A função ceil arredonda o numero decimal para o numero inteiro com maior valor.
Exemplo
import numpy as np

array = np.ceil([-3.456, 3.984])

print(array)
O resultado desse exemplo foi os números -3 e 4. Isso porque o número inteiro, mais próximo, maior que -3.456 é o -3. E o numero inteiro, mais próximo, maior que 3.984 é o 4.