הלמה של סטרבנץ

בחישובי נקודה צפה, הלֶמה של סטרבנץ (באנגלית: Sterbenz' lemma)‏ היא משפט שנותן את התנאים בהם חישוב הפרש של נקודה צפה מחושב באופן מדויק. היא נקראת על שם פט ה. סטרבנץ, שפרסם אותה כמשפט 4.3.1 בספרו Floating Point Computation בשנת 1974. הלמה של סטרבנץ טוענת שעבור מערכת מספרים של נקודה צפה עם מספרים תת-נורמליים, כגון IEEE 754 binary64, אם y {\displaystyle y} , x {\displaystyle x} הם מספרי נקודה צפה כך שמתקיים: y 2 ≤ x ≤ 2 y {\displaystyle {\frac {y}{2}}\leq x\leq 2y} אז המספר x − y {\displaystyle x-y} גם הוא מספר נקודה צפה. ולכן, חישוב ההפרש x ⊖ y = fl ⁡ ( x − y ) = x − y {\displaystyle x\ominus y=\operatorname {fl} (x-y)=x-y} מתבצע באופן מדויק. ניתן להשוות בין הלמה של סטרבנץ לבין ביטול הרסני: הלמה של סטרבנץ טוענת כי אם y {\displaystyle y} , x {\displaystyle x} הן מספרי נקודה צפה מספיק קרובים, אז ההפרש ביניהם מחושב באופן מדויק, ללא צורך בעיגול: x ⊖ y = fl ⁡ ( x − y ) {\displaystyle x\ominus y=\operatorname {fl} (x-y)} . התופעה של ביטול הרסני היא שאם x ~ {\displaystyle {\tilde {x}}} , y ~ {\displaystyle {\tilde {y}}} הם ערכים משוערכים למספרים האמיתיים x {\displaystyle x} , y {\displaystyle y} בהתאמה. בין אם השגיאה בחישובם מופיע מעיגול קודם או מקיטום, השגיאה המתקבלת בחישוב ההפרש בין המספרים המשוערכים x ~ − y ~ {\displaystyle {\tilde {x}}-{\tilde {y}}} היא הפוכה בפרופורציה להפרש המדויק x − y {\displaystyle x-y} . ולכן, אם הערכים קרובים מאוד, השגיאה של החישוב המשוערך גדולה מאוד. במילים אחרות, הלמה של סטרבנץ מראה שחישוב חיסור של נקודות צפה קרובות היא מדויקת, אך התוצאה המתקבלת היא בעלת שגיאה גדולה. הלמה של סטרבנץ היא חשובה להוכחת תיאוריות על גבול עליון באלגוריתמים של נקודה צפה. בתור דוגמה, נוסחת הרון לחישוב שטח של משולש עם צלעות a {\displaystyle a} , b {\displaystyle b} , c {\displaystyle c} היא: A = s ( s − a ) ( s − b ) ( s − c ) {\displaystyle A={\sqrt {s(s-a)(s-b)(s-c)}}} כאשר s = ( a + b + c ) / 2 {\displaystyle s=(a+b+c)/2} היא מחצית ההיקף. אם נשתמש בנוסחה הזאת בחישובי נקודה צפה, היא עשויה לתת תוצאות בעלות שגיאה גדולה עבור משולשים צרים. לעומת זאת, עבור הנוסחה החלופית: A = 1 4 ( a + ( b + c ) ) ( c − ( a − b ) ) ( c + ( a − b ) ) ( a + ( b − c ) ) {\displaystyle A={\frac {1}{4}}{\sqrt {{\bigl (}a+(b+c){\bigr )}{\bigl (}c-(a-b){\bigr )}{\bigl (}c+(a-b){\bigr )}{\bigl (}a+(b-c){\bigr )}}}} נוכל להוכיח, בעזרת הלמה של סטרבנץ, שהיא בעלת שגיאה קדמית נמוכה לכל קלט אפשרי. Muller, Jean-Michel; Brunie, Nicolas; de Dinechin, Florent; Jeannerod, Claude-Pierre; Joldes, Mioara; Lefèvre, Vincent; Melquiond, Guillaume; Revol, Nathalie; Torres, Serge (2018). Handbook of Floating-Point Arithmetic (2nd ed.). Gewerbestrasse 11, 6330 Cham, Switzerland: Birkhäuser. p. 101. doi:10.1007/978-3-319-76526-6. ISBN 978-3-319-76525-9.{{cite book}}: תחזוקה - ציטוט: location (link) Sterbenz, Pat H. (1974). Floating-Point Computation. Englewood Cliffs, NJ, United States: Prentice-Hall. p. 138. ISBN 0-13-322495-3. Kahan, W. (2014-09-04). "Miscalculating Area and Angles of a Needle-like Triangle" (PDF). Lecture Notes for Introductory Numerical Analysis Classes. נבדק ב-2020-09-17. Goldberg, David (במרץ 1991). "What every computer scientist should know about floating-point arithmetic". ACM Computing Surveys. New York, NY, United States: Association for Computing Machinery. 23 (1): 5–48. doi:10.1145/103162.103163. ISSN 0360-0300. נבדק ב-2020-09-17. {{cite journal}}: (עזרה) Boldo, Sylvie (באפריל 2013). Nannarelli, Alberto; Seidel, Peter-Michael; Tang, Ping Tak Peter (eds.). How to Compute the Area of a Triangle: a Formal Revisit. 21st IEEE Symposium on Computer Arithmetic. Computer Arithmetic, 2009. Arith 2009. 19Th IEEE Symposium on. IEEE Computer Society. pp. 91–98. doi:10.1109/ARITH.2013.29. ISBN 978-0-7695-4957-6. ISSN 1063-6889. {{cite conference}}: (עזרה)