Введение
Верхняя граница ошибки округления в арифметике с плавающей точкой
Машинный эпсилон, или точность машины, — это верхняя граница относительной погрешности приближения, возникающей из-за округления в системах счисления с плавающей точкой. Эта величина характеризует компьютерную арифметику в области численного анализа и, как следствие, в области вычислительной науки. Эта величина также называется macheps и обозначается греческой буквой эпсилон (ε). Существует два основных определения, которые здесь обозначаются как машинный эпсилон для округления и машинный эпсилон для интервала. Машинный эпсилон зависит от используемого типа округления и также называется единицей округления, обозначаемой полужирным римским символом u. Однако в наиболее распространенном определении машинный эпсилон не зависит от метода округления и может быть равен u или 2u.
Machine epsilon or machine precision is an upper bound on the relative approximation error due to rounding in floating point number systems. This value characterizes computer arithmetic in the field of numerical analysis, and by extension in the subject of computational science. The quantity is also called macheps and it has the symbols Greek epsilon
There are two prevailing definitions, denoted here as rounding machine epsilon and interval machine epsilon. The machine epsilon is dependent on the type of rounding used and is also called unit roundoff, which has the symbol bold Roman u. However, in the commonly used definition, machine epsilon is independent of rounding method, and may be equivalent to u or 2u.
Основное определение (интервальный машинный эпсилон)
Стандарт IEEE не определяет термины "машинный эпсилон" и "единица округления", поэтому используются различные определения этих терминов, что может приводить к путанице. Формальное определение машинного эпсилон используется профессором Джеймсом Деммелом в конспектах лекций, пакете линейной алгебры LAPACK, научных работах по вычислительной математике и в некоторых программах для научных вычислений. Большинство специалистов по вычислительной математике используют термины "машинный эпсилон" и "единица округления" как взаимозаменяемые, подразумевая это значение. Однако существует и другое, значительно более распространенное определение: машинный эпсилон – это разность между 1 и следующим большим числом с плавающей точкой. Согласно этому определению, ε равно значению единицы в младшем разряде относительно 1, то есть (где b – основание системы с плавающей точкой, а p – точность), а единица округления u = ε / 2 при округлении до ближайшего и u = ε при отбрасывании дробной части. Широкое распространение этого определения связано с его использованием в стандарте ISO C для констант, связанных с типами данных с плавающей точкой, и соответствующих констант в других языках программирования. Оно также широко применяется в программном обеспечении для научных вычислений и в литературе по вычислительной математике и информатике.
Приближение
Следующий простой алгоритм можно использовать для приближенного вычисления машинного эпсилон, с точностью до коэффициента двух (один порядок величины) от его истинного значения, с помощью линейного поиска. epsilon = 1.0;
пока (1.0 + 0.5 * epsilon) ≠ 1.0:
epsilon = 0.5 * epsilon
epsilon = 0.5 * epsilon
Машинный эпсилон также можно просто вычислить как двойку, возведенную в степень, равную минус числу бит, используемых для представления мантиссы.
Примечания и ссылки
Андерсон, Э.; Руководство пользователя LAPACK, Общество промышленной и прикладной математики (SIAM), Филадельфия, Пенсильвания, третье издание, 1999. Коди, Уильям Дж.; MACHAR: Подпрограмма для динамического определения параметров машины, ACM Transactions on Mathematical Software, Vol. 14(4), 1988, 303–311. Бессет, Дидье Х.; Объектно-ориентированная реализация численных методов, Morgan & Kaufmann, Сан-Франциско, Калифорния, 2000. Деммель, Джеймс У.; Прикладная численная линейная алгебра, Общество промышленной и прикладной математики (SIAM), Филадельфия, Пенсильвания, 1997. Хигам, Николас Дж.; Точность и устойчивость численных алгоритмов, Общество промышленной и прикладной математики (SIAM), Филадельфия, Пенсильвания, второе издание, 2002. Пресс, Уильям Х.; Тейколски, Сол А.; Веттерлинг, Уильям Т.; и Фланнери, Брайан П.; Numerical Recipes in Fortran 77, 2-е изд., Глава 20.2, с. 881–886. Форсайт, Джордж Э.; Малкольм, Майкл А.; Молер, Клив Б.; "Вычислительные методы математических вычислений", Prentice Hall, 1977.
Forsythe, George E.; Malcolm, Michael A.; Moler, Cleve B.; "Computer Methods for Mathematical Computations", Prentice Hall, , 1977