Cardinal d'ensemble

Bonsoir,

Est ce que quelqu'un pourrait m'expliquer la méthode pour calculer le cardinal de l'ensemble suivant ? Je voulais utiliser les coefficients binomiaux mais je n'arrive pas à exprimer la condition de l'ensemble avec, je suppose qu'il s'agit d'une méthode différente.

Merci d'avance et bonne soirée104864

Réponses

  • Bonjour,

    $23898$

    Cordialement,

    Rescassol
  • Merci pour la réponse mais est il possible de m'expliquer la méthode utilisée pour arriver à ce résultat ?
  • De façon classique :
    Si tu notes $N_{n,k}$ le nombre de façon d'obtenir k avec n nombres.

    Tu raisonnes par récurrence.

    Pour obtenir 13 avec 7 nombres, tu as 2 grosses possibilités :
    Soit il existe un des $k_i$ qui vaut 0 donc en fait tu dois dénombrer le nombre de façons d'obtenir 13 avec 6 nombres.
    Soit tous les entiers sont strictement plus grands que 0 donc si tu enlèves 1 à chacun, le nombre de possibilités est le même que le nombre de façons d'obtenir 13-7 = 6 avec 7 nombres

    Tu as donc une récurrence style

    $N_{n,k} = N_{n-1,k} + N_{n,k-n}$
  • De façon efficace...

    À partir d'une décomposition $k_1+\cdots+k_7=13$, tu écris $k_1$ bulles $\bullet$, puis $k_2$ bulles, etc. Pour séparer les paquets tu mets un séparateur $\mid$. Par exemple, si $(k_1,\dots,k_7)=(1,3,3,0,0,4,2)$, tu écris \[\bullet\mid\bullet\bullet\bullet\mid\bullet\bullet\bullet\mid\mid\mid\bullet\bullet\bullet\bullet\mid\bullet\bullet\]À partir d'un tel « mot » avec deux « lettres » $\bullet$ et $\mid$, on retrouve facilement la décomposition : le nombre de bulles consécutives avant le $j$-ème séparateur est $k_j$.

    Comme il y a sept termes, il y a $6$ séparateurs en plus des $13$ bulles. La position des $6$ séparateurs dans les $13+6$ symboles suffit à reconstruire le mot et donc la décomposition. Il y en a donc...

    Tiens, je ne trouve pas pareil que Rescassol !
  • Bonsoir,
    cpt, N = 0, range(8)
    for a in N:
        for b in N:
            for c in N:
                for d in N:
                    for e in N:
                        for f in N:
                            for g in N:
                                if a+b+c+d+e+f+g==13:
                                    cpt+=1
    print(cpt)      
    
    Ce code répond $23898$.
    Je regarderai plus mathématiquement demain.

    Cordialement,

    Rescassol
  • @Rescassol je ne suis pas un puriste de la programmation Python mais voir tous ces "for" emboîtés...

    bref en faisant une recherche j'ai trouvé que Python a le module itertools exprès pour ce genre de trucs :
    from itertools import product
    print(len([t for t in product(range(14), repeat=7) if sum(t) == 13]))
    

    j'obtiens 27'132.
  • Bonjour,

    D'accord mon programme est bourrin car écrit en trois minutes, mais je ne vois pas pourquoi il serait faux.
    Il doit y avoir des divergences de compréhension de l'énoncé.

    Cordialement,

    Rescassol
  • @Rescassol:
    cpt, N = 0, [color=#FF0000][s]range(8)[/s] range(14)[/color]
    
  • Bonjour,

    Ah ! Avec "range(14)", ça fait bien $27132$. Le problème était donc bien là.
    J'en était resté avec l'analogie avec des dés et mal interprété le $7$.

    Cordialement,

    Rescassol
  • OK. « Mon programme », utilisant ceci, est plus court.
    sage: binomial(19,6)
    27132
    
  • Bah ! avec Python pas besoin d'utiliser sa cervelle...8-)
  • Bonjour,

    Bah, il y a des jours où on a envie de réfléchir et d'autres non ...
    Voilà avec une fonction récursive:
    def Comptage(n,s,m):
        total = 0
        if n == 1:
            if 0 <= s <= m:
                return 1
            else:
                return 0
        for k in range(m + 1):
            total += Comptage(n - 1,s - k,m)
    
        return total
    
    N, S, m = 7, 13, 13
    Nombre = Comptage(N,S,m)
    print(Nombre)
    
    qui redonne bien $27132$.

    Cordialement,

    Rescassol
Connectez-vous ou Inscrivez-vous pour répondre.