bonjour tout le monde ;
je travaille actuellement sur un projet de contrôle qualité :modélisation mathématique du contrôle d'acceptation (...) en BREF
en fait le contrôle d'acceptation suit la loi hypergéométrique .
Note : les lots de produits sur les quels je doit faire les tests sont importants vers les 1 000 000 produit !!! ===> Problemes
1- Probleme de factoriels de grands nombres sur matlab ( max factoriel 170 )
2- probleme de calcul de combinaison
3- Probleme de traçage de la courbe de la loi hypergeométrique

note tres importante : j'ai pas le droit d'utiliser les fonctions prédéfinies sur matlab ni "hygecdf" ni "fact" , ni "factorial"
qu'est ce que j'ai fais :
1- j'ai travaillé sur le C pour réalisé une fonction qui calcule le factoriel de grands nombre et j'ai reussi à réaliser une fonction qui me donne le factoriel sous la forme suivante n!=a*e+b
cette forme m'a permis de surmonter le problème de format max sur matlab qui ne dépasse pas 1.7977e+308

--> donc pour calculer les combinaison j'ai réaliser la fonction suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
%cette fonction prend en argument :
% v : le petit nombre 
% V : le grand nombre
% et calcule la combinaison en fonction de log décimal
 
function C = combinaison(v,V)
 A=[ 1.0000  0  ;
 2.0000  0  ;
 6.0000  0  ;
 2.4000  1  ;
(.......) ]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% la combinaison est   C= V!/v!(V!-v!)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N=log10(A(V, 1))+ A(V, 2);
L=log10(A(v, 1))+ A(v, 2);
K=log10(A((V-v),1))+ A((V-v),2);
c=N-L-K;
C=10^c;
 end
end

le probleme si V=v --> division par zéro ( j'ai rélisé une boucle if mais ça na pas marché !

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 if V=v 
    C=1; 
 else   
 
N=log10(A(V, 1))+ A(V, 2);
L=log10(A(v, 1))+ A(v, 2);
K=log10(A((V-v),1))+ A((V-v),2);
c=N-L-K;
C=10^c;
 end
end
si quelqu'un peux m'aider sur mon problème je serais reconnaissante