Variables

Retrouver tous les sujets résolus.
Répondre
Agathe

Variables

Message par Agathe » jeu. 19 déc. 2019 02:24

Bonsoir,

Je n'arrive pas à faire des questions d'un DM de Maths. J'ai rassemblé dans l'image en dessous les questions qui me posent problème : il y en a d'autres dans le DM, mais je les ai réussies, j'ai donc mis sur l'image que celles que je n'ai pas réussies, mais cela ne nuit pas à la compréhension de l'énoncé.
dm_maths_TS_20_12.png
Je n'arrive donc pas à faire la question que j'ai appelée "Question 1" : comment faire ? Je ne comprends même pas la question...

Pour la question 2, j'ai fait ce programme :

Code : Tout sélectionner

def Tirage(n,N):
liste=[0 for i in range (N)]
    A=np.random.randint(1,N)
    B=np.random.randint(1,N)
    C=np.random.randint(1,N)
    print(A)
    print(B)
    print(C)
    for i in range (N):
        if i==A or i==B or i==C:
            liste[i-1]=1
        else:
            liste[i]=0
    return liste
Qu'est-ce que vous en pensez ? Est-ce qu'il convient ?

Par contre, je n'ai vraiment aucune idée pour la question 3 et la question 4... Pourriez-vous m'aiguiller svp ?

Merci beaucoup et bonnes vacances avec quelques jours d'avance, on y croit, ça arrive bientôt ! :)
sos-math(21)
Messages : 10334
Enregistré le : lun. 30 août 2010 11:15

Re: Variables

Message par sos-math(21) » jeu. 19 déc. 2019 09:53

Bonjour,
ton espérance est donnée par \(E(T_n)=N\left(1-\left(1-\dfrac{1}{N}\right)^n\right)\).
Lorsque \(N\) est fixé et que l'on fait tendre \(n\to+\infty\) alors \(\left(1-\dfrac{1}{N}\right)^n\to 0\) (car cela correspond au terme général d'une suite géométrique de raison \(1-\dfrac{1}{N}<1\) donc ton espérance tend vers \(N\), ce qui peut paraître normal : si on joue un très grand nombre de fois, toutes les cases vont finir par se remplir donc le nombre de cases non vides tend bien vers \(N\).
Si on fixe \(n\) et que l'on fait tendre \(N\to+\infty\), alors que se passe-t-il ? Si le nombre de tirages reste à \(n\) et que le nombre de cases tend vers \(+\infty\), est-ce que cela changera le nombre de cases non vides ? Combien peut-on en avoir au maximum ? Pour le prouver par un calcul de limite, il faudrait passer par des équivalents ou des développements limités mais je pense que c'est hors programme...
Pour ton programme, pourquoi fais-tu 3 tirages au hasard ? Un seul suffit, cela correspond à un lancer que l'on va reproduire \(n\) fois.
De plus ta condition alternative,

Code : Tout sélectionner

else:
            liste[i]=0
ramène systématiquement le nombre de boules dans la cas i-1 à 0, alors qu'il faudra cumuler.
Je te proposer donc de faire directement l'affectation de la valeur trouvée dans la case de rang i-1 :

Code : Tout sélectionner

import random
def Tirage(n,N):
    liste = [0 for i in range(N)]
    for i in range(n) : # on réalise n lancers de boules
        tirage = random.randint(1,N) # dans N cases
        liste[tirage-1] = liste[tirage-1] + 1 #le nombre tiré fait augmenter la case tirage-1 d'une unité (une boule de plus)
    return liste
idem

Re: Variables

Message par idem » jeu. 19 déc. 2019 17:23

Merci beaucoup pour votre réponse.

J'ai repris l'exercice cet après-midi avec vos explications, mais j'ai encore vraiment du mal pour cette question 1...

En fait pourquoi y aurait-il deux limites ? Je ne comprends vraiment pas l'objectif de la question...

Merci beaucoup pour l'aide.
SoS-Math(34)
Messages : 599
Enregistré le : ven. 17 nov. 2017 09:31

Re: Variables

Message par SoS-Math(34) » jeu. 19 déc. 2019 18:17

On considère deux situations tout à fait différentes :

* Dans le premier cas, la variable est le nombre de boules n, tandis que le nombre N de cases est un nombre fixé (c'est une constante) et du coup tu calcules la limite lorsque le nombre de boules n tend vers +inf.

* Dans le 2nd cas, le nombre de boules n est définitivement fixé, par contre, tu peux augmenter indéfiniment le nombre de cases N: d'où le calcul de la limite quand N tend vers +inf.
idem

Re: Variables

Message par idem » jeu. 19 déc. 2019 20:02

Merci beaucoup pour votre réponse.

Après relecture de tous vos messages, j'ai bien compris le cas où N est fixe et où on fait tendre n vers l'infini.

Mais le deuxième cas me pose problème.

Comment peut-on calculer la limite ? Car j'ai essayé de la calculer quand on fixe n et quand on fait tendre N vers l'infini, mais on obtient une forme indéterminée, n'est-ce pas ?

Pour les développements limités, je ne connais pas mais on nous a par contre donné une annexe avec une liste d'équivalents que l'on peut utiliser. On a eu la définition.

Il faudrait donc en utiliser pour lever la forme indéterminée ? J'ai essayé mais je n'ai pas trouvé lequel... Ou alors (1+x)^alpha -1 ?
Mais je n'arrive pas à l'utiliser...

Je suis donc vraiment bloquée pour le deuxième cas...

Merci encore pour vos explications.
sos-math(21)
Messages : 10334
Enregistré le : lun. 30 août 2010 11:15

Re: Variables

Message par sos-math(21) » ven. 20 déc. 2019 07:53

Bonjour,
si tu as des équivalents, on va pouvoir s'en sortir.
Il faut effectivement utiliser l'équivalent \((1+x)^\alpha\sim 1+\alpha x\) ou encore \((1+x)^\alpha -1\sim \alpha x\) que l'on applique à \(\left(1-\dfrac{1}{N}\right)^n-1\) ce qui donne :
\(\left(1-\dfrac{1}{N}\right)^n-1\sim -\dfrac{n}{N}\). Je te laisse conclure le calcul de la limite.
Bonne continuation
idem

Re: Variables

Message par idem » ven. 20 déc. 2019 10:41

Merci pour votre réponse.

Donc la limite de l'espérance pour le deuxième cas est 0, comme n est fixé et comme N tend vers l'infini ?

Est-ce bien ça ? Par contre, je ne vois vraiment pas quelle conclusion en tirer... Ça veut dire qu'on perd tout le temps ?

Merci encore.

20/12/2019 10h40
sos-math(21)
Messages : 10334
Enregistré le : lun. 30 août 2010 11:15

Re: Variables

Message par sos-math(21) » ven. 20 déc. 2019 10:47

Bonjour,
non, cela ne vaut pas 0.
On a établi que \(1-\left(1-\dfrac{1}{N}\right)^n\sim \dfrac{n}{N}\) or l'espérance est donnée par \(N\left[1-\left(1-\dfrac{1}{N}\right)^n\right]\) donc il faut multiplier par \(N\) cet équivalent, ce qui donne \(E(T_n)\sim n\) lorsque \(N\to+\infty\).
On peut l'interpréter de manière simple en disant que si le nombre \(N\) de cases augmente, cela ne changera pas le nombre de cases non vides, celui-ci étant au mieux de \(n\) puisqu'il y a \(n\) boules, l'optimum étant qu'il y ait une seule boule par case, donc \(n\) cases occupées : c'est ce que l'on peut "espérer".
Est-ce plus clair ?
idem

Re: Variables

Message par idem » ven. 20 déc. 2019 19:08

Oui, merci, maintenant c'est beaucoup plus clair !

C'est un DM à rendre demain : aurez-vous un peu de temps encore ce soir pour m'aider ?
J'espère vraiment, car j'ai du mal encore pour les questions 3...

Pour la question, donc pour écrire le programme T(n,N), comment faire ? Je ne vois vraiment pas comment on pourrait réutiliser le programme Tirage(n,N)...

Et pour la dernière question ?

Merci encore de m'aider !
sos-math(21)
Messages : 10334
Enregistré le : lun. 30 août 2010 11:15

Re: Variables

Message par sos-math(21) » sam. 21 déc. 2019 09:58

Bonjour,
la fonction \(T(N,n)\) doit renvoyer le nombre de cases non vides à l'issue de l'expérience aléatoire.
La fonction Tirage que je t'ai proposée dans un message précédent ne correspond pas tout à fait à la demande car dans ton exercice, il s'agit de mettre 1 là où la case a reçu au moins une boule et 0 ailleurs.
La fonction Tirage est donc modifiée comme suit :

Code : Tout sélectionner

import random
def Tirage(n,N):
    liste = [0 for i in range(N)]
    for i in range(n) : # on réalise n lancers de boules
        tirage = random.randint(1,N) # dans N cases
        if liste[tirage-1] == 0 :
           liste[tirage-1] = 1  #on passe le terme de rang tirage-1 à 1 si cela n'a pas déjà été fait
    return liste
Dans ce cas, avec cette fonction, la fonction \(T(N,n)\) est simple puisqu'elle correspond au nombre de 1 dans la liste précédente, ce qui se calcule facilement en faisant la somme de la liste :

Code : Tout sélectionner

import random
def Tirage(n,N):
    liste = [0 for i in range(N)]
    for i in range(n) : # on réalise n lancers de boules
        tirage = random.randint(1,N) # dans N cases
        if liste[tirage-1] == 0 :
           liste[tirage-1] = 1  #on passe le terme de rang tirage-1 à 1 si cela n'a pas déjà été fait
    return liste
def T(n,N):
    return sum(Tirage(n,N))
Bonne continuation
Répondre