Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

ARQUIVOS FÍSICA EXPERIMENTAL IFC LUZERNA PROF JOÃO MARCELLO

768 views
License: MIT
ubuntu2004
1
"""
2
Arquivo para cálculo diversos com incertezas
3
Version: 1.0 @ 2022
4
Author: João Marcello Pereira. (joao.pereira at ifc.edu.br)
5
License: MIT License (https://opensource.org/licenses/MIT)
6
"""
7
8
from scipy.misc import derivative
9
from uncertainties import *
10
from uncertainties.umath import *
11
from uncertainties import unumpy
12
from numpy import *
13
#from math import *
14
15
def derivada(f, x0, ord = 1):
16
return derivative(f, x0, n = ord)")
17
18
## Função raiz de uma equação
19
def XraizN(f, x0 = 1.0, max_passos = 100, tolerancia = 1e-6):
20
21
xn = x0
22
passo = 1
23
24
while(passo <= max_passos and abs(f(xn)) > tolerancia and abs(derivative(f, xn)) > tolerancia):
25
xn -= f(xn)/derivative(f, xn)
26
passo += 1
27
28
if(abs(derivative(f, xn)) <= tolerancia):
29
print("Erro! O valor da derivada da função está próximo de zero!", xn)
30
31
elif (passo >= max_passos):
32
print("Erro! Limite de passos estourados sem encontrar o resultado")
33
34
else:
35
return xn
36
#Wrap
37
raiz = wrap(XraizN)
38
39
40
# Função integral
41
def Xmod_simpson(f, a, b, passos=1000):
42
h = (b - a)/float(passos)
43
a1 = a + h/2.0
44
45
s1 = sum(f(a1 + i*h) for i in range(0, passos))
46
s2 = sum(f(a + i*h) for i in range(1, passos))
47
48
return (h/6.0)*(f(a) + f(b) + 4.0*s1 + 2.0*s2)
49
50
# Wrap
51
integral = wrap(Xmod_simpson)
52
53
54
# Função interpolação
55
def XinterpL(x, x_dados, y_dados):
56
pontos = tuple(zip(x_dados, y_dados))
57
n = len(pontos) - 1
58
59
def L(i, x):
60
Li = 1
61
for j in range(n + 1) :
62
if(i != j):
63
Li = Li*(x - pontos[j][0])/(pontos[i][0] - pontos[j][0])
64
return Li
65
66
def Lagrange(x):
67
p = 0
68
for i in range(n + 1):
69
p = p + pontos[i][1]*L(i, x)
70
return p
71
72
return Lagrange(x)
73
#Wrap
74
interpolacao = wrap(XinterpL)
75