Was bedeutet EPS in C?

7

Ich habe das folgende Code-Snippet:

%Vor%

Was ich versuche, in C # zu konvertieren. Was bedeutet "EPS"?

Dieser Code stammt von Ссылка

    
John 09.03.2009, 16:11
quelle

7 Antworten

20

Es wird eine Form von epsilon sein, um zu bestimmen, ob die Zahl "klein genug ist, um unbedeutend zu sein". Der genaue Wert sieht in diesem Fall so aus, als wäre es #define d.

    
Jon Skeet 09.03.2009, 16:14
quelle
8

EPS ist Epsilon. Der Faktor "nahe genug".

Die Frage ist "Ist der absolute Wert nah genug?" Wo "nahe genug" ist eine kleine Zahl, oft so etwas wie 1.0E-3 .

Je nachdem, wie der Algorithmus in der Antwort konvergiert, hängt die Leistung möglicherweise von der Größe von EPS ab. Seien Sie vorsichtig, wenn Sie EPS zu klein machen, weil Ihr Prozess Stunden (oder Jahrhunderte) dauern kann und keine wirklich brauchbare Antwort liefert.

In diesem Fall - wo es keine Schleife gibt - wird EPS verwendet, weil Gleitkommazahlen kleine Fehler während der Multiplikation akkumulieren. Du kannst nicht einfach

sagen %Vor%

Und es muss im Allgemeinen wahr sein. Also sagen wir immer

%Vor%     
S.Lott 09.03.2009 16:17
quelle
2

Ich würde sagen, Jon Skeet hat Recht. Wenn Sie sich den Lisp-Code auf dieser Seite ansehen, finden Sie eine ähnliche Referenz in den Berechnungen, die 'nearzero' genannt wird und wie folgt definiert ist:

%Vor%

Also würde ich sagen, EPS ist eine Konstante auf 0,00001.

    
Arnold Spence 09.03.2009 16:21
quelle
1

Am wahrscheinlichsten ist p43 eine Struktur, die Gleitkommawerte enthält. Da Gleitkommawerte eine endliche Genauigkeit haben, können sie nur eine Teilmenge der reellen Zahlen darstellen, was bedeutet, dass es oft notwendig ist, die Gleichheit mit einem Spielraum für Rundungsfehler zu überprüfen.

Anstatt x = 0 zu überprüfen, überprüft der Code |x| < EPS , dh alle Werte in ]-EPS, +EPS[ werden als klein genug angesehen, um 0 zu sein.

Sie könnten auch darüber nachdenken, auf dem Rechner epsilon nachzulesen.

    
Christoph 09.03.2009 16:19
quelle
1

In C und C ++ haben Sie die Präprozessorkonstanten FLT_EPSILON und DBL_EPSILON, die die kleinsten Zahlen sind, so dass 1 + {FLT, DBL} _EPSILON & gt; 1 für Float bzw. doppelte Präzision. Dieses EPS scheint ein ähnlicher anwendungsspezifischer "nahe Null" -Wert zu sein.

    
janneb 09.03.2009 17:00
quelle
1

Epsilon ... Es wird wahrscheinlich ein #define sein ...

Epsilon wird typischerweise verwendet, um eine Zahl zu bezeichnen, die innerhalb der Grenzen von float oder doppelter Genauigkeit sehr nahe bei Null liegt.

Er wird verwendet, um festzustellen, ob der Wert von p43.x nahe genug an Null ist, um als Null gezählt zu werden.

    
Andrew Rollings 09.03.2009 16:16
quelle
1

Ich werde sagen, dass EPS für Epsilon ist:

  

In der Mathematik (insbesondere im Kalkül) eine willkürlich (oder fast so) kleine positive Größe.

In Ihrem Beispiel wird es verwendet, um zu bestimmen, ob das Ergebnis von (ABS (p43.x) klein genug (nahe bei Null) ist.

    
Julien Hoarau 09.03.2009 16:16
quelle

Tags und Links