Википедия

Машинный ноль

Машинный ноль (Машинный нуль) — числовое значение с таким отрицательным порядком, которое воспринимается машиной как ноль.

image
Представление машинного нуля в числах с плавающей запятой при двузначном порядке

Машинный эпсилон (англ. Machine epsilon) — числовое значение, меньше которого невозможно задавать относительную точность для любого алгоритма, возвращающего вещественные числа. Абсолютное значение «машинного эпсилон» зависит от разрядности сетки применяемой ЭВМ, типа (разрядности) используемых при расчетах чисел, и от принятой в конкретном трансляторе структуры представления вещественных чисел (количества бит, отводимых на мантиссу и на порядок). Формально машинный эпсилон обычно определяют как минимальное из чисел ε, для которого 1+ε>1 при машинных расчетах с числами данного типа. Альтернативное определение — максимальное ε, для которого справедливо равенство 1+ε=1.

Практическая важность машинного эпсилон связана с тем, что два (отличных от нуля) числа являются одинаковыми с точки зрения машинной арифметики, если их относительная разность по модулю меньше (при определении первого типа) или не превосходит (при определении второго типа) машинного эпсилон.

В языках программирования

Язык Си

В языке Си существуют предельные константы FLT_EPSILON, DBL_EPSILON и LDBL_EPSILON являющиеся «машинными эпсилон», соответствующими первому определению: FLT_EPSILON = 2−23 ≈ 1.19e-07 — это машинный эпсилон для чисел типа float (32 бита), DBL_EPSILON = 2−52 ≈ 2.20e-16 — для типа double (64 бита), и LDBL_EPSILON = 2−63 ≈ 1.08e-19 — для типа long double (80 бит). При альтернативном определении соответствующие машинные эпсилон будут вдвое меньше: 2−24 , 2−53 и 2−64 .В некоторых компиляторах Си (например gcc, Intel’s C/C++ compiler) допускается использование переменных четверной точности (_float128, _Quad). Соответствующие машинные эпсилон равны 2−112 ≈ 1.93e-34 и 2−113 ≈ 9.63e-35.

Пример

Пример вычисления машинного эпсилона (не путать с машинным нулём) на языке Си.

float macheps(void) { float e = 1.0f; while (1.0f + e / 2.0f > 1.0f) e /= 2.0f; return e; } 

Пример на языке C++.

# include <iostream> # include <stdint.h> # include <iomanip> template<typename float_t, typename int_t> float_t machine_eps() { union { float_t f; int_t i; } one, one_plus, little, last_little; one.f = 1.0; little.f = 1.0; last_little.f = little.f; while(true) { one_plus.f = one.f; one_plus.f += little.f; if( one.i != one_plus.i ) { last_little.f = little.f; little.f /= 2.0; } else { return last_little.f; } } } int main() { std::cout << "machine epsilon:\n"; std::cout << "float: " << std::setprecision(18)<< machine_eps<float, uint32_t>() << std::endl; std::cout << "double: " << std::setprecision(18) << machine_eps<double, uint64_t>() << std::endl; } 

Пример на Python

def machineEpsilon(func=float): machine_epsilon = func(1) while func(1)+func(machine_epsilon) != func(1): machine_epsilon_last = machine_epsilon machine_epsilon = func(machine_epsilon) / func(2) return machine_epsilon_last 

Вывод может быть таким (с использованием IPython):

In [1]: machineEpsilon(int) Out[1]: 1 
In [2]: machineEpsilon(float) Out[2]: 2.2204460492503131e-16 
In [3]: machineEpsilon(complex) Out[3]: (2.2204460492503131e-16+0j) 

См. также

  • −0 (программирование)

Примечания

  1. Численные методы. Линейная алгебра и нелинейные уравнения. Учебное пособие. — Directmedia, 2014-05-20. — 432 с. — ISBN 9785445838753. Архивировано 7 сентября 2021 года.
  2. Подбельский В. В., Фомин С. С. Программирование по на языке Си: Учеб.пособие. Москва: Изд-во Финансы и статистика, 2003.
  3. Игорь Юсупович Алибеков. Численные методы, У/П. — МГИУ, 2008-01-01. — 221 с. — ISBN 9785276014623. Архивировано 7 сентября 2021 года.

Википедия, чтение, книга, библиотека, поиск, нажмите, истории, книги, статьи, wikipedia, учить, информация, история, скачать, скачать бесплатно, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, картинка, музыка, песня, фильм, игра, игры, мобильный, телефон, Android, iOS, apple, мобильный телефон, Samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Сеть, компьютер, Информация о Машинный ноль, Что такое Машинный ноль? Что означает Машинный ноль?

Dostovernost etoj stati postavlena pod somnenie Neobhodimo proverit tochnost faktov i dostovernost svedenij izlozhennyh v etoj state Sootvetstvuyushuyu diskussiyu mozhno najti na stranice obsuzhdeniya 6 fevralya 2015 Mashinnyj nol Mashinnyj nul chislovoe znachenie s takim otricatelnym poryadkom kotoroe vosprinimaetsya mashinoj kak nol Predstavlenie mashinnogo nulya v chislah s plavayushej zapyatoj pri dvuznachnom poryadke Mashinnyj epsilon angl Machine epsilon chislovoe znachenie menshe kotorogo nevozmozhno zadavat otnositelnuyu tochnost dlya lyubogo algoritma vozvrashayushego veshestvennye chisla Absolyutnoe znachenie mashinnogo epsilon zavisit ot razryadnosti setki primenyaemoj EVM tipa razryadnosti ispolzuemyh pri raschetah chisel i ot prinyatoj v konkretnom translyatore struktury predstavleniya veshestvennyh chisel kolichestva bit otvodimyh na mantissu i na poryadok Formalno mashinnyj epsilon obychno opredelyayut kak minimalnoe iz chisel e dlya kotorogo 1 e gt 1 pri mashinnyh raschetah s chislami dannogo tipa Alternativnoe opredelenie maksimalnoe e dlya kotorogo spravedlivo ravenstvo 1 e 1 Prakticheskaya vazhnost mashinnogo epsilon svyazana s tem chto dva otlichnyh ot nulya chisla yavlyayutsya odinakovymi s tochki zreniya mashinnoj arifmetiki esli ih otnositelnaya raznost po modulyu menshe pri opredelenii pervogo tipa ili ne prevoshodit pri opredelenii vtorogo tipa mashinnogo epsilon V yazykah programmirovaniyaYazyk Si V yazyke Si sushestvuyut predelnye konstanty FLT EPSILON DBL EPSILON i LDBL EPSILON yavlyayushiesya mashinnymi epsilon sootvetstvuyushimi pervomu opredeleniyu FLT EPSILON 2 23 1 19e 07 eto mashinnyj epsilon dlya chisel tipa float 32 bita DBL EPSILON 2 52 2 20e 16 dlya tipa double 64 bita i LDBL EPSILON 2 63 1 08e 19 dlya tipa long double 80 bit Pri alternativnom opredelenii sootvetstvuyushie mashinnye epsilon budut vdvoe menshe 2 24 2 53 i 2 64 V nekotoryh kompilyatorah Si naprimer gcc Intel s C C compiler dopuskaetsya ispolzovanie peremennyh chetvernoj tochnosti float128 Quad Sootvetstvuyushie mashinnye epsilon ravny 2 112 1 93e 34 i 2 113 9 63e 35 PrimerPrimer vychisleniya mashinnogo epsilona ne putat s mashinnym nulyom na yazyke Si float macheps void float e 1 0f while 1 0f e 2 0f gt 1 0f e 2 0f return e Primer na yazyke C include lt iostream gt include lt stdint h gt include lt iomanip gt template lt typename float t typename int t gt float t machine eps union float t f int t i one one plus little last little one f 1 0 little f 1 0 last little f little f while true one plus f one f one plus f little f if one i one plus i last little f little f little f 2 0 else return last little f int main std cout lt lt machine epsilon n std cout lt lt float lt lt std setprecision 18 lt lt machine eps lt float uint32 t gt lt lt std endl std cout lt lt double lt lt std setprecision 18 lt lt machine eps lt double uint64 t gt lt lt std endl Primer na Python def machineEpsilon func float machine epsilon func 1 while func 1 func machine epsilon func 1 machine epsilon last machine epsilon machine epsilon func machine epsilon func 2 return machine epsilon last Vyvod mozhet byt takim s ispolzovaniem IPython In 1 machineEpsilon int Out 1 1 In 2 machineEpsilon float Out 2 2 2204460492503131e 16 In 3 machineEpsilon complex Out 3 2 2204460492503131e 16 0j Sm takzhe 0 programmirovanie PrimechaniyaChislennye metody Linejnaya algebra i nelinejnye uravneniya Uchebnoe posobie Directmedia 2014 05 20 432 s ISBN 9785445838753 Arhivirovano 7 sentyabrya 2021 goda Podbelskij V V Fomin S S Programmirovanie po na yazyke Si Ucheb posobie Moskva Izd vo Finansy i statistika 2003 Igor Yusupovich Alibekov Chislennye metody U P MGIU 2008 01 01 221 s ISBN 9785276014623 Arhivirovano 7 sentyabrya 2021 goda

NiNa.Az

NiNa.Az - Абсолютно бесплатная система, которая делится для вас информацией и контентом 24 часа в сутки.
Взгляните
Закрыто