from math import exp def trapezoid(f, ta, tb, n): """Approssima l'integrale definito di f tra a e b con la formula dell'integrazione trapezioidale su n intervalli""" h = (tb - ta) / n s = f(ta) + f(tb) for i in range(1, n): s += 2 * f(ta + i * h) return s * h / 2 class G: #inizializzo i parametri nel costruttore def __init__(self,a,A,B): self.a = a self.A = A self.B = B def valore(self,t): return self.A*exp(-self.a*t) + self.B def __call__(self,t): return self.A*exp(-self.a*t) + self.B if __name__=='__main__': g1=G(0.6,2.,0.) i1 = trapezoid(g1.valore,0,1,100) i1_bis = trapezoid(g1,0,1,100) g2=G(2.,1.7,0.7) i2 = trapezoid(g2.valore,0,1,100) i2bis = trapezoid(g2,0,1,100) print("Integrale di g(t,0.6,2.0,0.0) tra 0 ed 1 con 100 intervalli = {0:.3f}".format(i1)) print("Integrale di g(t,2.0,1.7,0.7) tra 0 ed 1 con 100 intervalli = {0:.3f}".format(i2))