Funções Matemáticas
Operações Elementares
A classe Medida implementa todas as operações matemáticas elementares. Portanto, operações entre instâncias de Medida são idênticas a operações entre números.
x=Medida(1,'m',0.01)
y=Medida(200,'cm',1)
#Operações básicas
print(x+y)#(3,00 ± 0,01) m
print(x-y)#(-1,00 ± 0,01) m
print(x*y)#(2,00 ± 0,02) m²
print(x/y)#(5,00 ± 0,06)x10⁻¹
print(y**2)#(4,00 ± 0,04)x10⁴ cm²
Funções Numpy
O LabIFSC2 implementa uma compatibilidade direta com as funções do Numpy (tecnicamente chamadas de ufunc), permitindo que você aplique funções como np.sin, np.sqrt, np.arctanh de forma natural1.
import numpy as np
areas=np.array([Medida(4,'cm²',0.01),Medida(9,'m²',0.01),
Medida(16,'km²',0.01)])
lados=np.sqrt(areas)
print(lados) #[(2,000 ± 0,003) cm (3,000 ± 0,002) m (4,000 ± 0,001) km]
Veja que as unidades se comportam como o esperado. Outro exemplo interessante é a função seno, em que podemos usar diretamente o resultado em graus, sem precisar converter para radianos.
import numpy as np
theta=Medida(30,'degree',0.01)
print(np.sin(theta)) #(5,000 ± 0,002)x10⁻¹
-
Para os curiosos, isso é feito implementando métodos específicos na classe
Medida. Por exemplo, a funçãonp.sqrt(x)verifica se o tipo dextem o métodox.sqrt. Se tiver, ele chamax.sqrt. A classeMedidapossui uma simulação Monte Carlo desqrte todas as funções matemáticas. Isso é feito criando-se dinamicamente os métodos com getattr. ↩