Совет 238 Округление результата и точность расчета (Round & Error)

   

Очень часто при расчетах возникает ошибка (погрешность), видимая на 15-м знаке. Об этой особенности Mathcad (1 + 1 равно не 2, а 2.000000000000001 или 1.99999999999999) мы уже писали в совете 82. Там данная особенность Mathcad сказывалась на работе булевого оператора: 2 ≠ 2. На рис. 238 эта особенность Mathcad мешает решать задачу построение двух числовых зависимостей х и у рекуррентным методом. Из рис. рис. 238 видно, что ошибка (см. компоненты вектора х1) "слегка" проявляется на 12-м шаге, на 3000-м шаге становится катастрофической: – 0.26… вместо ожидаемого – 0.1… : это вам не 1.9999999999999 вместо 2. Исправить эту ошибку можно, вставив в расчет функцию округления числа, которая будет "глушить шум", связанный с тем, что в Mathcad нет целочисленной арифметики, а есть только арифметика с плавающей точкой.

Примечание: "Шум" арифметики плавающей точки может быть красивым – см. левый график на рис. 238. Правый график – это "портрет" наших двух векторов без ошибки. Можно менять значения первых элементов векторов х и у (а можно добавить и третий вектор и смотреть "красоту" уже в объеме, а не на плоскости), а также у коэффициентов рекуррентных соотношений и наблюдать "картинки" с ошибкой и без ошибки.

Теория по рис. 238 http://mathworld.wolfram.com/GingerbreadmanMap.html