Física Experimental IFC
License: MIT
ubuntu2204
"""1Arquivo para cálculo diversos com incertezas2Version: 1.2 @ 20233Author: João Marcello Pereira. (joao.pereira at ifc.edu.br)4License: MIT License (https://opensource.org/licenses/MIT)5"USE LINUX"6"""78from scipy.misc import derivative9from uncertainties.umath import *10from uncertainties import unumpy11import uncertainties as un12import numpy as np13import math1415def derivada(f, x0, ord = 1):16return derivative(f, x0, n = ord)1718## Função raiz de uma equação19def XraizN(f, x0 = 1.0, max_passos = 100, tolerancia = 1e-6):2021xn = x022passo = 12324while(passo <= max_passos and abs(f(xn)) > tolerancia and abs(derivative(f, xn)) > tolerancia):25xn -= f(xn)/derivative(f, xn)26passo += 12728if(abs(derivative(f, xn)) <= tolerancia):29print("Erro! O valor da derivada da função está próximo de zero!", xn)3031elif (passo >= max_passos):32print("Erro! Limite de passos estourados sem encontrar o resultado")3334else:35return xn36#Wrap37raiz = un.wrap(XraizN)383940# Função integral41def Xmod_simpson(f, a, b, passos=1000):42h = (b - a)/float(passos)43a1 = a + h/2.04445s1 = np.sum([func(a1 + i*h) for i in range(0, passos)])46s2 = np.sum([f(a + i*h) for i in range(1, passos)])4748return (h/6.0)*(f(a) + f(b) + 4.0*s1 + 2.0*s2)4950# Wrap51integral = un.wrap(Xmod_simpson)525354# Função interpolação Lagrange55def XinterpL(x, x_dados, y_dados):56pontos = tuple(zip(x_dados, y_dados))57n = len(pontos) - 15859def L(i, x):60Li = 161for j in range(n + 1) :62if(i != j):63Li = Li*(x - pontos[j][0])/(pontos[i][0] - pontos[j][0])64return Li6566def Lagrange(x):67p = 068for i in range(n + 1):69p = p + pontos[i][1]*L(i, x)70return p7172return Lagrange(x)73#Wrap74interpolacao = un.wrap(XinterpL)7576