|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mai 2005 Messages : 11 ![]() |
Bonjour,
comme l'indique le titre du sujet, j'ai des petits soucis (gros?) lors de l'utilisations des fonctions exp(), sqrt() ou pow()... Je travail sous Paradox9 (pas le choix), avec les maj. Voici le message d'erreur: "An arithmetic error occured during 'SQRT' execution. Reason: 'The value of an argument is not in an acceptable range for this function" Et mon petit bout de programme, permettant le calcul des valeurs nécessaires au traçage d'une courbe de gauss... (rien que ça) -------------------------------------------------------------------------- method CourbeGauss (const TolHigh number,const TolLow number, const Moyenne number, const EcartType number ,var Gauss TabCourbeGauss) var UniteGauss number Puissance smallint TailleGauss smallint i smallint Vt1,Vt2,Vt3 number endvar ;remplissage des valeurs de la courbe de gauss UniteGauss = (TolHigh - TolLow ) /120 Puissance = 2 TailleGauss = Gauss.size() for i from 1 to TailleGauss Vt1 = (TolLow + (i * (UniteGauss)) - Moyenne ) / (EcartType) Vt2 = (1/(EcartType * sqrt( 2 * PI))) * exp( - (Vt1.pow(2))/2) Vt3 = 100 * (Vt2 / (1/(EcartType * sqrt(2* PI))) ) if ( Vt3 > 100 ) OR ( Vt3 < -(0.0001) ) then return endif gauss[TailleGauss-i+1] = smallint (Vt3) endfor endMethod ------------------------------------------------------------------------ J'ai lu sur un autre site que cela pouvait venir du trop grand nombre de chiffres après la virgule, que "exp()" n'accepterais pas. J'ai donc tenté de troncaturer "Vt1", mais sans succés... (marche une fois sur deux). Bref, j'ai retourné le problême dans tout les sens, recherché dans les docs... rien Si quelqu'un aurait une idée, ou mieux qui aurait déjà eu ce problême, ce serait d'un grand secour pour moi! Merci d'avance. |
|
|
00
|
|
|
#2 | ||
|
Membre chevronné
![]() Inscription : mars 2006 Messages : 615 ![]() |
Ce petit exemple montre que la fonction exp n'est utilisable qu'entre +/-11355pour vt4 car le resultat est certainement de type Extended
3.6 x 10^-4951 .. 1.1 x 10^4932 Code :
|
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : mai 2005 Messages : 11 ![]() |
Merci beaucoup Alweber, je pense que je vais tenter la ddl en delphi (pour la formule mathématique, je laisse tombé).
Par contre je n'ai absolument aucune idée sur la marche à suivre. Je n'ai jamais créée de dll, et la je ne saurais vraiment pas quoi mettre dedans! Quelqu'un peut-il m'expliquer le but de la maneuvre? Utilisé la fonction "exp()" d'un autre language?? Merci d'avance. |
|
|
00
|
|
|
#4 |
|
Membre chevronné
![]() Inscription : mars 2006 Messages : 615 ![]() |
Est ce que tu as une version de delphi ?
|
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : mai 2005 Messages : 11 ![]() |
Merci beaucoup Alweber, mais finalement je vais tester la valeure de Vt1 à chaque passage, et si elle s'avère trop importante, j'annulerais le traçage de la courbe.
De toute façon, la gaussiène dans ces cas là n'est pas très lisible. Faute de temps, on va faire comme ça. Encore merci! |
|
|
00
|
|
|
#6 |
|
Membre chevronné
![]() Inscription : mars 2006 Messages : 615 ![]() |
Sage solution !
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com