Действительные числа в компьютере не представимы точно! Это связанно с тем что такие цифры имеют бесконечное число знаков после запятой. А в компьютере числа ограничены размером переменной. Отсюда имеем множество неожиданных проблем и борьбы за их решения. Также существует целый класс безошибочных численных методов. ===Пример 1=== Самое первое с чем происходит встречаться это, то перевод из десятичной системы счисления в двоичную. a:=0.1; if a=0.1 then WriteLn('Равны!') else WriteLn('Не равны!') см. [1] Отсюда кстати проблема с переводом числа Pi. В библиотеках для этого его специально корректируют. Поэтому в качестве числа Pi надо использовать внутреннюю константу. Поэтому для сравнения рекомендуется использовать сравнение с допуском. [2] Также в финансовых расчётах применяются десятичные типы. В качестве примера можно рассмотреть любую БД или СУБД. ===Пример 2=== От перестановки слагаемых сумма меняется! См. Задача про длину крокодила [3] ===Пример 3=== Вычисление экспоненты. [4] При нахождение экспоненты используют разложения в ряд Тейллора, но из-за округления решение становиться неточным. Решение становиться неустойчивым. ===Пример 4=== Быстрое умножение длинных чисел через БПФ. В работах [5],[6] даётся оценка будет ошибка или нет в зависимости от длины чисел и формата чисел. ===Пример 4=== Обратная матрица. Число обусловленности. Проверка устойчивости решения. [4], [7], [8] ===Пример 5=== Ранг матрицы. Невозможно точно вычислить из-за ошибок в исходных данных. ===Пример 6=== Нарушение симметричности матриц. ===Пример 7=== Малая предсказуемость. Тесты могут не выявить проблемы. Потеря ракеты Ariane 5 [10] ===Пример 8=== Малые ошибки могут стать большими. Операция деление 1/x переводит малые значения в большие, а большие в маленькие. Из за этого небольшая ошибка в округление может вылиться в большую ошибку. ===Пример 9=== Проблема устойчивости фильтров. При вычисление из за близости нулей и полюсов решение может оказаться неустойчивым. ===Пример 10=== Решение навигационной задача Глонасс/GPS. Или определяют координаты объекта при пеленгации. Зная время распространения сигнала от спутника до объекта надо определить координаты объекта. Для решения задачи надо найти пересечения 3 окружностей. Проблема в том что из-за ошибок. 3 окружности никогда точно не пересекутся. Не говоря уже о том если требуется посчитать не от 3 спутников, а от 6-10. Тут ошибки измерения времени и ошибки вызванные округлением. Решение проблемы является использовать методов минимизации. ---- Список литературы:\\ [1] "О чём не пишут в книгах по Delphi"\\ гл. 3.2 Неочевидные особенности вещественных чисел\\ [[http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374]]\\ [2] Модуль для сравнения чисел с допуском. Из книги "Особенности национальной информатики"\\ [[http://antosha.com/onzi/modules/geometry.zip]] \\ [3] Задача про длину крокодила. Примерно на 54 минуте.\\ [[http://www.intuit.ru/studies/courses/586/442/lecture/5556]] \\ [4] Каханер,_Моулер,_Наш.-Численные_методы_и_программное_обеспечение-Мир(1998)\\ [5] C. Percival, Rapid multiplication modulo the sum and dierence of highly composite numbers, Math. Comp. 72 (2003), 387{395.\\ [6] C. Percival, roots.c, in TRICL,(2005) [[http://www.daemonology.net/tricl/roots_c.pdf]].\\ [7] \\ [10] http://www.intel.com/standards/floatingpoint.pdf\\ [11] Много случаев ошибок http://softelectro.ru/ieee754.html \\