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é !
si quelqu'un peux m'aider sur mon problème je serais reconnaissante
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
Partager