Mašinski Epsilon daje gornju granicu relativne greške zbog zaokruživanja aritmetike plutajućih tačaka.Ova vrednost karakteriše računarsku aritmetiku u polju brojčane analize,a produžava se u predmetu računarske nauke.Količina se takođe naziva i "macheps" ili jedinica zaokruživanja,a označava se Grčkim simbolom Epsilon ε ili Romanskim slovom u.
__САДРЖАЈ__
Vrednosti za standardnu hardversku aritmetiku sa plutajućim tačkama Date vrednosti mašinskog epsilona važe za standarde formata plutajućih tačaka: +IEEE 754 - 2008Uobičajno imeC++ tip podatkaBaza Preciznost Mašinski epsilon Mašinski epsilon binary16polu precizanshort211 (jedan bit je implicitan)2−11 ≈ 4.88e-042−10 ≈ 9.77e-04binary32precizanfloat224 (jedan bit je implicitan)2−24 ≈ 5.96e-082−23 ≈ 1.19e-07binary64duplo precizandouble253 (jedan bit je implicitan)2−53 ≈ 1.11e-162−52 ≈ 2.22e-16produženo precizan_float80 "Floating Types - Using the GNU Compiler Collection (GCC)"2642−64 ≈ 5.42e-202−63 ≈ 1.08e-19binary128četvorostruko precizan_float128 2113 (jedan bit je implicitan)2−113 ≈ 9.63e-352−112 ≈ 1.93e-34decimal32precizna decimala_Decimal32 "Decimal Float - Using the GNU Compiler Collection (GCC)"1075 × 10−710−6decimal64duplo precizna decimala_Decimal6410165 × 10−1610−15decimal128četvorostruko precizna decimala_Decimal12810345 × 10−3410−33
Formalna definicija Zaokruživanje je postupak odabira predstavljajućeg realnog broja u sistemu sa plutajućim tačkama.Za brojni sistem i proceduru zaokruživanja , mašina epsilon predstavlja maksimalnu relativnu grešku od izabrane procedure zaokruživanja.
Određeno prethodno izračunavanje je potrebno da bi se odredila vrednost iz ove definicije.Sistem plutajućih brojeva je karakterizovan radiksom koji se drugačije naziva i baza , ,i preciznošću , tj. broj radiks cifara significanda (uključujući bilo koji vodeći implicitni broj).Svi brojevi sa istim stepenom, ,imaju razmak .Razmak se menja na brojevima koji su savršenog stepena od ; razmak sa strane veće veličine je za puta veći od razmaka sa strane manje veličine.
Pošto je mašinski epsilon vezan za relativnu grešku , dovoljno je uzeti u obzir brojeve sa eksponentom .Takođe je dovoljno razmotriti i pozitivne brojeve.Za uobičajenu vrstu zaokruživanja na najbliži broj , apsolutna greška zaokruživanja je veća polovina razmaka ili .Ova vrednost je najveći mogući brojilac relativne greške.Imenilac u relativnoj grešci je broj koji se zaokružuje , koji bi trebao da je što moguće manji da bi relativna greška bila veća.Stoga , najgora relativna greška se dešava kada se zaokruživanje primenjuje na brojeve obrasca gde je između i .Svi ovi brojevi se zaokrugljuju na sa relativnom greškom .Maksimum se javlja kada je na gornjem kraju svog opsega. je u imeniocu zanemarljiv sa brojiocem , tako da se ne koristi za probitačnost i samo se uzima kao mašinski epsilon.Kao što je prikazano ovde , relativna greška je najgora za brojeve koji se zaokružuju na , tako da se mašinski epsilon takođe naziva zaokrugljivač jedinica , što znači "maksimalna greška koja se može pojaviti pri zaokruživanju do vrednosti jedinice".Dakle , maksimalan razmak između normalizovanog broja plutajuće tačke , , i susednog normalizovanog broja je x . Higham, Nicholas (2002). Accuracy and Stability of Numerical Algorithms (2 ed). SIAM. .
Aritmetički model Brojčana analiza koristi mašinski epsilon za istraživanje efekata grešaka tokom zaokruživanja.Stvarne greške mašinske aritmetike su suviše komplikovane da bi se direktno proučavale , pa se zbog toga koristi sledeći jednostavni model.IEEE Aritmetički standard nalaže da su sve operacije sa plutajućim tačkama izvršene kao da je moguće odraditi beskonačno-preciznu operaciju , a zatim je broj zaokružen na broj sa plutajućim tačkama.Pretpostavimo da su (1) i brojevi sa plutajućim tačkama , da je (2) aritmetička operacija brojeva sa plutajućim tačkama , kao što je deljenje ili množenje i (3) beskonačno-precizna operacija.Prema standardu , računar izračunava:
Prema značenju mašinskog epsilona , relativan greška zaokruživanja je većina mašinskog epsilona po veličini , tako da:
gde je u apsolutnoj magnitudi najviše ili u.Knjige Demmela i Highama u referencama se mogu konsultovati kako bi se videlo kako se ovaj model koristi za analizu grešaka , recimo , Gaussove eliminacije.
Varijante definicije IEEE standard ne definiše pojmove mašinskog epsilona i jedinice zaokruživanja, tako da se koriste različite definicije ovih termina, što može dovesti do zabune.
Definicija koja je ovde data za mašinski epsilon je ona koju koristi profesor Džejms Dimel u scenariju predavanja "Basic Issues in Floating Point Arithmetic and Error Analysis" 21.10.1999. Vraćeno 11.4.2013. , njegov LAPACK linearni algebra pokret "LAPACK Users' Guide Third Edition." 22 August 1999. Retrieved 9 March 2012. , numerički istraživački radovi (PDF). Retrieved 11 Apr 2013. i neki naučni računarski softveri "Scilab documentation - number_properties - determine floating-point parameters"Retrieved 11 Apr 2013.. Većina numeričkih analitičara upotrebljava reči mašinski epsilon i jedinica zaokruživanja sa tim značenjem.
Sledeća različita definicija je mnogo šire rasprostranjena izvan akademije: Mašinski epsilon je definisan kao najmanji broj, kada se doda jednom, daje rezultad drugačiji od jednog. Po ovoj definiciji , jednak je vrednosti jedinice na poslednjem mestu u odnosu na 1, tj. Primetimo da je ovde P definisano kao preciznost , tj. kao ukupan broj bitova u Significand-u uključujući implicitni glavni bit, koji se koristi u gornjoj tabeli i za proceduru zaokruživanja od kruga do najbliže, u .Prevalenca ove definicije korišćena je u njegovoj upotrebi u ISOC standardu za konstantne vezane za tipove sa plutajućim tačkama Jones, Derek M. (2009). " The New C Standard - An Economic and Cultural Commentary" (PDF). . "float.h referenca na cplusplus.com" Retrieved 11 Apr 2013. i odgovarajuće konstantne u drugim programskim jezicima ."std::numeric_limits referenca na cplusplus.com" Retrieved 11 Apr 2013. "Python documentation - System-specific parameters and functions" Retrieved 11 Apr 2013. Takođe se široko koristi u naučnom računarskom softveru "Mathematica documentation: $MachineEpsilon"Retrieved 11 Apr 2013. "Matlab documentation - eps - Floating-point relative accuracy"Arhiviran iz "originala" 2013-08-07. Retrieved 11 Apr 2013. "Octave documentation - eps function" Retrieved 11 Apr 2013. u numeričkoj i računarskoj literaturi Higham, Nicholas (2002). Preciznost i stabilnost Numeričkih Algoritama (2 ed). SIAM. . Quarteroni, Alfio; Sacco, Riccardo; Saleri, Fausto (2000) (PDF). Springer. . "ISBN""0-387-98959-5" Press, William H.; Teukolsky, Saul A.; Vetterling, William T.; Flannery, Brian P. Numerički recepti. . Engeln-Müllges, Gisela; Reutter, Fritz (1996). Numerik-Algorithmen. p."ISBN""3-18-401539-4." i drugim akademskim resursima."Robert M. Corless: The Machine Epsilon"28 Jun 2005. Retrieved 11 Apr 2013. "MCS 471 Computer Problem 1"2004. Retrieved 11 Apr 2013.
Kako odrediti mašinski epsilon Gde standardi biblioteke ne pružaju predračunate vrednosti (kao što je <plutajuće.h> radi sa FLT_EPSILON,DBL_EPSILON i LDBL_EPSILON za C i<ograničenja>radi sa standardom : numeričko_ograničenje<T>:epsilon ()u C++), najbolji način za određivanje mašinskog epsilona je da se odnosi na tabelu,gore, i koristi odgovarajuća formula. Računarski mašinski epsilon se često daje kao vežba udžbenicima. Sledeći primeri izračunavanja mašinskog epsilona u smislu razmaka brojeva sa plutajućim tačkama na 1, a ne u smislu jedinice zaokruživanja.
Imajte na umu da rezultati zamise od određenog formata sa plutajućim tačkama, kao što su plutajuće,duple,duple duplei ili slično kao što su podržane od strane programskog jezika, prevodioca i biblioteke istraživanja za stvarnu platformu.
Neki formati koje podržava procesor možda ne podržava izabrani prevodilac i operativni sistem. Drugi formati mogu imitirati izvrsavanje biblioteke, uključujući i proizvoljne aritmetički dostupne na nekim jezicima i bibliotekama.
U striktnom smislu pojam mašinski epsilon znači tačnost 1+eps direktno podržana od strane procesora (ili koprocesora), ne nekih 1+eps preciznosti koje podržava odeđeni prevodilac za određeni operativni sistem, ocim ako nije poznato da koristi najbolji format.
Oblici IEEE 754 sa plutajućim tačkama imaju svojstvo koje, kada se reinterpretiraju dva komplementarna cela broja iste širine , monotonično se povećava preko pozitivnih vrednosti i monotonično smanjuje negativne vrednosti (pogledajte binarno prdstavljanje 32-bitnih plovaka). Takođe imaju svojstvo da 0 < |f(x)| < ∞, and |f(x+1) − f(x)| ≥ |f(x) − f(x−1)|(gde je f(x) ranije pomenuti ceo broj reinterpretacije x). Na jezicima koji omogućavaju tip punjenja i uvek koriste IEEE 754-1985, možemo to iskoristiti za izračunavanje mašinskog epsilona u konstantnom bremenu. Na primer, u C:typedef union { long long i64; double d64; } dbl_64; double machine_eps (double value) { dbl_64 s; s.d64 = value; s.i64++; return s.d64 - value; }Ovo će dati rezultat istog znaka kao i vrednost. Ako je pozitivan rezultat uvek poželjan, povratan izkaz mašinskog epsilona se može zameniti sa: return (s.i64 < 0 ? value - s.d64 : s.d64 - value);
64-bitni dupli daju 2,220446e-16, što je 2-52 kao što se očekivalo.
Približnost Sledeći jednostavni algoritam mpže se koristiti za približnost mašinskog epsilona u okviru faktora od dva(jedan red veličine)njegove istaknute vrednosti, koristeći linearnu pretragu:epsilon = 1.0;
while (1.0 + 0.5 * epsilon) <> 1.0: epsilon = 0.5 * epsilon
Takođe pogledaj i Floating point (plutajuća tačka), opšta diskusija o tačnosti problema u aritmetici sa plutajućim tačkama.
Unit in the last place (Jedinica na poslednjem mestu) (ULP).
Reference
Literatura
Society for Industrial and Applied Mathematics (SIAM), Philadelphia, PA, third edition,
Morgan & Kaufmann, San Francisco, CA, Society for Industrial and Applied Mathematics (SIAM), Philadelphia, PA, Society for Industrial and Applied Mathematics (SIAM), Philadelphia, PA, second edition, , 2nd ed., Chap. 20.2, , Prentice-Hall,
Spoljašnje veze MACHAR , rutina (u C i Fortranu) da bi se "dinamično izračunale mašinske konstante" (ACM algoritam 722)
Dijagnostikovanje preciznosti kalkulacija plutajućih tokova , Implementacija MACHAR-a u Komponenti Paskal i Oberon bazirana na Fortran 77 verziji MACHAR-a objavljenom u Numerical Recipes (Press et al., 1992).
Категорија:Математика