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 = lab.Medida(1, "m", 0.01)
    y = lab.Medida(200, "cm", 1)
    # Operações básicas
    assert (x + y).fmt() == "(3,00 ± 0,01) m"
    assert (x - y).fmt() == "(-1,00 ± 0,01) m"
    assert (x * y).fmt() == "(2,00 ± 0,02) m²"
    assert (x / y).fmt() == "(5,00 ± 0,06) × 10⁻¹"
    assert (y**2).fmt() == "(4,00 ± 0,04) × 10⁴ 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.

    areas = np.array([lab.Medida(4, "cm²", 0.24),
                      lab.Medida(9, "m²", 0.24),
                      lab.Medida(16, "km²", 0.24)])
    lados = np.sqrt(areas)
    assert str(lados) == "[(2,00 ± 0,06) cm (3,00 ± 0,04) m (4,00 ± 0,03) 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.

    theta = lab.Medida(30, "degree", 0.01)
    assert np.sin(theta).fmt() == "(5,000 ± 0,002) × 10⁻¹"

  1. Para os curiosos, o numpy tem uma seção inteira na sua documentação sobre como usar funções numpy em objetos arbitrários e até como implementar o seu próprio tipo array