A voir également:
- Une fonction de Matalb
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- Cette fonction n'est pas disponible actuellement tv lg - Forum Téléviseurs
- Fonction filtre excel n'existe pas - Forum Excel
4 réponses
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
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
myweb
Messages postés
10
Date d'inscription
samedi 31 décembre 2005
Statut
Membre
Dernière intervention
25 janvier 2006
29
1 janv. 2006 à 00:45
1 janv. 2006 à 00:45
/************************************************************************/
/* 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
*/
/* 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
*/