Une fonction de Matalb

Salut,
je cherche la fonction de Matlab qui donne le nombre de combinaisons d'un nombre n parmi p. J'ai trouvé un document qui indique que cette fonction est "cnp(n,p)" mais le logiciel m'indique que cette fonction est indéfinie.
Aidez moi SVP.
Merci.

4 réponses

  • Votes
  • Date
  • Date décroissante
  1. Salut,
    comment je peux ajouter cette fonction à la bibliotèque de Matlab?
    1. Hello
      y'a aussi la possibilité d'utiliser le fait que cnp(n,p) n'est autre que n!/(p!*(n-p)!)

      Or la fonction factorielle "n!" pour un entier n se calcule avec Matlab à l'aide de gamma(n).
      Tu peux donc taper

      fuction resultat=cnp(n,p)
      resultat=gamma(n)/(gamma(p)*gamma(n-p))
      end

      hope it helps
      1. /************************************************************************/
        /* ce programme calcule la combinaison de p parmi n
        /* on ne peut pas ici calculer Cnp avec sa formule qui utilise les
        /* factorielles car 13! est trop grand pour etre stocke dans la
        /* memoire de l'ordinteur et pourtant cnp(13,5) a une valeur reelle
        /* qui rentre dans la memoire de l'ordinteur (=1287)
        /*
        /* on utilise donc la formule de recurrence pour calculer cnp
        /************************************************************************/

        #include<stdio.h>

        int cnp(int n, int p);

        main(){
        int n,p;

        printf("Calcul de Cnp :\n");

        printf(" n = ");
        scanf("%d",&n);

        printf(" p = ");
        scanf("%d",&p);

        if (p>n) {
        printf("calcul impossible : p>n !\n");
        } else {
        printf("Cnp = %d\n",cnp(n,p));
        }
        }

        int cnp(int n, int p){
        if (p == 0) {
        return 1;
        } else {
        return cnp(n-1,p-1)*n/p ;
        }
        }

        /* explications :
        * selon la formule de recurrence donnee dans l'enonce,
        * cnp(n,p) = (n/p)*cnp(n-1,p-1) pour p non nul
        * et cnp(n,0) = 1, quelque soit n
        *
        * si on calcule cnp(5,3), la fonction retourne comme
        * resultat 5/3 * cnp(4,2).
        * la fonction cnp s'appelle donc elle-meme pour ce calcul.
        * pour cnp(4,2) elle retourne 4/2 * cnp(3,1)
        * elle s'appelle donc encore une fois
        * pour cnp(3,1) elle retourne 3/1 * cnp(2,0)
        * elle s'appelle donc encore une fois
        * pour cnp(2,0) elle retourne 1
        * l'ordinateur peut donc calculer cnp(3,1), ce qui lui
        * permet de calculer cnp(4,2), puis cnp(5,3).
        *
        * donc cnp(3,1) = 3/1 * 1 = 3
        * et cnp(4,2) = 4/2 * cnp(3,1) = 4/2 * 3 = 6
        * et cnp(5,3) = 5/3 * cnp(4,2) = 5/3 * 6 = 10
        *
        * cette propriete de s'appelle la RECUSIVITE
        */