Bonjour,
J'aimerais coder cette formule sous matlab.
Mon but est de trouver la valeur de T via un algorithme de convergence en connaissant la valeur du Pfa=0.1 ! Je sais que pour arriver aux mêmes résultats que matlab que T=154.18643388786977881....si j'utilise ce coefficient sur mon algorithme général, je retombe sur leurs résultats.
N=600 et k=10.
Déja des nombres factoriels de réels, ça ne me parait pas cohérent......de plus, les nombres sont extrêmement grands et retournent des valeurs infinis ou des warning si on utilise les fonctions factorial et nchoosek(n,k) qui gère le coefficient binomial :
Je suis donc passé par des logarithmes pour gérer ces "factorial" avec les multiplications qui deviennent des sommes et des divisions des soustractions...je prends l'exponentiel pour repasser en linéaire :
ça fonctionne, mais si j'utilise ce code dans un algorithme pour trouver T, il me trouve T=154. Le problème, c'est que si je veux davantage de précisions, 1:154.1 par exemple, ça ne passe pas, ça ne prend que 1:154 ! J'ai donc essayé de décomposer en deux...par exemple sum(log(1:T+N)) je l'ai décomposé en sum(log(1:T+N-1)) + log(1:T+N), idem pour l'autre partie qui comporte T , soit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 var1 = sum(log(1:N))-(sum(log(1:k))+sum(log(1:N-k))); var2 = sum(log(1:k-1))+sum(log(1:T+N-k))-sum(log(1:T+N)); Pfa = k*exp(var1 + var2)
Mais ça se comporte de manière étrange :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 var1 = sum(log(1:N))-(sum(log(1:k))+sum(log(1:N-k))); var2 = sum(log(1:k-1))+sum(log(1:floor(T)+N-k-1))+log(T+N-k)-(sum(log(1:floor(T)+N-1))+log(T+N)); Pfa = k*exp(var1 + var2)
Quand je lance le calcul du Pfa avec des valeurs comme T=150, puis T=151, T=152, T=153, T=154, etc... j'ai bien une diminution du Pfa qui s'approche des 0.1 et arrivé à T=155 je dépasse je suis descendu trop bas, donc il faut revenir à T=154 et incrémenter de 0.1 au lieu de 1. Et là en repartant de T=154.1, T=154.2,.....T=154.9 , le Pfa ne fait que monter au lieu de descendre........quand j'incrémente de 1, ça descend et quand j'incrémente de 0.1, ça monte, je ne comprends pas cette contradiction !
Si vous avez une idée....ça me rend fou depuis hier !
Merci.
EDIT : resolu grace aux interpolations.
Partager