bonjour tout de monde ;
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
je stocke des fichiers comportant des matrices de résultat de factoriel et puis je fait le parcourt (i,j)
--> donc pour calculer les combinaison j'ai réaliser la fonction suivante
%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é !
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
-----