Contact Us!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.

| Download

Física Experimental IFC

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