Bonjour à tous,
J'ai besoin d'un coup de main sur un problème qui me semble loin d'etre simple... En fait, je suis étudiant en informatique et j'ai un problème important à résoudre issu d'un algorithme que je développe...
Peut etre que ça vous prendra 5 minutes à résoudre donc j'ai pensé vous mettre mon problème ici:
Soit u(n) = k*(n*e-n*a*(a-1)+(n+1)*e-n*a)
avec k = (1-e-a)²/(1+2*a*e-a-e-2*a)
et a un constante donnée.
Domaines de définitions:
n >= 2 entier naturel, et a inclu dans ]0;1.695].
Il semblerait que u(n) soit décroissante et tende vers 0 en +infini, je ne l'ai pas démontré, mais en toute logique, ça devrait etre le cas. Si ce n'est pas le cas, il y a un probleme dans mon raisonnement...
Problème: On veut trouver le premier n tel que u(n) soit inférieur à un seuil S fixé (ex: S = 0.001).
Ce qui, je pense peut etre fait en calculant:
u(n) < S
Une valeur majorée de n serait acceptable (mais pas trop sinon ça ralenti l'algorithme) si cela rend les calculs plus simples.
Je remercie tout particulièrement celui qui se penchera sur le probleme...
J'ai essayé avec les dérivées, mais mes souvenirs en maths sont bien lointains...
Bonjour,
Plusieurs questions:
1) e, c'est le "vrai" e?
2) k est-il positif?
3) a a-t-il une valeur fixe? Laquelle?
Correction de l'énoncé (je n'arrive pas à éditer le texte original):
e = exponentielle, k devrait etre supérieur à 0, mais cela reste à prouver... Je ne sais pas trop comment faire... Peut etre en faisant la limite que a tends vers 0.
Soit u(n) = k*(n*e-n*a*(a-1)+(n+1)*e-n*a)
avec k = (1-e-a)²/(1+2*a*e-a-e-2*a)
et a un constante donnée.
Domaines de définitions:
n >= 2 entier naturel, et a inclu dans ]0;1.695].
Il semblerait que u(n) soit décroissante et tende vers 0 en +infini, je ne l'ai pas démontré, mais en toute logique, ça devrait etre le cas. Si ce n'est pas le cas, il y a un probleme dans mon raisonnement...
Problème: On veut trouver le premier n tel que u(n) soit inférieur à un seuil S fixé (ex: S = 0.001).
Ce qui, je pense peut etre fait en calculant:
u(n) < S
Désolé, j'ai du mal avec les systèmes où on ne peut pas éditer son dernier post.
donc:
a est un réel compris entre ]0; 1.695].
Il est calculé à partir d'un entier naturel sigma tel que sigma soit en entier naturel non nul.
On a:
a = 1.695 / sigma.
D'où le fait que a soit un réel compris dans ]0; 1.695]
J'espère que ça pourra vous aider.
Merci beaucoup !
Lorsque vous dite qu'on ne peut pas l'extraire de façon simple, vous avez une idée de ce qu'il faut faire ? Je cherche une piste pour pouvoir approximer n...
Si je ne me trompe pas, Un x ne-n exp(ln(x/k)/ln(a))
Or pour x 2, la fonction f(x) = xe-x et n est justement supérieur à 2.
Je fais appel à vous, je pense qu'avec une fonction convexe sous l(axe y=x, il y a moyen de trouver un algo, nan ?
Ben en fait il faut que :
ln(n*a+1)-naln()
Or, si on étudie ln(x+1)-x, on se rend compte que cette fonction tend vers - quand x tend vers +. Donc à partir d'un certain moment, tu vas avoir ton n. (ça c'est pour l'existence)
Maintenant, j'ai eu une idée (après un bon repas) pour trouver le n:
On sait que (après quelques calculs de dérivée):
Si n, alors:
ln(na+1)*na
Donc, à partir de ce rang:
ln(n*a+1)-na-*na
Donc si on trouve n tel que:
-*naln()
C'est gagné!
Ben on veut donc:
n
Voilà donc tu prends la partie entière de
à laquelle tu ajoutes 1. On va l'appeler n2
Le n final est donc le max entre 0, et n2
Voili, voilou
Wow ! Génial ! C'est excellent
Merci (vraiment) beaucoup !
Je vais vérifier en hate si ça fonctionne !
J'ai quand meme deux questions sur des points un peu obscurs :
La première est: comment considéres-tu que n >= 1/3a ?
Quel est ton calcul de dérivée pour arriver à cela ?
Sinon, quand tu parles de prendre la partie entière et ajouter 1 à -4*ln(S/k)/a ?
Quoiqu'il en soit, merci.
Ben en fait, il faut que:
ln(a*n+1)-naln(S/k).
Autrement dit que:
na-ln(a*n+1)-ln(S/k).
Or, na-ln(a*n+1) est l'écart au point x=na entre les courbes représentant les fonctions x->x et x->ln(x+1).
Je me suis donc dit qu'il fallait une fonction inférieure à x et supérieure à ln(x+1) (au moins à partir d'un certain rang)...
Et la fonction x->(3/4)*x fonctionne. En effet:
Il est clair que : x>(3/4)*x pour tout x strictement positif.
Il faut donc chercher quand:
ln(x+1)<(3/4)*x
Ce qui revient à:
ln(x+1)-(3/4)*x<0
On va dériver la fonction:
f(x)=ln(x+1)-(3/4)*x
On trouve:
f'(x)=1/(1+x)-3/4=(1-3x)/(1+x)
Donc c'est fonction est décroissante pour x>1/3 (et là je m'aperçois que je me suis planté.... Désolé. Mais au final ça ne changera pas grand chose au résultat final (juste la valeur quoi pas le raisonnement)
Comme f(1/3)>0, il faut trouver une valeur pour laquelle cette fonction est strictement négative:
f(1/2)=0.03
f(4/5)=-0.01
Donc on va prendre 4/5 est pas 1/3.
Donc si:
x>4/5 alors:
ln(1+x)<(3/4)*x<x
Il faut donc que: na4/5 donc que n4/(5a)
Voilà.
Je ne comprends pas ta dernière question
Ok, parfait je suis ton raisonnement. Merci
Pour la dernière question, je me demandais pourquoi tu utilisais la partie entière +1 ?
Pour être sûr que n sera plus grand que la valeur dite.
Si tu cherches un entier plus grand que 3/4, tu prends la partie entière de 3/4, donc 0, à laquelle tu ajoutes 1.
On m'a suggeré d'utiliser la fonction reciproque de n.en qui est la fonction de lambert notée W.
Du coup, après une bonne heure de résolution, j'ai trouvé ce résultat très intéressant:
n <=
Mais à mon grand regret, le n trouvé est négatif, mais correspond bien à une solution...
Quelqu'un aurait-il une idée ?
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :