# -*- coding: utf-8 -*-
"""
Created on Sat Jun 15 16:16:16 2024

@author: franc
"""

import math
import scipy.integrate as integr

# Question 1.a.
def entierproche(n):
    return math.floor(n+1/2)
    

# Question 1.b.
print()
print()
print('1.b. Comparaison de a(n) et b(n)')
def fact(n):
    if n==0:
        return 1
    else:
        return n*fact(n-1)
        
def b(n):
    s=0
    for k in range(n+1):
        s+=(-1)**k/fact(k)
    return s*fact(n)
    
eu=math.exp(-1)
for n in range (16):
    print([entierproche(fact(n)*eu),b(n)])
    
print()
print()


# Question 2.a.
print('2.a. Calcul de d(n) et de J(n)/d(n)')
for n in range(16):
    d=fact(n)*eu-b(n)
    J=integr.quad(lambda x: x**n*math.exp(x),0,1)[0]
    print([d,J/d])
    
    

