TP1: Evaluation De Perfermance

Réalisé Par : Intissar Sidaoui Et Rania BenSalah

Groupe 1

On Commence par:

In [2]:
import random
import matplotlib.pyplot as plt 

Comment calculer la moyenne

=> Voila

In [3]:
def Xn(t,n):
    x=0
    for j in t :
        x=x+j
    return x/n 

Comment calculer la convergence

=> Voila

In [4]:
def On(t,n,xn):
    tita = 0
    for i in t :
        tita=tita+(i-xn)**2
    return tita/n 

Comment Crée un table de n variable uniforme

=> Voila

In [5]:
def creat_alea_table(n):
    t=[]
    for i in range(n+1):
        t.append(random.uniform(0, 1))
    return t 

On passe maintenant à resoudre et exécuter les exemples:

Exemple n°1:

In [6]:
n=[1000,10000,100000,1000000]
titatable=[]
xn=[]
for i in n :
    t=creat_alea_table(i)
    xn.append(Xn(t,i))
    titatable.append(On(t,i,Xn(t,i)))
    
plt.plot(n,titatable, 'r*')
plt.plot(n,xn, 'b*')
plt.show()
for i in range(len(n)):
    print ('les valeur aleatoire {} leur moyenne{} et leur variance {}'.format(n[i],xn[i],titatable[i]))
les valeur aleatoire 1000 leur moyenne0.5020069986063366 et leur variance 0.08636524097756378
les valeur aleatoire 10000 leur moyenne0.5011334872206992 et leur variance 0.08363417782574396
les valeur aleatoire 100000 leur moyenne0.49958061880102583 et leur variance 0.08380244584709111
les valeur aleatoire 1000000 leur moyenne0.499996466232293 et leur variance 0.08332147014692759

Remarque:

le nombre de variable ne sont pas inclus dans la moyenne ou dans la variance

Exemple n°2:

In [7]:
import numpy as np
In [8]:
def creat_alea_table(n,lamda):
    t=np.random.exponential(1/lamda,n)
    return t 
In [9]:
print(Xn(t,10000))
49.999646623229296
In [10]:
xn=[[]]*4 
titatable=[[]]*4  
from ipykernel import kernelapp as app
lamda=[10,100,1000,10000]


for i in range(4):
    for j in range(4):
        t=creat_alea_table(n[i],lamda[j])
        x=Xn(t,n[i])
        xn[i].append([x])
        titatable[i].append([On(t,n[i],x)])
        plt.subplot(2,2,1)
        plt.plot(lamda[j],titatable[i][j],'ro')
        plt.subplot(2,2,2)
        plt.plot(lamda[j],x,'bo')

plt.show()
<ipython-input-10-0cee7dfdedf0>:13: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance.  In a future version, a new instance will always be created and returned.  Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.
  plt.subplot(2,2,1)
<ipython-input-10-0cee7dfdedf0>:15: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance.  In a future version, a new instance will always be created and returned.  Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.
  plt.subplot(2,2,2)

Remarque

Dans la distribution discrete on observe que la valeur de lamda inclu dans la calcule de moyenne et de variance

Exemple n°3:

In [11]:
def creat_alea_table(n):
    return np.random.randint(0,n+1,n)
print(creat_alea_table(5))
[5 3 3 4 3]
In [12]:
plt.style.use('seaborn-deep')
xn=[]
tita=[]
for i in n:
    t=creat_alea_table(i)
    x=Xn(t,i)
    xn.append(x)
    tita.append(On(t,i,x))
plt.subplot(2,2,1)
plt.plot(n,tita,'r*')
plt.subplot(2,2,2)
plt.plot(n,xn,'b*')
for i in range(len(n)):
    print('les valeur {} leur moyenne {} leur variance {}'.format(n[i],xn[i],tita[i]))
<ipython-input-3-311631902cbf>:4: RuntimeWarning: overflow encountered in long_scalars
  x=x+j
les valeur 1000 leur moyenne 492.613 leur variance 86556.01523099998
les valeur 10000 leur moyenne 5002.6861 leur variance 8168267.898366751
les valeur 100000 leur moyenne 6982.87175 leur variance 2678233164.182701
les valeur 1000000 leur moyenne -2142.779629 leur variance 335902710489.4809

Remarque

Dans la distribution discrete uniforme on observe que la plupart de moyenne implique plus dans les deux valeur moyenne et variance

Exemple n°4:

In [13]:
def creat_tabe(n):
    x=[]
    t=np.random.uniform(0, 1,n)
    for i in t:
        if i<0.3:
            x.append(0)
        elif i<0.5:
            x.append(2)
        else:
            x.append(6)
    return x
In [14]:
xn=[] 
tita=[]
for i in n:
    t=creat_tabe(i)
    x=Xn(t,i)
    xn.append(x)
    tita.append(On(t,i,x))
for i in range (len(n)):
    print ('valeur aleatoire{} leur moyenne {} leur variance {}'.format ( n[i],xn[i],tita[i]))
valeur aleatoire1000 leur moyenne 3.284 leur variance 7.351344000000038
valeur aleatoire10000 leur moyenne 3.4 leur variance 7.225599999999773
valeur aleatoire100000 leur moyenne 3.40084 leur variance 7.241007294405245
valeur aleatoire1000000 leur moyenne 3.402022 leur variance 7.236650311469096

Remarque

On observe que si on augmente la valeur aleatoire (de 1000 à 1000000) à chaque fois la moyenne presque le meme ( petit augmentation apres le vergule) et aussi la variance aussi pas de grand changement presque le meme( petit diminution apres le vergule)

In [ ]: