Medida
A classe central do LabIFSC2 é a Medida, tecnicamente ela representa uma variável aleatória gaussiana, portanto, é necessário fornecer uma média e um desvio padrão , além disso, é possível oferecer uma unidade e realizar conversões de unidade. A forma como um objeto dessa classe é printado obedece convenções de notação científica que podem ser alteradas
Propagação de Erros
Toda a propagação de erros é implementada usando uma simulação Monte Carlo, em casos de solução analítica simples é implementada a propagação exata
import LabIFSC2 as lab
x=lab.Medida(4,0.1)
y=lab.Medida(0.4,0.05)
#Operações básicas
print(x+y)#(4.40 ± 0.10)
print(x-y)#(3.60 ± 0.10)
print(x*y)#(1.60 ± 0.20)
print(x/y)#(1.0 ± 0.1)E1
#Exponenciação
print(x**y)#(1.75 ± 0.10)
print(x**2)#(16 ± 1)
print(3**x)#(81 ± 1)
Valor nominal e incerteza
Cada instância da classe Medida possui atributos associados a média e o desvio padrão, caso não seja especificado unidades, os atributos SI serão iguais aos originais
import LabIFSC2 as lab
x=lab.Medida(156,2,'cm')
print(x.nominal)#156
print(x.si_nominal)#1.56
print(x.incerteza)#2
print(x.si_incerteza)#0.02
Igualdade entre Medidas
A igualdade ou diferença entre Medidas só pode ser determinada uma vez que as Medidas tenham dimensões compativeis, caso contrário, será retornado um erro pela função checa_dimensao. Foi definido que duas Medidas são iguais se ) e são diferentes caso ), o caso que a diferença entre os valores nominais estiverem entre duas e três vezes a soma das incertezas é considerado inconclusivo e é retornado None
Histograma
Tecnicamente, algumas operações da biblioteca geram variáveis não gaussianas, um exemplo seria a divisão entre duas medidas , nesse caso, o histograma com a distribuição de probabilidade é armazenado em um atributo chamado histograma
import LabIFSC2 as lab
z=lab.Medida(5,0.5)/lab.Medida(43,10)
print(z) # (0.12±0.04)
print(z.histograma) #array([0.1329215 ,
#0.17917796, 0.10256415, ..., 0.11928206])
import matplotlib.pyplot as plt
plt.hist(z.histograma,bins=100)
plt.savefig('exemplo de histograma.jpg')
Probabilidade
Como cada instância da classe Medida possui um atributo de histograma
é interessante responder a pergunta, qual é a chance de minha Medida
estar entre ? A classe Medida possui um método chamado
probabilidade que recebe um começo e um final e
retorna a probabilidade
import LabIFSC2 as lab
print(lab.Medida(5,0.1).probabilidade(4.9,5.1)) #0.6878
print(lab.Medida(5,0.1).probabilidade(4.8,5.2)) #0.952
print(lab.Medida(5,0.1).probabilidade(4.7,5.3)) #0.9973
z=lab.Medida(5,0.1)**3
print(z.probabilidade(110,130)) #0.7291
Retorna a probabilidade que a Medida esteja entre [a,b] usando o histograma como referencia
Parameters:
Name | Type | Description | Default |
---|---|---|---|
a |
float
|
Extremo inferior |
required |
b |
float
|
Extremo superior |
required |
Returns:
Name | Type | Description |
---|---|---|
probabilidade |
float
|
(float) probabilidade de estar entre [a,b] |
Source code in LabIFSC2/medida.py
248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 |
|
Compatibilidade com o LabIFSC original
O método tradicional usado no LabIFSC é uma propagação de erros lineares, é usada uma expansão de Taylor com centro em . No caso que os erros forem pequenos em comparação a variação da função tanto o LabIFSC quanto o LabIFSC2 chegaram em resultados equivalentes, testes unitários exatamente sobre isso podem ser encontrados no repositório, eis um exemplo:
Source code in tests/test_lab1vslab2.py
27 28 29 30 31 32 33 34 35 36 |
|