Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Précision des calculs

3 réponses
Avatar
Tatanka
Bonsoir, Bonsoir,

J'ai déjà soumis ce problème sans donner trop de détails.
Suite aux monstrueuses erreurs générées par cette macro,
je me demande si je n'ai pas commis une grossière erreur
en rédigeant mon code. Si ce n'est pas le cas, comment
expliquer une telle différence entre les bons résultats et
ceux obtenus par formules Excel et VBA.
Il m'apparaît difficile de savoir à l'avance si une macro
qui fait des itérations va donner des résultats auxquels
on peut se fier. Allez savoir si l'exemple que je vous propose
est unique au monde!
J'aimerais bien avoir vos réflexions à ce sujet.

Voici ma patente :
http://cjoint.com/?cttCChzVjm

Merci,
Serge

3 réponses

Avatar
MichDenis
Dans ton exemple de procédure que tu décris comme "Correct"
il y a une différence entre les résultats de la feuille de calcul et
les calculs de la procédure au niveau de la XIème décimale de
certaine réponse quand tu définis tes variables de cette façon

Sub Correct()
Dim u(20) As Double
Dim n(20) As Long
Dim d(20) As Long

Si tu modifies le type de cette variable, tu obtiendras
exactement la même valeur pour les 9 premières décimales
(ceux que tu as décidé d'afficher)

Dim u(20) As Double
Dim n(20) As Double
Dim d(20) As Double

Pour ce qui est de la procédure Grosses_Erreurs()
Est-ce qu'elle calcule la même chose que l'autre procédure
cela relève plus du mathématicien que de la compréhension
d'excel.



"Tatanka" a écrit dans le message de news:

Bonsoir, Bonsoir,

J'ai déjà soumis ce problème sans donner trop de détails.
Suite aux monstrueuses erreurs générées par cette macro,
je me demande si je n'ai pas commis une grossière erreur
en rédigeant mon code. Si ce n'est pas le cas, comment
expliquer une telle différence entre les bons résultats et
ceux obtenus par formules Excel et VBA.
Il m'apparaît difficile de savoir à l'avance si une macro
qui fait des itérations va donner des résultats auxquels
on peut se fier. Allez savoir si l'exemple que je vous propose
est unique au monde!
J'aimerais bien avoir vos réflexions à ce sujet.

Voici ma patente :
http://cjoint.com/?cttCChzVjm

Merci,
Serge
Avatar
Tatanka
C'est OK pour les neuf premières décimales.
Pour ce qui est de la procédure Grosses_Erreurs()
Est-ce qu'elle calcule la même chose que l'autre procédure
Tout à fait et c'est ça qui m'agace et je ne suis même pas ivre ;-)

Je vais quand même revérifié pour la millième fois.
Il y a aussi cette différence :
u(7) 4... avec la formule Excel et u(7) = 106... avec VBA.

C'est le saut vertigineux de u(6) à u(7) qui m'a mis la puce à l'oreille.
J'ai alors fait les calculs manuellement.

Serge

"MichDenis" a écrit dans le message de news:
Dans ton exemple de procédure que tu décris comme "Correct"
il y a une différence entre les résultats de la feuille de calcul et
les calculs de la procédure au niveau de la XIème décimale de
certaine réponse quand tu définis tes variables de cette façon

Sub Correct()
Dim u(20) As Double
Dim n(20) As Long
Dim d(20) As Long

Si tu modifies le type de cette variable, tu obtiendras
exactement la même valeur pour les 9 premières décimales
(ceux que tu as décidé d'afficher)

Dim u(20) As Double
Dim n(20) As Double
Dim d(20) As Double

Pour ce qui est de la procédure Grosses_Erreurs()
Est-ce qu'elle calcule la même chose que l'autre procédure
cela relève plus du mathématicien que de la compréhension
d'excel.



"Tatanka" a écrit dans le message de news:

Bonsoir, Bonsoir,

J'ai déjà soumis ce problème sans donner trop de détails.
Suite aux monstrueuses erreurs générées par cette macro,
je me demande si je n'ai pas commis une grossière erreur
en rédigeant mon code. Si ce n'est pas le cas, comment
expliquer une telle différence entre les bons résultats et
ceux obtenus par formules Excel et VBA.
Il m'apparaît difficile de savoir à l'avance si une macro
qui fait des itérations va donner des résultats auxquels
on peut se fier. Allez savoir si l'exemple que je vous propose
est unique au monde!
J'aimerais bien avoir vos réflexions à ce sujet.

Voici ma patente :
http://cjoint.com/?cttCChzVjm

Merci,
Serge





Avatar
Tatanka
J'ai revérifié et je confirme que cette suite de nombres converge vers 2.
Ce qui m'étonne le plus, c'est de constater que la macro et la formule
Excel cafouillent aussi rapidement et donnent en plus deux valeurs différentes !
Pour n = 7 :
204,74... pour la formule
106,43... pour la macro
alors que le bonne valeur est 1,99...

Serge

"Tatanka" a écrit dans le message de news:

C'est OK pour les neuf premières décimales.
Pour ce qui est de la procédure Grosses_Erreurs()
Est-ce qu'elle calcule la même chose que l'autre procédure
Tout à fait et c'est ça qui m'agace et je ne suis même pas ivre ;-)

Je vais quand même revérifié pour la millième fois.
Il y a aussi cette différence :
u(7) 4... avec la formule Excel et u(7) = 106... avec VBA.

C'est le saut vertigineux de u(6) à u(7) qui m'a mis la puce à l'oreille.
J'ai alors fait les calculs manuellement.

Serge

"MichDenis" a écrit dans le message de news:
Dans ton exemple de procédure que tu décris comme "Correct"
il y a une différence entre les résultats de la feuille de calcul et
les calculs de la procédure au niveau de la XIème décimale de
certaine réponse quand tu définis tes variables de cette façon

Sub Correct()
Dim u(20) As Double
Dim n(20) As Long
Dim d(20) As Long

Si tu modifies le type de cette variable, tu obtiendras
exactement la même valeur pour les 9 premières décimales
(ceux que tu as décidé d'afficher)

Dim u(20) As Double
Dim n(20) As Double
Dim d(20) As Double

Pour ce qui est de la procédure Grosses_Erreurs()
Est-ce qu'elle calcule la même chose que l'autre procédure
cela relève plus du mathématicien que de la compréhension
d'excel.



"Tatanka" a écrit dans le message de news:

Bonsoir, Bonsoir,

J'ai déjà soumis ce problème sans donner trop de détails.
Suite aux monstrueuses erreurs générées par cette macro,
je me demande si je n'ai pas commis une grossière erreur
en rédigeant mon code. Si ce n'est pas le cas, comment
expliquer une telle différence entre les bons résultats et
ceux obtenus par formules Excel et VBA.
Il m'apparaît difficile de savoir à l'avance si une macro
qui fait des itérations va donner des résultats auxquels
on peut se fier. Allez savoir si l'exemple que je vous propose
est unique au monde!
J'aimerais bien avoir vos réflexions à ce sujet.

Voici ma patente :
http://cjoint.com/?cttCChzVjm

Merci,
Serge