Skip to content

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⁻¹

  1. Para os curiosos, isso é feito implementando métodos específicos na classe Medida. Por exemplo, a função np.sqrt(x) verifica se o tipo de x tem o método x.sqrt. Se tiver, ele chama x.sqrt. A classe Medida possui uma simulação Monte Carlo de sqrt e todas as funções matemáticas. Isso é feito criando-se dinamicamente os métodos com getattr