import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import quad
from numpy.polynomial import Polynomial

def f(x) :
    if x <= 0 :
        return 0
    else :
        return np.exp(-1/x)
        
# X = np.linspace(-2,2,100)
# Y = []
# for x in X :
#     Y.append(f(x))
# plt.plot(X,Y)
# plt.show()

P = Polynomial([1])
L = []
for n in range(1,6) :
    P = Polynomial([1,-2*(n-1)])*P+Polynomial([0,0,1])*P.deriv()
    L.append(P)

def g(x) :
    return f(x)*f(1-x)

# X = np.linspace(-0.5,1.5,100)
# Y = []    
# for x in X :
#     Y.append(g(x))
# plt.plot(X,Y)
# plt.show()

n = 1
delta = 1
while delta > 1e-5 :
    Sg,Sd = 0,0
    for k in range(n) :
        Sg += g(k/(2*n))
        Sd += g((k+1)/(2*n))
    Sg,Sd = Sg/(2*n),Sd/(2*n)
    delta = Sd-Sg
    n += 1
print(2*Sg,2*Sd)


# la valeur "exacte" 
alpha = quad(g,0,1)[0]

def h(x) :
    return quad(g,0,x)[0]/alpha
    
# X = np.linspace(-1,2,100)
# Y = []    
# for x in X :
#     Y.append(h(x))
# plt.plot(X,Y)
# plt.show()