
- •1 Линейное программирование и симплекс-метод
- •О математических методах в программировании
- •1.2 Моделирование
- •1.2.1 Этапы создания математической модели
- •1.2.2 Разновидности задач математического моделирования и
- •Линейное программирование (лп) как метод решения
- •1.4 Динамическое программирование
- •2 Погрешности обработки информации на эвм
- •2.1 Системы счисления
- •2.2 Перевод чисел из одной системы счисления в другую
- •2.3 Элементы теории погрешностей
- •2.4 Формы представления чисел в машине
- •2.5 Системная классификация счета
- •2.5.1 Вычисление квадратного корня из числа
- •2.5.2 Вычисление тригонометрических функций
- •2.5.3 Оценка погрешности при вычислениях с применением ряда
- •2.5.4 Влияние формата числа и его вида на погрешность
- •2.6 Повышение точности вычислений путем оптимизации алгоритма
- •2.7 Анализ алгоритмов
- •107996, Москва, ул. Стромынка, 20
2.5.3 Оценка погрешности при вычислениях с применением ряда
Выше было показано на примере вычисления синуса, что погрешность вычислений является функцией прежде всего значения аргумента. Но относительно синуса (косинуса) можно утверждать, что практически можно принять 0 < х < 2, т.е.синус любого угла всегда можно привести (по абсолютному значению) к синусу угла 00<α<900, что и дает приведенное ограничение по sin(x) . Рассмотрим другие аспекты погрешностей.
Очевидно, что
вычисления по данной арифметической
операции будут продолжаться, пока не
будет заполнен последний справа разряд
мантиссы в ячейке памяти. Если это два
слова (одинарная точность), то в этом
случае неизбежная погрешность в
десятеричном счислении будет оцениваться
числом
.
Сделаем приближенную оценку, сколько
надо взять слагаемых в ряду sin(x),
чтобы структура ряда имела погрешность
не более машинной. Если записать общий
вид члена ряда sin(x)
,
То при каком-то п значения дальнейших слагаемых становятся существенно меньше Δ. Сформулируем это условие: количество членов ряда при вычислении sin(x) может быть таким, при котором, начиная с некоторого (п+1) машина уже эти вычисления не принимает в расчет и игнорирует, так как нет свободных разрядов в структуре числа. Тогда, приняв xmax=2, можем записать:
.
Подставим значение переменной и, заменяя неравенство равенством, запишем:
Или
.
Это равенство имеет место при 2п=13÷14 или п≈7. Тогда, в пределах одинарной точности арифметическая операция вычисления sin(x) достаточно точно (в пределах ресурса машины) может быть выполнена по выражению:
.
Действительно, если взять последнее слагаемое в этом ряду
и вычислить
,
видим, что слагаемое при п=7 меньше, чем десятичная цена конечного разряда мантиссы в двоичном счислении.
Таким образом можно дать оценку каждой арифметической операции, вычисляемой с помощью ряда.
Однако этими соображениями погрешность не ограничивается. Если аргумент «х» вводится с первичной погрешностью Δх и δх, то уже по структуре ряда видно, что абсолютная погрешность Δsinx существенно увеличивается. Действительно:
или
.
Окончательно получаем
.
Это безусловно существенно повышает требования к вычислению аргумента. Если даже положить
,
видим, что в результате расчета по ряду абсолютная погрешность результата увеличится примерно на два порядка, т.е. в сто раз. Заметим, что один порядок в десятеричном счислении эквивалентен примерно 3-4 разрядам в двоичной системе. Тогда уже в 6-7 разрядах справа (в двоичной системе) практически гарантировано наличие погрешности при вычислении синуса угла, т.е. эта погрешность неизбежна.