Bonjour,
Je bloque sur un algorithme pour calculer une certaine limite. On pose pour l'ensemble
des
entre
et
tels que le reste de la division euclidienne est supérieur à
.
Je veux calculer la limite de
Voici mon code Python :
def countA(n): #Pour calculer le cardinal de notre ensemble
l=[]
for i in range(1,n+1):
if n%i>=i/2 :
l.append(i)
return len(l)
def lim(n): #Fonction pour la limite
epsilon=1e-6
p=n
while abs((countA(p)/p)-(countA(p+1)/(p+1)))>=epsilon:
p+=1
return countA(p)/p
Mais l'algorithme ne marche pas. En fait, je ne reçois aucun message d'erreur mais le calcul ne se fait pas. Pour lim(1) j'ai 0.0. Mais pour lim(2) je n'ai rien. Le calcul ne se termine pas.
J'espère que vous pourrez m'aider afin de comprendre mon erreur et de corriger l'algorithme.
Merci d'avance,
Bonjour,
Je ne vois pas d'erreurs, juste ton algo est lent (O(n²)) et que ça converse pas si rapidement que ça.
Essaye en mettant un epsilon plus petit ou en commençant avec un n plus grand
Que cherches-tu à déterminer exactement?
salut
Bonjour,
Je m'excuse. C'est le reste de la division euclidienne de n par k (supérieur à k/2).
Merci pour votre réponse. Je ne peux pas mettre de n plus grand car ca ne se termine pas dès n=2...
En prenant un epsilon plus petit j'ai toujours le même problème.
Merci d'avance,
Bonjour,
Je m'excuse pour ma faute. J'ai mis epsilon=10-3 et j'obtiens : lim(3)=lim(50)=0.38825448613376834.
Pouvez-vous m'expliquer où se cachait le problème s'il vous plaît ? Etait-ce trop difficile pour l'ordinateur de trouver des différences inférieures au epsilon initial ? Cela serait-donc un problème de la représentation des réels par l'ordinateur ?
Merci d'avance,
ouais en fait je ne vois pas l'intérêt de créer une fonction count qui a même rôle que la fonction len
def liste(n)
for i in range (n)
if n%i >= i/2
liste.append(i)
return liste
e = int(input("précision"))
n = 1
a = len(liste(n))/n
b = len(liste(n + 1))/(n + 1)
while abs(a - b) > e
n+ = 1
a, b = b, len(liste(n))/n
print a, b
Bonjour,
Vous avez raison, il n'y a pas raison de définir la fonction count. Je l'avais fait pour avoir plus de clarté.
Sinon, le problème avec le epsilon très petit c'était quoi en fait ? Problème dans la représentation des réels ?
Merci d'avance,
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :