Турчак Л.И. Основы численных методов. Под ред. В.В.Щенникова (1987) (1095857), страница 4
Текст из файла (страница 4)
Найти относительную погрешность функции а+Ь з а (1 — х) Используя формулы (1.1)', получаем 6у = — 16 (а + Ь) + 36х + 6 (1 — х)1 = 2 — 3 — ' 2 ~)а+Ь~ ~х~ 1$ — а~ Полученная оцепка относительной погрешности содержит в знаменателе выражение !1 — х!. Ясно, что при х — 1 можем получить очень большую погрешность. В связи с этим рассмотрим подроопее случай вычитания близких чисел. Запишем выражение для относительной погрешности разности двух чисел в виде — Ь~ — д Л ~а — Ь) Ла+ ЛЬ При а = Ь зта погрешность может быть сколь угодно большой.
Пример 2. Пусть а = 2520, Ь = 2518. В этом случае имеем абсолютные погрешности исходных данных Ла = ЛЬ = 0.5 и относительные погрешности 6а = 6Ь * = 0.5/2518 = 0.0002 (0.02о/о) . Относительная погрешность разности равна 6(а — Ь) = ', ' = 0.5 (50о~о). 05+05 г о Следовательно, при малых погрешностях в исходных данных мы получили весьма неточный результат, Не- 2 Л и, 7урми 1я Гл. с точность ВычислительнОГО э1'спеРпъ1ентА трудно подсчитать, что даже при случайных изменениях а и Ь на единицу в последних разрядах их разность может принимать значения О, 1, 2, 3, 4.
Поэтому при организации вычислительных алгоритмов следует избегать вычитания близких чисел, при возможности алгоритм нужно видоизменить во избежание потери точности на некотором этапе вычислений. Из рассмотренных правил следует, что при сложении или вычитании приближенных чисел желательно, чтобы эти числа обладали одинаковыми абсолютными погрешностями, т. е. одинаковым числом разрядов после десятичной точки. Например, 38.723 + 4.9 = 43.6; 425.4— — 0.047 = 425.4. Учет отброшенных разрядов не повысит точность результатов.
При умножении и делении приближенных чисел количество значащих цифр выравнивается по наименьшему из них. Наряду с приведенными выше оценками погрешностей при выполнении некоторых операций над приближенными числами можно записать аналогичные оценки и для вычисления функций, аргументами которых являются приближенные числа. Однако более полным оказывается общее правило, основанное на вычислении приращения (погрешности) функции при заданных приращениях (погреп1ностях) аргументов. Рассмотрим функцию одной переменной у = /(х) . Пусть а — приближенное значение аргумента х, Ла — его абсолютная погрешность.
Абсолютную погрешность функции можно считать ее приращением, которое можно заменить дифференциалом: Лу = ду. Тогда для оценки абсолютной погрешности получйм выражение Лр = = ~1'(а) ~ Ла. Аналогичное выражение можно записать для функции нескольких аргументов. Например, оценка абсолютной погрешности функции и =/(х, у, з), приближенные значения аргументов которой соответственно а, Ь, с, имеет вид Ли = ~/„(а, Ь, с) ~ Ла+ ~~„(а, Ь, с)! ЛЬ + ~/,(а, Ь, с)~ Лс, (1.2) (1.3) Здесь Ла, ЛЬ, Лс — абсолютные погрешности аргументов; Относительная погрешность находится по формуле Ли би = 1~(а, Ь, с)[' 5 2. ПОГРЕШНОСТИ ВЫЧИСЛЕНИИ Полученные соотношения можно использовать для вывода оценки погрешности произвольной функции (таким способом легко получить выражения (1.1)).
Например, при с = а — Ь по формуле (1.2) получаем Лс = = ~ с, ~ Ла + ~ с~ ~ ЛЬ = Ьа + ЛЬ, $2. Погрешности вычислений 1. Источники погрешностей. На некоторых этапах решения задачи на ЗВМ могут возникать погрешности, искажающие результаты вычислений. Оценка степени достоверности получаемых результатов является важнейшим вопросом при организации вычислительных работ. Зто особенно важно при Отсутствии опытных или других данных для сравнения, которое могло бы в некоторой степени показать надежность используемого численного метода и достоверность получаемых результатов. Рассмотрим источники погрешностей на отдельных этапах решения задачи. Математическая модель, принятая для описания данного процесса или явления, может внести существенные погрешности, если в ней не учтены какие-лиоо важные черты рассматриваемой задачи.
В частности, математическая модель может прекрасно работать в одних условиях и быть совершенно неприемлемой в другпх; поэтому важно правильно учитывать область ее применимости. Исходные данные задачи часто являются основным источником погрешностей. Зто так называемые неустрангьмьте погрешности, поскольку они не могут быть уменьшены вычислителем пи до начала решения задачи, ни в процессе ее решения. Проведенный ранее анализ оценки погрешностей при выполнении арифметических операций 'показывает, что следует стремиться к тому, чтобы все исходные данные были примерно.
одинаковой точности. Сильное уточнение одних исходных данных при наличии больших погрешностей в других, как правило, не приводит к повышению точности результатов. т1исленный метод также является источником по|решностей. Это связано, например, с заменой интеграла суммой, усечением рядов при вычислениях значений функций, интерполированием табличных данных и т. п. Как правило, ногретность тсленного лаетода регулируема, т, е. она может быть уменьшена до любого разумного значения путем изменения некоторого параметра (нанри- 2О ГЛ.
1, ТОЧНОСТЬ ВЫЧ11СЛПТЬЛЬНОГО ЭКСПИРИМЕНТА мер, шага интегрирования, числа членов усеченного ряда и т. п.). Погрешность метода обычно стараются довести до величины, в несколько раз меньшей погрешности исходных данных. Дальнейшее снижение погрешности не д риведет к повышению точности результатов, а лишь увеличит стоимость расчетов нз-за необоснованного увеличения объема вычислений.
Подробнее погрешности методов будем рассматривать при анализе конкретных численных методов. При вычислениях с помощью ЗВМ неизбежны иоерешности округлений, связанные с ограниченностшо разрядной сетки машины. Ооычно после выполнения операции производится не округление результата, а простоо отбрасывание лишних разрядов с целью зкономии машинного времени. Правда, в современных машинах предусмотрена свобода выбора программистом способа округления; соответствующими средствами располагают и некоторые алгоритмические языки (например, кобо1, ПЛ-1). Максимальная относительная погрешность при округлении есть б„., = 0.5а' ", где а — основание системы счисления, к — количество разрядов мантиссы числа. Прп простом отбрасывании лишних разрядов эта погрешность увеличивается вдвое.
В современных машинах с памятью, измеряемой в байтах, принята шестнадцатеричная система счисления,п любое число с плавающей точкой содержит шесть знача. щих цифр. Следовательно, а = 16, й = 6, максимальная погрешность округления б „, = 0.5 16 ' = 0.5 ° 10-'. Несмотря на то что при решении больших задач выполняются миллиарды операций, зто вовсе не означает механического умножения погрешности при одном округлении на число операций, так как при отдельных действиях погрешности могут компенсировать друг друга (надример, при сложении чисел разных знаков). Вместе с тем иногда погрешности округлений в сочетании с плохо организованным алгоритмом могут сильно исказить результаты. В дальнейшем мы такие случаи рассмотрим.
Перевод чисел из одной системы счисления в другую также может быть источником погрешности из-за того, что основание одной системы счисления не является степенью основания другой (например, 10 и 2). Это может прнвести к тому, что в новой системе счисления чис ло становится иррациональным.
« . попишности вычнслвнни Например, число 0.1 при переводе в двоичную систему счисления примет вид ОЛ =0.00011001100... Может оказаться, что с шагом ОЛ нужно при вычислепиях пройти отрезок ~0, Ц от х = 1 до х = О; десять шагов не дадут точного значения т = О. 2. Уменьшение погрешностей. Прп рассмотрении погрешностей результатов арифметических операций отмечалось, что вычитание близких чисел приводит к увеличению относительной погрешности; позтому в алгоритмах следует избегать подобных ситуаций. Рассмотрим также некоторые другие случаи, когда можно избежать потери точности правильной организацией вычисленшк Пусть требуется найти сумму пяти четырехразрядных чисел: Я = 0.2764+ 0,3944+ 1.475+ 26.46+ 1364.
Складывая все эти чпсла, а затем округляя полученный результат до четырех значащих цифр, получаем Я = 1393. Однако при вычислении на машине округление происходит после каждого сложения. Предполагая условно сетку четырехразрядной, проследим вычисление на машине. суммы чисел от наименьшего к наибольшему, т. е. в порядке их записи: 0.2764 + 0.3944 = 0.6708, 0.6708 + + 1.475 = 2Л56, 2Л56 + 26.46 = 28,62, 28.62 + 1364 = ° 1393; получили Я~ = 1393, т. е. верньш результат. Изменим теперь порядок вычислений и начнем складывать числа последовательно от последнего к первому: 1364+ + 26.46 = 1390, 1390 + 1.475 — 1391, 1391+ 0.3944 = — 1391, 1391+ 0.2764 = 1391; здесь окончательный результат Я, = 1391, он менее точный.
Анализ процесса вычислений показывает, что потеря точности здесь происходит из-за того, что прибавления к большому числу малых чисел не происходит, поскольку они выходят за рамки разрядной сетки (а+ Ь = а при а ~) Ь). Этих малых чисел может быть очень много, но на результат они все равно не повлияют, поскольку прибавляются по одному. Здесь необходимо придерживаться правила, в соответствии с которым сложение чисел нужно проводить по мере нх возрастания, В машинной арифметике из-за погрешности округления существен порядок выполнения операций, и известные из алгебры законы р,"оммутативности (и дистриоутивности) здесь не всегда выполняются.
При решении задачи на ЭВМ нужно использовать подобного рода «маленькие хитрости» для улучшения алгоритма ц сппжеппя погрешностей результатов, 2'~ гл. 1. точность Вычислх1тельнОГО экспеРиментл Например, при вычислении на ЭВМ значения (а + х) ' величина х может оказаться такой, что результатом сложения а+х получится а (прп х~а); в этом случае может помочь замена (а+ х) ' = а'+ 2ах + х'.
Рассмотрим еще один важньш пример — использование рядов для вычисления значений функций. Запишем, например, разложение функции з?п х по степеням аргумента: ха хб х7 з1 п х = х — —. + —. — =, + 3! 5! 7! По признаку Лейоница остаток сходящегося знакочередующегося ряда, т. е. погрешность суммы конечного числа членов, не превышает значения первого из отброшенных членов (по абсолютной величине). Вычислим значение функции а?п х при х = 0.5236 (30 ). Члены ряда, меньшие 10 ', не будем учитывать, Вычисления проведем с четырьмя верными знаками.