Пример #1
0
def test_medida_pow_5():
    m1 = Medida("-2+/-0.1", "m^2")
    m2 = Medida("-3+/-0.5", "")
    m3 = m1**m2
    assert m3.nominal == (-2)**-3
    assert m3.incerteza == 0.06207169878499658
    assert unidades_em_texto(m3.unidades_originais) == "m⁻⁶"
Пример #2
0
def test_medida_pow_3():
    m1 = Medida("2+/-0.1", "m^2")
    m2 = Medida("3+/-0.5", "")
    m3 = m1**m2
    assert m3.nominal == 2**3
    assert m3.incerteza == 3.9725887222397813
    assert unidades_em_texto(m3.unidades_originais) == "m⁶"
Пример #3
0
def test_medida_pow_4():
    m1 = Medida("2+/-0.1", "m^2")
    m2 = Medida("3.1+/-0.5", "")
    m3 = m1**m2
    assert m3.nominal == 2**3.1
    assert m3.incerteza == 4.300586108569011
    assert unidades_em_texto(m3.unidades_originais) == "m²"
Пример #4
0
def test_unidade_4():
    m1 = Medida(1, "C V")
    m2 = Medida(1, "J")
    assert m1 == m2
    assert not m1 != m2
    assert m1.unidade().__str__() == "C V"
    assert m1.SI().unidade().__str__() == "J"
Пример #5
0
def ax_fit(xs,
           ys=None,
           plotar_dados=True,
           cor_dados=None,
           cor_reta=None,
           cor_incerteza=None,
           imprimir=False,
           label_incerteza='Incerteza dos mínimos quadrados',
           label_dados='Dados experimentais',
           latex=False,
           mostrar_origem=False,
           legenda=True,
           sangria=0,
           *args,
           **kwargs):

    if isinstance(xs, DataFrame):
        xs, ys = df_to_xy(xs, ys)

    sao_medidas = isinstance(xs[0], Medida)

    if sao_medidas:
        A_sample = ys[0] / xs[0]
        xs = [x.nominal for x in xs]
        ys = [y.nominal for y in ys]

    popt, pcov = curve_fit(lambda x, a: a * x, xs, ys)
    A = Medida((*popt, pcov[0][0]**.5))

    if sao_medidas:
        # Atribuir unidade a A.
        A.dimensao = A_sample.dimensao
        A.unidades_originais = A_sample.unidades_originais

    if plotar_dados:
        cor_dados = plot(xs,
                         ys,
                         'o',
                         label=label_dados,
                         color=cor_dados,
                         zorder=10)[0]._color

        if cor_reta == None:
            cor_reta = mod_color(cor_dados)

    if mostrar_origem:
        mostre_origem()

    plot_reta(A,
              latex=latex,
              cor_incerteza=cor_incerteza,
              label_incerteza=label_incerteza,
              color=cor_reta,
              sangria=sangria)

    if legenda:
        plt.legend()

    return A
Пример #6
0
def test_unidade_1():
    m1 = Medida(1, "m")
    m2 = Medida(1, "kg")
    with pytest.raises(Exception) as excinfo:
        m1 == m2
    assert "dimensões físicas incompatíveis: L1 vs M1" in str(excinfo)
    with pytest.raises(Exception) as excinfo:
        m1 != m2
    assert "dimensões físicas incompatíveis: L1 vs M1" in str(excinfo)
Пример #7
0
def test_medida_div_1():
    m1 = Medida("3", "kg/m")
    m2 = Medida("2", "L*Pa/m")
    m3 = m1 / m2
    m4 = m2 / m1
    assert m3.nominal == 3.0 / 2.0
    assert m3.incerteza == 0
    assert unidades_em_texto(m3.unidades_originais) == "kg L⁻¹ Pa⁻¹"
    assert m4.nominal == 2.0 / 3.0
    assert m4.incerteza == 0
    assert unidades_em_texto(m4.unidades_originais) == "L Pa kg⁻¹"
Пример #8
0
def test_medida_add_3():
    m1 = Medida("1+-0.1", "m")
    m2 = Medida("1+-0.1", "ft")
    m3 = m1 + m2
    m4 = m2 + m1
    assert m3.nominal == 1.3048
    assert m3.incerteza == 0.13048
    assert unidades_em_texto(m3.unidades_originais) == "m"
    assert m4.nominal == 4.2808398950131235
    assert m4.incerteza == 0.4280839895013123
    assert unidades_em_texto(m4.unidades_originais) == "ft"
Пример #9
0
def test_medida_mul_1():
    m1 = Medida("1+-0.1", "kg^2/m^3")
    print(m1.dimensao)
    m2 = Medida("1+-0.1", "lb/kg")
    print(m2.dimensao)
    m3 = m1 * m2
    m4 = m2 * m1
    assert m3.nominal == 1
    assert m3.incerteza == 0.2
    assert unidades_em_texto(m3.unidades_originais) == "kg lb m⁻³"
    assert m4.nominal == 1
    assert m4.incerteza == 0.2
    assert unidades_em_texto(m4.unidades_originais) == "kg lb m⁻³"
Пример #10
0
def plot_reta(a,
              b=Medida(0),
              latex=False,
              cor_incerteza=None,
              label_incerteza='Incerteza',
              sangria=0,
              *args,
              **kwargs):

    if not isinstance(a, Medida):
        a = Medida(a)
    if not isinstance(b, Medida):
        b = Medida(b)

    if latex:
        label = fr'(${a:latex}$) x + (${b:latex}$)'
    else:
        label = f'({a}) x'
        if b.nominal:
            label += f' + ({b})'

    saved_axis = axis()
    xlim = list(saved_axis[:2])

    xlim[0] -= sangria
    xlim[-1] += sangria

    cor_reta = plot(xlim, [a.nominal * x + b.nominal for x in xlim],
                    label=label,
                    *args,
                    **kwargs)[0]._color

    if cor_incerteza == None:
        cor_incerteza = cor_reta + OPACIDADE_INCERTEZA

    fill_between(xlim, [(a.nominal + a.incerteza) * x + b.nominal + b.incerteza
                        for x in xlim],
                 [(a.nominal - a.incerteza) * x + b.nominal - b.incerteza
                  for x in xlim],
                 facecolor=cor_incerteza,
                 label=label_incerteza)

    axis(saved_axis)

    return (a, b)
Пример #11
0
def test_medida_divmod_1():
    m1 = Medida("11+-1", "kg/m")
    m2, m3 = divmod(m1, 2)
    assert m2.nominal == 5
    assert m2.incerteza == 0.25
    assert unidades_em_texto(m2.unidades_originais) == "kg m⁻¹"
    assert m3.nominal == 1
    assert m3.incerteza == 0.25
    assert unidades_em_texto(m3.unidades_originais) == "kg m⁻¹"
Пример #12
0
def test_unidade_3():
    m1 = Medida(0.3049, "m")
    m2 = Medida(1, "ft")
    assert m1 != m2
    assert not m1 == m2
    assert m1.unidade() == "m"
    assert m2.unidade() == "ft"
    assert m2.SI().unidade() == "m"
Пример #13
0
def test_medida_div_2():
    m1 = Medida("5+-2", "kg")
    m2 = 0.5
    m3 = m1 / m2
    m4 = m2 / m1
    assert m3.nominal == 10.0
    assert m3.incerteza == 4.0
    assert unidades_em_texto(m3.unidades_originais) == "kg"
    assert m4.nominal == 0.1
    assert m4.incerteza == 0.04
    assert unidades_em_texto(m4.unidades_originais) == "kg⁻¹"
Пример #14
0
def test_medida_array_2():
    m = Medida("100+-10", "libra")
    l = M([1, 2, m, 4, 5], incerteza=0.5, unidade="ft")
    print(l)
    assert len(l) == 5
    for i in range(len(l)):
        if i == 2:
            continue
        assert l[i].nominal == i + 1
        assert l[i].incerteza == 0.5
        assert l[i].si_nominal == 0.3048 * (i + 1)
        assert l[i].si_incerteza == 0.1524
    assert l[2].nominal == 100
    assert l[2].incerteza == 10
    assert fabs(l[2].si_nominal - 45.359237) < 0.001
    assert fabs(l[2].si_incerteza - 4.5359237) < 0.001
Пример #15
0
def test_medida_si_1():
    m = Medida("1+-0.1", "ft").SI()

    assert m.nominal - 0.3048 < 1E-4
    assert m.incerteza - 0.03048 < 1E-4
    assert unidades_em_texto(m.unidades_originais) == "m"
Пример #16
0
def test_medida_format_D3():
    m = Medida((31546.7, 1520), "ft^2")
    assert "{:siunitx,full,3}".format(m) == "\\SI{31.5467E3+-1.52E3}{\\foot\\squared}"
Пример #17
0
def test_medida_add_2():
    m1 = Medida(1, "m")
    m2 = Medida("2+/-0.1", "m")
    m = m1 + m2
    assert m.nominal == 3
    assert m.incerteza == 0.1
Пример #18
0
def test_medida_add_1():
    m1 = Medida(1, "m")
    m2 = Medida(2, "m")
    m = m1 + m2
    assert m.nominal == 3
    assert m.incerteza == 0
Пример #19
0
def test_medida_repr_1():
    m = Medida(1, "ft")
    assert m.__repr__() == "<1.0±0.0 ft = 0.3048±0.0 L1>"
Пример #20
0
def test_medida_eq_4():
    m1 = Medida((0, 0.5))
    m2 = Medida((2.1, 0.5))
    assert not m1 == m2
    assert not m1 != m2
Пример #21
0
def test_medida_format_D4():
    m = Medida((31546.7, 1520), "ft^2")
    txt = "{:txt,full,3}".format(m)
    assert txt == "({}+/-{})*10^3 ft^2".format(m.nominal/1E3, m.incerteza/1E3)
Пример #22
0
def test_unidade_3():
    m1 = Medida(0.3049, "m")
    m2 = Medida(1, "ft")
    assert m1 != m2
    assert not m1 == m2
Пример #23
0
def test_medida_sub_2():
    m1 = Medida("1+/-0.1", "m")
    m2 = Medida("2+/-0.01", "m")
    m = m1 - m2
    assert m.nominal == -1
    assert m.incerteza == 0.11
Пример #24
0
def test_medida_si_3():
    m = Medida("1+-0.1", "ft² deg lb h °F A mol^-1").SI()

    assert unidades_em_texto(m.unidades_originais) == "m² rad kg s K A mol⁻¹"
Пример #25
0
def test_medida_si_2():
    m = Medida("1+-0.1", "ft²").SI()

    assert m.nominal - 0.092903 < 1E-4
    assert m.incerteza - 0.0092903 < 1E-4
    assert unidades_em_texto(m.unidades_originais) == "m²"
Пример #26
0
def test_medida_abs_1():
    m1 = Medida("-3+-1", "kg/m")
    m2 = abs(m1)
    assert m2.nominal == 3
    assert m2.incerteza == 1
    assert unidades_em_texto(m2.unidades_originais) == "kg m⁻¹"
Пример #27
0
def test_medida_eq_1():
    m1 = Medida((0.0, 0.0))
    m2 = Medida((0.0, 0.0))
    assert m1 == m2
    assert not m1 != m2
Пример #28
0
def test_medida_pow_1():
    m = Medida("4+/-0.1", "m^2")**0.5
    assert m.nominal == 2
    assert m.incerteza == 0.025
    assert unidades_em_texto(m.unidades_originais) == "m"
Пример #29
0
def test_medida_sub_1():
    m1 = Medida(1, "m")
    m2 = Medida(2, "m")
    m = m1 - m2
    assert m.nominal == -1
    assert m.incerteza == 0
Пример #30
0
def test_medida_pow_2():
    m = Medida("4+/-0.1", "m^2")**2
    assert m.nominal == 16
    assert m.incerteza == 0.8
    assert unidades_em_texto(m.unidades_originais) == "m⁴"