# -*- coding: utf-8 -*-
# Created on Wed May 21 08:08:08 2025
# @author: mhebding
# DM3py - Integrales



from math import sqrt, sin, pi, log
from scipy.integrate import quad
import sympy as sp

## I - La methode des rectangles sur la periode d un pendule

# 1.
g = None
l = None
theta0 = 50*pi/180
k = None

def approx(x):
    return None

def test1():
    periode1 = 4*sqrt(g/l)*quad(lambda x: approx(x),0,pi/2)[0]
    periode1 = round(periode1, 2)
    print("La période du pendule calculée avec la méthode quad est {resultat} s".format(resultat=periode1))

# 2. 
None # reponse en commentaire

# 3.
def rectangles(f,a,b,n):
    None
    return None

# 4.
n = 1000
periode2 = 4*sqrt(g/l)*rectangles(lambda x: approx(x),0,pi/2,n)
print("Période pour n= {nombre} : {resultat} s".format(nombre=n, resultat=periode2))

# 5.
def test2():
    for n in [10,100,1000,10000,100000,1000000]:
        periode2 = 4*sqrt(g/l)*rectangles(lambda x: approx(x),0,pi/2,n)
        print("Période pour n= {nombre} : {resultat} s".format(nombre=n, resultat=periode2))
    print("L'approximation du calcul de l'intégrale par la méthode des rectangles est d'autant plus précise que n augmente")



## II - La methode des trapezes sur le travail d une isotherme

# 6.
n0 = None
R = None
T = None
Vi = None # en m3
Vf = None # idem

V = sp.Symbol('V') 
P = n0*R*T*1/V

fonction = sp.lambdify(V, P) # conversion en fonction

# 7.
def trapezes(f,a,b,n):
    None
    return None

# 8.
n = 10000
W = None

def test3():
    print("")
    print("II - Calcul de W")
    print("n=" +str(n))
    solution1 = round(-n0*R*T*log(Vf/Vi),2)
    print("Par la theorie : " + str(round(solution1,2)) + " J")
    solution2 = W
    print("Par les trapezes : " + str(round(solution2,2)) + " J")
    solution3 = -rectangles(lambda x: fonction(x),Vi,Vf,n)
    print("Par les rectangles : " + str(round(solution2,2)) + " J")

None # reponse en commentaire

# 9.
None # reponse en commentaire