Sous Excel 2010, cette macro me donne 2000 pour u(19) :
Sub Petit_Calcul()
Dim u(20) As Double
u(0) = 3 / 2
u(1) = 5 / 3
For n = 2 To 20
u(n) = 2003 - 6002 / u(n - 1) + 4000 / (u(n - 1) * u(n - 2))
Next n
MsgBox u(19)
End Sub
Obtenez-vous le même résultat avec d'autres versions d'Excel ?
Bonjour: Il me donne également 2000 avec 2003. Mais, quelle est l'utilité de la boucle? Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Tatanka" a écrit dans le message de groupe de discussion : isniei$el6$
Bonjour Messieurs Dames,
Sous Excel 2010, cette macro me donne 2000 pour u(19) :
Sub Petit_Calcul() Dim u(20) As Double u(0) = 3 / 2 u(1) = 5 / 3 For n = 2 To 20 u(n) = 2003 - 6002 / u(n - 1) + 4000 / (u(n - 1) * u(n - 2)) Next n MsgBox u(19) End Sub
Obtenez-vous le même résultat avec d'autres versions d'Excel ?
Merci de me le faire savoir, Serge
Bonjour:
Il me donne également 2000 avec 2003.
Mais, quelle est l'utilité de la boucle?
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Tatanka" a écrit dans le message de groupe de discussion :
isniei$el6$1@speranza.aioe.org...
Bonjour Messieurs Dames,
Sous Excel 2010, cette macro me donne 2000 pour u(19) :
Sub Petit_Calcul()
Dim u(20) As Double
u(0) = 3 / 2
u(1) = 5 / 3
For n = 2 To 20
u(n) = 2003 - 6002 / u(n - 1) + 4000 / (u(n - 1) * u(n - 2))
Next n
MsgBox u(19)
End Sub
Obtenez-vous le même résultat avec d'autres versions d'Excel ?
Bonjour: Il me donne également 2000 avec 2003. Mais, quelle est l'utilité de la boucle? Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Tatanka" a écrit dans le message de groupe de discussion : isniei$el6$
Bonjour Messieurs Dames,
Sous Excel 2010, cette macro me donne 2000 pour u(19) :
Sub Petit_Calcul() Dim u(20) As Double u(0) = 3 / 2 u(1) = 5 / 3 For n = 2 To 20 u(n) = 2003 - 6002 / u(n - 1) + 4000 / (u(n - 1) * u(n - 2)) Next n MsgBox u(19) End Sub
Obtenez-vous le même résultat avec d'autres versions d'Excel ?
Merci de me le faire savoir, Serge
Tatanka
Mais, quelle est l'utilité de la boucle?
Un simple exemple de calcul itératif qui mène à un résultat absurde. J'obtiens aussi 2000 sous Excel 2010 alors que le bon résultat est 1,999998093. Grosse erreur, n'est-il pas ?
Serge
"Jacquouille" a écrit dans le message de news: 4def53d4$0$14257$
Bonjour: Il me donne également 2000 avec 2003. Mais, quelle est l'utilité de la boucle? Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Tatanka" a écrit dans le message de groupe de discussion : isniei$el6$
Bonjour Messieurs Dames,
Sous Excel 2010, cette macro me donne 2000 pour u(19) :
Sub Petit_Calcul() Dim u(20) As Double u(0) = 3 / 2 u(1) = 5 / 3 For n = 2 To 20 u(n) = 2003 - 6002 / u(n - 1) + 4000 / (u(n - 1) * u(n - 2)) Next n MsgBox u(19) End Sub
Obtenez-vous le même résultat avec d'autres versions d'Excel ?
Merci de me le faire savoir, Serge
Mais, quelle est l'utilité de la boucle?
Un simple exemple de calcul itératif qui
mène à un résultat absurde. J'obtiens aussi 2000 sous Excel 2010
alors que le bon résultat est 1,999998093.
Grosse erreur, n'est-il pas ?
Serge
"Jacquouille" <j.thiernesse@skynet.be> a écrit dans le message de news: 4def53d4$0$14257$ba620e4c@news.skynet.be...
Bonjour:
Il me donne également 2000 avec 2003.
Mais, quelle est l'utilité de la boucle?
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Tatanka" a écrit dans le message de groupe de discussion : isniei$el6$1@speranza.aioe.org...
Bonjour Messieurs Dames,
Sous Excel 2010, cette macro me donne 2000 pour u(19) :
Sub Petit_Calcul()
Dim u(20) As Double
u(0) = 3 / 2
u(1) = 5 / 3
For n = 2 To 20
u(n) = 2003 - 6002 / u(n - 1) + 4000 / (u(n - 1) * u(n - 2))
Next n
MsgBox u(19)
End Sub
Obtenez-vous le même résultat avec d'autres versions d'Excel ?
Un simple exemple de calcul itératif qui mène à un résultat absurde. J'obtiens aussi 2000 sous Excel 2010 alors que le bon résultat est 1,999998093. Grosse erreur, n'est-il pas ?
Serge
"Jacquouille" a écrit dans le message de news: 4def53d4$0$14257$
Bonjour: Il me donne également 2000 avec 2003. Mais, quelle est l'utilité de la boucle? Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Tatanka" a écrit dans le message de groupe de discussion : isniei$el6$
Bonjour Messieurs Dames,
Sous Excel 2010, cette macro me donne 2000 pour u(19) :
Sub Petit_Calcul() Dim u(20) As Double u(0) = 3 / 2 u(1) = 5 / 3 For n = 2 To 20 u(n) = 2003 - 6002 / u(n - 1) + 4000 / (u(n - 1) * u(n - 2)) Next n MsgBox u(19) End Sub
Obtenez-vous le même résultat avec d'autres versions d'Excel ?
Merci de me le faire savoir, Serge
Jacquouille
NON ! tout dépend de l'unité prise en compte et de ton but. Si 1,9 représente des Km et que tu travailles en Suisse dans l'horlogerie ...... Tout est relatif et dépend du point de vue selon lequel on se place. Bonne journée -)
Jacquouille
" Le vin est au repas ce que le parfum est à la femme." "Tatanka" a écrit dans le message de groupe de discussion : isnkvj$l1f$
Mais, quelle est l'utilité de la boucle?
Un simple exemple de calcul itératif qui mène à un résultat absurde. J'obtiens aussi 2000 sous Excel 2010 alors que le bon résultat est 1,999998093. Grosse erreur, n'est-il pas ?
Serge
"Jacquouille" a écrit dans le message de news: 4def53d4$0$14257$
Bonjour: Il me donne également 2000 avec 2003. Mais, quelle est l'utilité de la boucle? Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Tatanka" a écrit dans le message de groupe de discussion : isniei$el6$
Bonjour Messieurs Dames,
Sous Excel 2010, cette macro me donne 2000 pour u(19) :
Sub Petit_Calcul() Dim u(20) As Double u(0) = 3 / 2 u(1) = 5 / 3 For n = 2 To 20 u(n) = 2003 - 6002 / u(n - 1) + 4000 / (u(n - 1) * u(n - 2)) Next n MsgBox u(19) End Sub
Obtenez-vous le même résultat avec d'autres versions d'Excel ?
Merci de me le faire savoir, Serge
NON !
tout dépend de l'unité prise en compte et de ton but.
Si 1,9 représente des Km et que tu travailles en Suisse dans l'horlogerie
......
Tout est relatif et dépend du point de vue selon lequel on se place.
Bonne journée -)
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Tatanka" a écrit dans le message de groupe de discussion :
isnkvj$l1f$1@speranza.aioe.org...
Mais, quelle est l'utilité de la boucle?
Un simple exemple de calcul itératif qui
mène à un résultat absurde. J'obtiens aussi 2000 sous Excel 2010
alors que le bon résultat est 1,999998093.
Grosse erreur, n'est-il pas ?
Serge
"Jacquouille" <j.thiernesse@skynet.be> a écrit dans le message de news:
4def53d4$0$14257$ba620e4c@news.skynet.be...
Bonjour:
Il me donne également 2000 avec 2003.
Mais, quelle est l'utilité de la boucle?
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Tatanka" a écrit dans le message de groupe de discussion :
isniei$el6$1@speranza.aioe.org...
Bonjour Messieurs Dames,
Sous Excel 2010, cette macro me donne 2000 pour u(19) :
Sub Petit_Calcul()
Dim u(20) As Double
u(0) = 3 / 2
u(1) = 5 / 3
For n = 2 To 20
u(n) = 2003 - 6002 / u(n - 1) + 4000 / (u(n - 1) * u(n - 2))
Next n
MsgBox u(19)
End Sub
Obtenez-vous le même résultat avec d'autres versions d'Excel ?
NON ! tout dépend de l'unité prise en compte et de ton but. Si 1,9 représente des Km et que tu travailles en Suisse dans l'horlogerie ...... Tout est relatif et dépend du point de vue selon lequel on se place. Bonne journée -)
Jacquouille
" Le vin est au repas ce que le parfum est à la femme." "Tatanka" a écrit dans le message de groupe de discussion : isnkvj$l1f$
Mais, quelle est l'utilité de la boucle?
Un simple exemple de calcul itératif qui mène à un résultat absurde. J'obtiens aussi 2000 sous Excel 2010 alors que le bon résultat est 1,999998093. Grosse erreur, n'est-il pas ?
Serge
"Jacquouille" a écrit dans le message de news: 4def53d4$0$14257$
Bonjour: Il me donne également 2000 avec 2003. Mais, quelle est l'utilité de la boucle? Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Tatanka" a écrit dans le message de groupe de discussion : isniei$el6$
Bonjour Messieurs Dames,
Sous Excel 2010, cette macro me donne 2000 pour u(19) :
Sub Petit_Calcul() Dim u(20) As Double u(0) = 3 / 2 u(1) = 5 / 3 For n = 2 To 20 u(n) = 2003 - 6002 / u(n - 1) + 4000 / (u(n - 1) * u(n - 2)) Next n MsgBox u(19) End Sub
Obtenez-vous le même résultat avec d'autres versions d'Excel ?
Merci de me le faire savoir, Serge
Maude Este
Bonsour®
ramanujan a écrit
Un simple exemple de calcul itératif qui mène à un résultat absurde. J'obtiens aussi 2000 sous Excel 2010 alors que le bon résultat est 1,999998093. Grosse erreur, n'est-il pas ?
l'erreur découle à mon humble avis de l'approximation de u(1) 5/3 === >1,66666666666667 l'erreur est déjà présente dès u(2) : 1,8
Un simple exemple de calcul itératif qui
mène à un résultat absurde. J'obtiens aussi 2000 sous Excel 2010
alors que le bon résultat est 1,999998093.
Grosse erreur, n'est-il pas ?
l'erreur découle à mon humble avis de l'approximation de u(1)
5/3 === >1,66666666666667
l'erreur est déjà présente dès u(2) : 1,8
Un simple exemple de calcul itératif qui mène à un résultat absurde. J'obtiens aussi 2000 sous Excel 2010 alors que le bon résultat est 1,999998093. Grosse erreur, n'est-il pas ?
l'erreur découle à mon humble avis de l'approximation de u(1) 5/3 === >1,66666666666667 l'erreur est déjà présente dès u(2) : 1,8
"Tatanka" a écrit dans le message de news: isnkvj$l1f$
Mais, quelle est l'utilité de la boucle?
Un simple exemple de calcul itératif qui mène à un résultat absurde. J'obtiens aussi 2000 sous Excel 2010 alors que le bon résultat est 1,999998093. Grosse erreur, n'est-il pas ?
Serge
"Jacquouille" a écrit dans le message de news: 4def53d4$0$14257$
Bonjour: Il me donne également 2000 avec 2003. Mais, quelle est l'utilité de la boucle? Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Tatanka" a écrit dans le message de groupe de discussion : isniei$el6$
Bonjour Messieurs Dames,
Sous Excel 2010, cette macro me donne 2000 pour u(19) :
Sub Petit_Calcul() Dim u(20) As Double u(0) = 3 / 2 u(1) = 5 / 3 For n = 2 To 20 u(n) = 2003 - 6002 / u(n - 1) + 4000 / (u(n - 1) * u(n - 2)) Next n MsgBox u(19) End Sub
Obtenez-vous le même résultat avec d'autres versions d'Excel ?
Merci de me le faire savoir, Serge
Bonjour,
en faisant la même chose dans une feuille excel, on obtient également 2000
dès que n
Il y a peut être une erreur d'écriture de la formule
"Tatanka" <ramanujan@videotron.ca> a écrit dans le message de news:
isnkvj$l1f$1@speranza.aioe.org...
Mais, quelle est l'utilité de la boucle?
Un simple exemple de calcul itératif qui
mène à un résultat absurde. J'obtiens aussi 2000 sous Excel 2010
alors que le bon résultat est 1,999998093.
Grosse erreur, n'est-il pas ?
Serge
"Jacquouille" <j.thiernesse@skynet.be> a écrit dans le message de news:
4def53d4$0$14257$ba620e4c@news.skynet.be...
Bonjour:
Il me donne également 2000 avec 2003.
Mais, quelle est l'utilité de la boucle?
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Tatanka" a écrit dans le message de groupe de discussion :
isniei$el6$1@speranza.aioe.org...
Bonjour Messieurs Dames,
Sous Excel 2010, cette macro me donne 2000 pour u(19) :
Sub Petit_Calcul()
Dim u(20) As Double
u(0) = 3 / 2
u(1) = 5 / 3
For n = 2 To 20
u(n) = 2003 - 6002 / u(n - 1) + 4000 / (u(n - 1) * u(n - 2))
Next n
MsgBox u(19)
End Sub
Obtenez-vous le même résultat avec d'autres versions d'Excel ?
"Tatanka" a écrit dans le message de news: isnkvj$l1f$
Mais, quelle est l'utilité de la boucle?
Un simple exemple de calcul itératif qui mène à un résultat absurde. J'obtiens aussi 2000 sous Excel 2010 alors que le bon résultat est 1,999998093. Grosse erreur, n'est-il pas ?
Serge
"Jacquouille" a écrit dans le message de news: 4def53d4$0$14257$
Bonjour: Il me donne également 2000 avec 2003. Mais, quelle est l'utilité de la boucle? Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Tatanka" a écrit dans le message de groupe de discussion : isniei$el6$
Bonjour Messieurs Dames,
Sous Excel 2010, cette macro me donne 2000 pour u(19) :
Sub Petit_Calcul() Dim u(20) As Double u(0) = 3 / 2 u(1) = 5 / 3 For n = 2 To 20 u(n) = 2003 - 6002 / u(n - 1) + 4000 / (u(n - 1) * u(n - 2)) Next n MsgBox u(19) End Sub
Obtenez-vous le même résultat avec d'autres versions d'Excel ?
Pour faire simple dans ton exemple, tu utilise 5/3 or 5/3 = 1.6666666666666666.... or ton type double va le stocker 1.66666666666667 donc tes calculs vont dévier très légèrement au fur et à mesure. C'est donc ton algorithme qui ne convient pas.
Pour diminuer l'erreur ou la retarder tu pourrais déjà utiliser le type Decimal (avec le type variant et la fonction CDec)
Je n'ai pas fais le calcul excat mais qu'est-ce qui te fais croire que u(19) = 1,999998093. j'ai plutôt l'impression (intuitivement et en calculant les premiers termes) que ta suite va effectivement converger vers 2000.
bcar
Le 08/06/2011 13:04, Tatanka a écrit :
Mais, quelle est l'utilité de la boucle?
Un simple exemple de calcul itératif qui mène à un résultat absurde. J'obtiens aussi 2000 sous Excel 2010 alors que le bon résultat est 1,999998093. Grosse erreur, n'est-il pas ?
Serge
"Jacquouille" a écrit dans le message de news: 4def53d4$0$14257$
Bonjour: Il me donne également 2000 avec 2003. Mais, quelle est l'utilité de la boucle? Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Tatanka" a écrit dans le message de groupe de discussion : isniei$el6$
Bonjour Messieurs Dames,
Sous Excel 2010, cette macro me donne 2000 pour u(19) :
Sub Petit_Calcul() Dim u(20) As Double u(0) = 3 / 2 u(1) = 5 / 3 For n = 2 To 20 u(n) = 2003 - 6002 / u(n - 1) + 4000 / (u(n - 1) * u(n - 2)) Next n MsgBox u(19) End Sub
Obtenez-vous le même résultat avec d'autres versions d'Excel ?
Merci de me le faire savoir, Serge
Bonjour
Tout simplement parce que tu utilise des double
Je t'invite à découvrir la représentation numérique d'un nombre à
virgule flottante
http://fr.wikipedia.org/wiki/Virgule_flottante
Pour faire simple dans ton exemple, tu utilise 5/3
or 5/3 = 1.6666666666666666....
or ton type double va le stocker 1.66666666666667
donc tes calculs vont dévier très légèrement au fur et à mesure.
C'est donc ton algorithme qui ne convient pas.
Pour diminuer l'erreur ou la retarder tu pourrais déjà utiliser le type
Decimal (avec le type variant et la fonction CDec)
Je n'ai pas fais le calcul excat mais qu'est-ce qui te fais croire que
u(19) = 1,999998093.
j'ai plutôt l'impression (intuitivement et en calculant les premiers
termes) que ta suite va effectivement converger vers 2000.
bcar
Le 08/06/2011 13:04, Tatanka a écrit :
Mais, quelle est l'utilité de la boucle?
Un simple exemple de calcul itératif qui
mène à un résultat absurde. J'obtiens aussi 2000 sous Excel 2010
alors que le bon résultat est 1,999998093.
Grosse erreur, n'est-il pas ?
Serge
"Jacquouille" <j.thiernesse@skynet.be> a écrit dans le message de news: 4def53d4$0$14257$ba620e4c@news.skynet.be...
Bonjour:
Il me donne également 2000 avec 2003.
Mais, quelle est l'utilité de la boucle?
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Tatanka" a écrit dans le message de groupe de discussion : isniei$el6$1@speranza.aioe.org...
Bonjour Messieurs Dames,
Sous Excel 2010, cette macro me donne 2000 pour u(19) :
Sub Petit_Calcul()
Dim u(20) As Double
u(0) = 3 / 2
u(1) = 5 / 3
For n = 2 To 20
u(n) = 2003 - 6002 / u(n - 1) + 4000 / (u(n - 1) * u(n - 2))
Next n
MsgBox u(19)
End Sub
Obtenez-vous le même résultat avec d'autres versions d'Excel ?
Pour faire simple dans ton exemple, tu utilise 5/3 or 5/3 = 1.6666666666666666.... or ton type double va le stocker 1.66666666666667 donc tes calculs vont dévier très légèrement au fur et à mesure. C'est donc ton algorithme qui ne convient pas.
Pour diminuer l'erreur ou la retarder tu pourrais déjà utiliser le type Decimal (avec le type variant et la fonction CDec)
Je n'ai pas fais le calcul excat mais qu'est-ce qui te fais croire que u(19) = 1,999998093. j'ai plutôt l'impression (intuitivement et en calculant les premiers termes) que ta suite va effectivement converger vers 2000.
bcar
Le 08/06/2011 13:04, Tatanka a écrit :
Mais, quelle est l'utilité de la boucle?
Un simple exemple de calcul itératif qui mène à un résultat absurde. J'obtiens aussi 2000 sous Excel 2010 alors que le bon résultat est 1,999998093. Grosse erreur, n'est-il pas ?
Serge
"Jacquouille" a écrit dans le message de news: 4def53d4$0$14257$
Bonjour: Il me donne également 2000 avec 2003. Mais, quelle est l'utilité de la boucle? Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Tatanka" a écrit dans le message de groupe de discussion : isniei$el6$
Bonjour Messieurs Dames,
Sous Excel 2010, cette macro me donne 2000 pour u(19) :
Sub Petit_Calcul() Dim u(20) As Double u(0) = 3 / 2 u(1) = 5 / 3 For n = 2 To 20 u(n) = 2003 - 6002 / u(n - 1) + 4000 / (u(n - 1) * u(n - 2)) Next n MsgBox u(19) End Sub
Obtenez-vous le même résultat avec d'autres versions d'Excel ?
"Tatanka" a écrit dans le message de groupe de discussion : isniei$el6$
Bonjour Messieurs Dames,
Sous Excel 2010, cette macro me donne 2000 pour u(19) :
Sub Petit_Calcul() Dim u(20) As Double u(0) = 3 / 2 u(1) = 5 / 3 For n = 2 To 20 u(n) = 2003 - 6002 / u(n - 1) + 4000 / (u(n - 1) * u(n - 2)) Next n MsgBox u(19) End Sub
Obtenez-vous le même résultat avec d'autres versions d'Excel ?
"Tatanka" a écrit dans le message de groupe de discussion : isniei$el6$1@speranza.aioe.org...
Bonjour Messieurs Dames,
Sous Excel 2010, cette macro me donne 2000 pour u(19) :
Sub Petit_Calcul()
Dim u(20) As Double
u(0) = 3 / 2
u(1) = 5 / 3
For n = 2 To 20
u(n) = 2003 - 6002 / u(n - 1) + 4000 / (u(n - 1) * u(n - 2))
Next n
MsgBox u(19)
End Sub
Obtenez-vous le même résultat avec d'autres versions d'Excel ?
"Tatanka" a écrit dans le message de groupe de discussion : isniei$el6$
Bonjour Messieurs Dames,
Sous Excel 2010, cette macro me donne 2000 pour u(19) :
Sub Petit_Calcul() Dim u(20) As Double u(0) = 3 / 2 u(1) = 5 / 3 For n = 2 To 20 u(n) = 2003 - 6002 / u(n - 1) + 4000 / (u(n - 1) * u(n - 2)) Next n MsgBox u(19) End Sub
Obtenez-vous le même résultat avec d'autres versions d'Excel ?
J'en déduis que : le numérateur n(i) = n(i-1) + 2^i
le dénominateur d(i) = n(i-1).
Ce qui me conduit à cette macro :
Sub Pas_Erreurs() Dim n(20) As Double, d(20) As Double Dim r As Double n(1) = 5 d(1) = 3 For i = 2 To 19 n(i) = n(i - 1) + 2 ^ i d(i) = n(i - 1) Next i r = n(19) / d(19) MsgBox r End Sub
Cette suite de nombre converge vers 2.
Serge
"bcar" a écrit dans le message de news: isnou5$jjf$
Pour faire simple dans ton exemple, tu utilise 5/3 or 5/3 = 1.6666666666666666.... or ton type double va le stocker 1.66666666666667 donc tes calculs vont dévier très légèrement au fur et à mesure. C'est donc ton algorithme qui ne convient pas.
Pour diminuer l'erreur ou la retarder tu pourrais déjà utiliser le type Decimal (avec le type variant et la fonction CDec)
Je n'ai pas fais le calcul excat mais qu'est-ce qui te fais croire que u(19) = 1,999998093. j'ai plutôt l'impression (intuitivement et en calculant les premiers termes) que ta suite va effectivement converger vers 2000.
bcar
Le 08/06/2011 13:04, Tatanka a écrit :
Mais, quelle est l'utilité de la boucle?
Un simple exemple de calcul itératif qui mène à un résultat absurde. J'obtiens aussi 2000 sous Excel 2010 alors que le bon résultat est 1,999998093. Grosse erreur, n'est-il pas ?
Serge
"Jacquouille" a écrit dans le message de news: 4def53d4$0$14257$
Bonjour: Il me donne également 2000 avec 2003. Mais, quelle est l'utilité de la boucle? Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Tatanka" a écrit dans le message de groupe de discussion : isniei$el6$
Bonjour Messieurs Dames,
Sous Excel 2010, cette macro me donne 2000 pour u(19) :
Sub Petit_Calcul() Dim u(20) As Double u(0) = 3 / 2 u(1) = 5 / 3 For n = 2 To 20 u(n) = 2003 - 6002 / u(n - 1) + 4000 / (u(n - 1) * u(n - 2)) Next n MsgBox u(19) End Sub
Obtenez-vous le même résultat avec d'autres versions d'Excel ?
J'en déduis que :
le numérateur n(i) = n(i-1) + 2^i
le dénominateur d(i) = n(i-1).
Ce qui me conduit à cette macro :
Sub Pas_Erreurs()
Dim n(20) As Double, d(20) As Double
Dim r As Double
n(1) = 5
d(1) = 3
For i = 2 To 19
n(i) = n(i - 1) + 2 ^ i
d(i) = n(i - 1)
Next i
r = n(19) / d(19)
MsgBox r
End Sub
Cette suite de nombre converge vers 2.
Serge
"bcar" <bcar44@laposte.net> a écrit dans le message de news: isnou5$jjf$1@writer.imaginet.fr...
Bonjour
Tout simplement parce que tu utilise des double
Je t'invite à découvrir la représentation numérique d'un nombre à
virgule flottante
http://fr.wikipedia.org/wiki/Virgule_flottante
Pour faire simple dans ton exemple, tu utilise 5/3
or 5/3 = 1.6666666666666666....
or ton type double va le stocker 1.66666666666667
donc tes calculs vont dévier très légèrement au fur et à mesure.
C'est donc ton algorithme qui ne convient pas.
Pour diminuer l'erreur ou la retarder tu pourrais déjà utiliser le type
Decimal (avec le type variant et la fonction CDec)
Je n'ai pas fais le calcul excat mais qu'est-ce qui te fais croire que
u(19) = 1,999998093.
j'ai plutôt l'impression (intuitivement et en calculant les premiers
termes) que ta suite va effectivement converger vers 2000.
bcar
Le 08/06/2011 13:04, Tatanka a écrit :
Mais, quelle est l'utilité de la boucle?
Un simple exemple de calcul itératif qui
mène à un résultat absurde. J'obtiens aussi 2000 sous Excel 2010
alors que le bon résultat est 1,999998093.
Grosse erreur, n'est-il pas ?
Serge
"Jacquouille" <j.thiernesse@skynet.be> a écrit dans le message de news: 4def53d4$0$14257$ba620e4c@news.skynet.be...
Bonjour:
Il me donne également 2000 avec 2003.
Mais, quelle est l'utilité de la boucle?
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Tatanka" a écrit dans le message de groupe de discussion : isniei$el6$1@speranza.aioe.org...
Bonjour Messieurs Dames,
Sous Excel 2010, cette macro me donne 2000 pour u(19) :
Sub Petit_Calcul()
Dim u(20) As Double
u(0) = 3 / 2
u(1) = 5 / 3
For n = 2 To 20
u(n) = 2003 - 6002 / u(n - 1) + 4000 / (u(n - 1) * u(n - 2))
Next n
MsgBox u(19)
End Sub
Obtenez-vous le même résultat avec d'autres versions d'Excel ?
J'en déduis que : le numérateur n(i) = n(i-1) + 2^i
le dénominateur d(i) = n(i-1).
Ce qui me conduit à cette macro :
Sub Pas_Erreurs() Dim n(20) As Double, d(20) As Double Dim r As Double n(1) = 5 d(1) = 3 For i = 2 To 19 n(i) = n(i - 1) + 2 ^ i d(i) = n(i - 1) Next i r = n(19) / d(19) MsgBox r End Sub
Cette suite de nombre converge vers 2.
Serge
"bcar" a écrit dans le message de news: isnou5$jjf$
Pour faire simple dans ton exemple, tu utilise 5/3 or 5/3 = 1.6666666666666666.... or ton type double va le stocker 1.66666666666667 donc tes calculs vont dévier très légèrement au fur et à mesure. C'est donc ton algorithme qui ne convient pas.
Pour diminuer l'erreur ou la retarder tu pourrais déjà utiliser le type Decimal (avec le type variant et la fonction CDec)
Je n'ai pas fais le calcul excat mais qu'est-ce qui te fais croire que u(19) = 1,999998093. j'ai plutôt l'impression (intuitivement et en calculant les premiers termes) que ta suite va effectivement converger vers 2000.
bcar
Le 08/06/2011 13:04, Tatanka a écrit :
Mais, quelle est l'utilité de la boucle?
Un simple exemple de calcul itératif qui mène à un résultat absurde. J'obtiens aussi 2000 sous Excel 2010 alors que le bon résultat est 1,999998093. Grosse erreur, n'est-il pas ?
Serge
"Jacquouille" a écrit dans le message de news: 4def53d4$0$14257$
Bonjour: Il me donne également 2000 avec 2003. Mais, quelle est l'utilité de la boucle? Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Tatanka" a écrit dans le message de groupe de discussion : isniei$el6$
Bonjour Messieurs Dames,
Sous Excel 2010, cette macro me donne 2000 pour u(19) :
Sub Petit_Calcul() Dim u(20) As Double u(0) = 3 / 2 u(1) = 5 / 3 For n = 2 To 20 u(n) = 2003 - 6002 / u(n - 1) + 4000 / (u(n - 1) * u(n - 2)) Next n MsgBox u(19) End Sub
Obtenez-vous le même résultat avec d'autres versions d'Excel ?
Merci de me le faire savoir, Serge
Tatanka
À partir du moment où un nombre de la suite est égal à 2, tous les suivants sont égaux à 2 : 2003 - 6002 /2 + 4000 / (2*2) = 2.
Sub Pas_Erreurs1() Dim n(1 To 100) As Double, d(1 To 100) As Double Dim r As Double n(1) = 5 d(1) = 3 For i = 2 To 100 n(i) = n(i - 1) + 2 ^ i d(i) = n(i - 1) Next i r = n(100) / d(100) MsgBox r End Sub
Serge
À partir du moment où un nombre de la suite est égal à 2,
tous les suivants sont égaux à 2 :
2003 - 6002 /2 + 4000 / (2*2) = 2.
Sub Pas_Erreurs1()
Dim n(1 To 100) As Double, d(1 To 100) As Double
Dim r As Double
n(1) = 5
d(1) = 3
For i = 2 To 100
n(i) = n(i - 1) + 2 ^ i
d(i) = n(i - 1)
Next i
r = n(100) / d(100)
MsgBox r
End Sub
À partir du moment où un nombre de la suite est égal à 2, tous les suivants sont égaux à 2 : 2003 - 6002 /2 + 4000 / (2*2) = 2.
Sub Pas_Erreurs1() Dim n(1 To 100) As Double, d(1 To 100) As Double Dim r As Double n(1) = 5 d(1) = 3 For i = 2 To 100 n(i) = n(i - 1) + 2 ^ i d(i) = n(i - 1) Next i r = n(100) / d(100) MsgBox r End Sub
Serge
Tatanka
À partir du moment où deux nombres consécutifs de la suite égalent 2, tous les suivants sont égaux à 2 : 2003 - 6002 /2 + 4000 / (2*2) = 2.
Bonne journée, Serge
À partir du moment où deux nombres consécutifs de la suite égalent 2,
tous les suivants sont égaux à 2 :
2003 - 6002 /2 + 4000 / (2*2) = 2.