/
Author: Лапчик М.П. Рагулина М.И. Хеннер Е.К.
Tags: инструменты, приборы и методы астрономических наблюдений, измерений и анализа математика численные методы вычислительная математика учебное пособие
ISBN: 5-7695-2503-7
Year: 2005
Text
ВЫСШЕЕ ПРОФЕССИОНАЛЬНОЕ ОБРАЗОВАНИЕ
М.П.ЛАПЧИК, М. И. РАГУЛИНА, Е.К.ХЕННЕР
ЧИСЛЕННЫЕ
МЕТОДЫ
Под редакцией М. П.ЛАПЧИКА
Допущено
Министерством образования Российской Федерации
в качестве учебного пособия для студентов высших
учебных заведений, обучающихся по специальности
030100 «Информатика»
2-е издание, стереотипное
Москва
"^9^1
ACADEMA
2005
Предисловие....................................................3
Глава 1. Методы оценки ошибок вычислений...................... 6
1.1. Этапы решения прикладной задачи и классификация
ошибок.....................................................6
1.2. Запись чисел в вычислительных машинах и ограничения точности
вычислений............................................11
1.3. Абсолютная и относительная погрешности..............18
1.4. Правильная запись и округление чисел................20
1.5. Программное округление десятичных чисел
по заданному значению абсолютной погрешности..............23
1.6. Определение количества верных цифр
по относительной погрешности приближенного числа..........29
1.7. Вычисление ошибок арифметических действий...........32
1.8. Оценка погрешностей значений функций................37
1.9. Способы приближенных вычислений по заданной
формуле...................................................43
1.9.1. Вычисления по правилам подсчета цифр...........44
1.9.2. Вычисления со строгим учетом предельных
абсолютных погрешностей...............................47
1.9.3. Вычисления по методу границ....................51
1.10. Приближенные вычисления по формулам с использованием
инструментальных пакетов...................................56
1.11. Вероятностные и эмпирические методы оценки ошибок
вычислений.................................................63
Лабораторная работа № 1. Методы оценки погрешностей...........65
ПРЕДИСЛОВИЕ
Информационные и коммуникационные технологии решитель-
но вторгаются в научно-практическую и образовательную деятель-
ность. Стремительно повышаются требования к уровню подготов-
ки в этой сфере специалистов различных областей. В этой связи
изменяется школьная программа, во все большей степени отра-
жающая прикладной, практический (или, как говорят информа-
тики, пользовательский) подход к применению знаний. Возрас-
тает роль учителей, и прежде всего учителей информатики и ма-
тематики. Одной из важнейших дисциплин профессиональной
подготовки будущего учителя становится вычислительная мате-
матика, которая развивает идеи численного решения задач, воз-
никающих в процессе компьютерного математического модели-
рования реальных явлений в различных предметных сферах.
Данное пособие составлено в соответствии с требованиями
действующего государственного стандарта подготовки учителей по
специальности 030100 «Информатика», что и определяет его со-
держание и структуру. Содержание книги охватывает следующие
разделы: основные понятия, связанные с приближенными значе-
ниями величин, и методы оценки вычислительных ошибок (в том
числе и программным способом); методы численного решения
алгебраических и трансцендентных уравнений, а также систем
линейных и нелинейных уравнений; различные способы аппрок-
симации функций; задачи численного дифференцирования и чис-
ленного интегрирования; методы численного решения обыкно-
венных дифференциальных уравнений и краткие сведения о чис-
ленных методах решения уравнений в частных производных. Гла-
вы заканчиваются заданиями к соответствующим лабораторным
работам, каждая из которых снабжена 20 вариантами индивиду-
альных заданий и краткими указаниями к их выполнению.
Характерной особенностью книги является систематическое
рассмотрение вопросов реализации математических методов на
компьютере. Практически все методы проиллюстрированы блок-
схемами вычислительных алгоритмов, для многих из них при-
ведены примеры программ на языке программирования Turbo
Pascal. Наряду с этим, в каждой главе пособия особо рассмат-
риваются примеры применения программных математических
Пакетов, которые в настоящее время широко используются в
3
практических вычислениях: Excel, MatLab, MathCad, Derive,
Maple, Mathematica.
При изложении материала авторами учтен опыт чтения лек-
ций и проведения лабораторных работ по курсу «Численные ме-
тоды» для студентов факультетов информатики и математики пе-
дагогических вузов в условиях использования современного про-
граммно-технического обеспечения.
Основное внимание в пособии уделено объяснениям того, как
численные методы работают, и ограничениям при их примене-
ний в связи с особенностями машинной арифметики. Для этого
требовалось найти равновесие между изложением теории и ана-
лизом ошибок и желанием сделать книгу удобочитаемой. Отсю-
да — отсутствие боязни показаться примитивными при рассмот-
рении простых примеров.
Авторы оставляют преподавателям возможность самим опреде-
лять меру полезности «ручных» вычислений. Короткие численные
упражнения можно выполнить с помощью калькулятора, а более
длинные — с помощью программ для персональных компьютеров
(ПК) или математических инструментов.
Математические обоснования каждого метода изложены с ис-
пользованием элементарных сведений из алгебры и математичес-
кого анализа и должны быть понятны студентам, хотя и не все
обоснования удалось поместить в книгу (здесь уместно напомнить,
что студенты-информатики педагогических вузов не столько изу-
чают фундаментальную математику, сколько знакомятся с ней на
прикладном, пользовательском уровне). В то же время практиче-
ски по всем темам сделаны ссылки на источники более детальных
теоретико-математических сведений (для желающих докопаться
до сути).
Овладению численными методами будет способствовать доста-
точное число подробно рассмотренных примеров, а также упражне-
ний для самостоятельной работы. Нередко различные методы и ал-
горитмы иллюстрируются на одних и тех же примерах. Это позволя-
ет сопоставлять полученные результаты и комментировать вопросы
точности. При этом широко применяются эмпирические (или по-
луэмпирические) подходы к оценке точности численного решения.
Перед авторами стоял вопрос — помещать или не помещать
компьютерные программы в книгу для студентов-информатиков?
Анализ и/или составление программ (и в примерах, и, особенно,
в упражнениях) дает возможность студентам совершенствовать свое
мастерство в программировании. Поэтому предоставление возмож-
ности разбираться в готовых программах, а иногда и составлять
программы самостоятельно (для реализации численных методов)
дает дополнительный стимул, с одной стороны, лучше понять
математику на основе алгоритмики, а с другой — применить тех-
нологию (пакеты).
4
Если содержание или количество учебных заданий, помещен-
ных в лабораторный практикум, покажется избыточным, то пре-
подаватели (кафедра) выберут столько заданий, сколько нужно,
причем именно те, которые возможно выполнить на имеющихся
в распоряжении студентов программно-технических средствах. Ав-
торы приветствуют работу с математическими инструментами, но
только после того, когда соответствующий математический метод
становится понятным. Для читателей, не владеющих пакетами
программ, наряду с примерами рассмотрения использования па-
кетов применительно к конкретным задачам и методам (что дела-
ется в каждой главе) в конце книги приведено приложение, в
котором даны основные сведения о пакетах — хотя бы на уровне
описания назначения и особенностей интерфейса.
Учебное пособие, ориентированное на студентов-информати-
ков педагогических вузов, может быть полезно всем, кто изучает
и применяет численные методы решения математических задач с
помощью ЭВМ.
Авторы в равной мере ответственны за все разделы книги; в то
же время, если рассматривать две основные составляющие учеб-
ного пособия — математику и программные средства, то для
Е.К.Хеннера при неизменном интересе к программам для компь-
ютера приоритетом была все-таки математика, а для М. И. Рагу-
линой — программы и пакетное математическое обеспечение.
М.П.Лапчик принимал участие в подготовке всех разделов кни-
ги, а также осуществлял ее общее редактирование.
ГЛАВА 1
МЕТОДЫ ОЦЕНКИ ОШИБОК ВЫЧИСЛЕНИЙ
1.1. ЭТАПЫ РЕШЕНИЯ ПРИКЛАДНОЙ ЗАДАЧИ
И КЛАССИФИКАЦИЯ ОШИБОК
Анализ ошибок (или, как говорят чаще, погрешностей) явля-
ется неотъемлемой частью процесса решения прикладной задачи.
Часть этих погрешностей связана с вычислениями, которые в наше
время производятся на ЭВМ: в простейших случаях — на микро-
калькуляторах (МК), а в достаточно сложных — на программиру-
емых ЭВМ (компьютерах). С увеличением скорости производства
вычислений и с вовлечением в счетный процесс чисел с боль-
шим количеством значащих цифр, как это делается в ЭВМ, по-
требность в оценке фактической точности результата лишь возра-
стает. При этом следует правильно рассматривать сам термин
«ошибка», который в данном случае выражает объективно неиз-
бежную погрешность, сопровождающую процесс решения зада-
чи, начиная с измерения исходных значений. «Ошибка» в этом
понимании не есть что-то неправильное, она не возникает ис-
ключительно в результате промахов вычислителя; от этих ошибок
нельзя избавиться только путем усиления внимания к процессу
измерений и вычислений. Задача анализа ошибок сводится, по
существу, к отысканию их надежных границ и к соблюдению ус-
ловий, обеспечивающих их минимальное распространение.
Возникновение, накопление и распространение ошибок про-
ходят через все стадии решения прикладной задачи, начиная с
получения значений исходных данных. В достаточно общем случае
процесс решения задач с использованием ЭВМ состоит из следу-
ющих этапов (рис. 1.1):
1) постановка задачи и построение математической модели
(этап моделирования);
2) выбор метода и разработка алгоритма (этап алгоритмиза-
ции);
3) запись алгоритма на языке, понятном ЭВМ (этап програм-
мирования);
4) отладка и исполнение программы на ЭВМ (этап реализа-
ции);
5) анализ полученных результатов (этап интерпретации).
6
Рассмотрим кратко содержание перечисленных этапов реше-
ния прикладной задачи и характер возникающих при этом оши-
бок.
фабула практических задач изначально связана не с идеальны-
ми а с реальными объектами — производственными процессами
и явлениями природы, физическими закономерностями, эконо-
мическими отношениями и т. п. По этой причине решение задачи
обычно начинается с описания исходных данных и целей на язы-
ке строго определенных математических понятий. Точную форму-
лировку условий и целей решения называют математической по-
становкой задачи. Выделяя наиболее существенные свойства ре-
ального объекта, исследователь описывает их с помощью матема-
тических соотношений. Этот этап называют построением матема-
тической модели, или моделированием.
Построение математической модели является наиболее слож-
ным и ответственным этапом решения. Если выбранная матема-
тическая модель слишком грубо отражает изучаемое явление, то
какие бы методы решения вслед за этим ни применялись, най-
Рис. 1.1, Общая схема процесса компьютерного математического
моделирования
7
денные значения не будут отвечать условиям реальной задачи и
окажутся бесполезными. Математическая модель может иметь вид
уравнения, системы уравнений или быть выраженной в форме
иных, как угодно сложных, математических структур или соотно-
шений самой различной природы Математические модели, в част-
ности, могут быть непрерывными или дискретными, в зависимо-
сти от того, какими величинами — непрерывными или дискрет-
ными — они описаны.
По той причине, что математическая модель отражает лишь
некоторые черты реального объекта или явления, в ряде случаев
становятся актуальными вопросы существования и единственно-
сти решения в рамках математической модели. Выяснение в ис-
ходной информации необходимых и достаточных условий для су-
ществования и единственности решения имеет большое практи-
ческое значение, так как определяет цикл тех наблюдений, кото-
рые должны быть запроектированы для количественной реализа-
ции задачи. В числе общетеоретических вопросов можно назвать
также вопрос об устойчивости решений по входным условиям
задачи (такую устойчивость также называют корректностью ре-
шения).
Вслед за построением математической модели исследователь
разрабатывает (или, что бывает чаще, подбирает из числа извест-
ных) метод решения задачи и составляет алгоритмы. Этап поиска
и разработки алгоритма решения задачи в рамках заданной мате-
матической модели называют алгоритмизацией. На этом этапе мо-
гут использоваться любые подходящие средства представления
алгоритмов: словесные описания, формулы, схемы и т.п. Во мно-
гих случаях вслед за построением алгоритма выполняют так назы-
ваемый контрольный просчет — грубую прикидку ожидаемых ре-
зультатов, которые используются затем для анализа решения.
Особые трудности на этапе разработки алгоритма заключаются
в поиске метода решения задачи. Дело в том, что уже для доста-
точно простых моделей чаще всего не удается получить результат
решения в аналитической форме. Пусть, к примеру, задача све-
лась к решению уравнения с одной переменной: х - tgx = 0. При
всей тривиальности этой задачи выразить корни уравнения путем
аналитических преобразований не удается, и весь арсенал мето-
дов «точной» математики оказывается здесь беспомощным. В таких
случаях приходится использовать приближенные математические
методы, позволяющие получать удовлетворительные результаты.
Основными методами решения подобных задач являются числен-
ные методы, при использовании которых результат получается
путем вычислений. По этой причине наиболее естественный путь
реализации численных методов — это использование ЭВМ.
На следующем этапе алгоритм задачи записывается на языке,
понятном ЭВМ. Это — этап программирования. В простейших слу-
8
чаях может оказаться, что на этом этапе вовсе не составляется
новая программа для ЭВМ, а дело сводится, например, к исполь-
зованию имеющегося программного обеспечения.
После отладки и тестирования программы (если ее все же при-
шлось создавать) следует этап реализации — исполнение про-
граммы на ЭВМ и получение результатов решения. Время, требуе-
мое на прохождение этого этапа, зависит от объема вычислений и
быстродействия ЭВМ.
Завершающий этап решения задачи — это анализ, или интер-
претация результатов. На этом этапе происходит осмысливание
полученных результатов, сопоставление их с результатами конт-
рольного просчета, а также с данными, полученными экспери-
ментальным путем. При этом одни результаты могут оказаться
приемлемыми, а другие — противоречащими смыслу реальной
задачи; такие решения следует отбросить. Высшим критерием при-
годности полученных результатов в конечном итоге является прак-
тика.
В условиях использования ЭВМ численные методы выступают
как мощное математическое средство решения практических за-
дач. При этом важно иметь в виду, что сам по себе фактор исполь-
зования ЭВМ не упрощает, а в некотором смысле даже усложняет
(ввиду резкого возрастания количества выполняемых операций)
оценку точности получаемых результатов.
Суть возникающих здесь проблем точно подмечена в извест-
ном принципе Питера: «ЭВМ многократно увеличивает некомпе-
тентность вычислителя». Из этого остроумного замечания следу-
ет, что, используя для решения задачи ЭВМ, вычислитель дол-
жен не столько полагаться на могущество вычислительной техни-
ки, сколько помнить о том, что в конечном итоге он получает на
выходе.
На общую погрешность задачи, как это уже отмечалось, влия-
ет целый ряд факторов. Отметим основные из них, рассмотрев
общий ход решения задачи — от построения математической мо-
дели до производства вычислений.
Пусть R — точное значение, результата решения некоторой за-
дачи. Из-за несоответствия построенной математической модели
реальной ситуации, а также по причине неточности исходных
Данных вместо R будет получен результат, который обозначим R\.
Образовавшаяся таким образом погрешность б[ = R - 7?j уже не
может быть устранена в ходе последующих вычислений (так назы-
ваемая неустранимая погрешность).
Приступив к решению задачи в рамках математической моде-
ли> мы избираем приближенный (например, численный) метод
и, еще не приступив к вычислениям, допускаем новую погреш-
н°сть, приводящую к получению результата R^ (вместо R\). По-
грешность е2 = 7?2 ~ называют погрешностью метода.
9
Действия над числами вносят дополнительную погрешность.
Например, если складывать два числа с одинаковыми погрешно-
стями, то погрешность суммы будет, вообще говоря, больше по-
грешности каждого из слагаемых. Это обстоятельство, а также не-
избежность округлений (в случае использования ЭВМ принуди-
тельное округление диктуется конечностью разрядной сетки ма-
шины) приводят к получению результата Ry, отличающегося от
на величину вычислительной погрешности е3 = 7?3 - Т?2.
Полная погрешность е, очевидно, получается как сумма всех
погрешностей:
z — R — Ry = (R — + (7?| — Т?2) + (У?2 - Ry) — + е2 + Е3.
При решении конкретных задач те или иные виды погрешно-
стей могут отсутствовать или незначительно влиять на оконча-
тельный результат. Тем не менее, для исчерпывающего представ-
ления о точности окончательного результата в каждом случае не-
обходим полный анализ погрешностей всех видов. Это в полной
мере относится и к неустранимой погрешности — погрешности
математической модели. Располагая несовершенной математичес-
кой моделью, вычислитель должен каким-то способом составить
представление о величине неустранимой погрешности. Понятно,
что в условиях слишком грубой модели не имеет смысла прово-
дить утонченный анализ вычислительных ошибок. Отсюда следу-
ет, что оценка неустранимой погрешности может послужить вес-
ким доводом для снижения требований к точности последующих
вычислений, что, в свою очередь, может сделать их менее трудо-
емкими.
К числу причин, искажающих окончательный результат, сле-
дует отнести также всевозможные промахи, допускаемые иногда в
процессе решения: использование не тех исходных данных, не-
верной программы вычислений и т.п. Возможны также ошибки
из-за сбоев, возникающих в самом компьютере (бывшие обыч-
ным делом в компьютерах первого поколения и исключительно
редкие — для современных ЭВМ). Средством борьбы против про-
махов разного рода служит предварительная, грубая прикидка ожи-
даемого результата. Учитывая быстродействие ЭВМ, часто исполь-
зуют способ двойных вычислений, а также специально организу-
емые системы текущего контроля, связанные обычно с характе-
ром решаемой задачи.
Очевидно, что для исчерпывающего представления о погреш-
ности окончательного результата решения задач следует учиты-
вать влияние всех типов ошибок. Мы рассмотрели этот вопрос
применительно к достаточной общей схеме решения прикладной
задачи, включающей этапы построения математической (или
шире — информационно-математической) модели, выбор мето-
да, алгоритмизации и программирования, интерпретации резуль-
10
аТ0В. Во многих случаях исследователь может выбрать более ко-
роткий путь, исключающий часть из перечисленных выше этапов
и резко сокращающий затраты на программирование. Речь идет об
использовании так называемых компьютерных математических ин-
струментов — программных пакетов, предназначенных как для
производства сложных вычислений, так и для быстрого решения
различных математических, научно-технических, статистических,
экономических и других задач: Excel, MatLaB, MathCad, Derive,
Maple, Mathematica и др. Работа с использованием этих пакетов
также предполагает обращение к вопросам точности получения
результатов. Особенность применения специализированных паке-
тов заключается в том, что внутренние механизмы их работы боль-
шей частью скрыты для пользователя.
В любом случае проведение анализа ошибок, как и общее по-
нимание проблемы точности расчетов, невозможно без ознаком-
ления с начальными понятиями методики приближенных вычис-
лений.
Контрольные вопросы
1. Из каких основных этапов состоит процесс решения задачи с по-
мощью ЭВМ? Дайте характеристику каждого этапа.
2. Из каких частей складывается общая погрешность решения задачи?
1.2. ЗАПИСЬ ЧИСЕЛ В ВЫЧИСЛИТЕЛЬНЫХ МАШИНАХ
И ОГРАНИЧЕНИЯ ТОЧНОСТИ ВЫЧИСЛЕНИЙ
Арифметические вычисления на ЭВМ выполняются с точнос-
тью, которая до появления этих вычислительных средств достига-
лась на практике лишь в исключительных случаях. И все же точ-
ность расчетов, выполняемых на ЭВМ, всегда объективно огра-
ничена. Эти ограничения связаны с невозможностью представле-
ния в машине всего множества действительных чисел. Точность, с
которой ведут расчеты вычислительные машины, зависит от спо-
соба аппроксимации действительных чисел посредством конеч-
ных машинных представлений.
в ЭВМ используются в основном два способа представления
чисел: с естественным размещением (фиксированной) запятой и в
Форме с плавающей запятой. Характерной особенностью машин-
ного представления чисел (в любой из указанных выше форм)
является конечность разрядной сетки, в которой хранятся числа в
машине. Для понимания причин ограничения точности, возника-
ющих из-за конечности представления чисел в ЭВМ, достаточно
использовать десятичную форму изображения чисел, в которой
°ни воспринимаются человеком.
11
Знак числа
Разряды числа
Рис. 1.2. Схема 8-разрядного представления числа с фиксированной запятой
На рис. 1.2 изображена схема представления числа с зафиксиро-
ванной запятой, или естественным размещением запятой, на при-
мере 8-разрядного калькулятора. Десятичная запятая (точка) в этом
случае может оказаться в любом цифровом разряде сетки.
Очевидно, что в форме с естественной запятой 8-разрядная
сетка может размещать лишь числа из диапазона [—(1- 10s— 1);
—1-Ю-7] и [+Ы0“7; +(1 • 108- 1)]. Важно заметить, что множество
чисел из этого диапазона не является континуальным (и даже
бесконечным) — это множество конечно. Оно покрывает число-
вую ось двумя участками равномерно расположенных чисел
(с шагом 1 • КГ7) с границами от -(1 10s- 1) до -1 • 1 (Г7 и от 1 • НГ7
до 1 108-1 (рис. 1.3).
Числа из интервала (-1 • 10“7; 1 • 10'7) не могут быть помещены в
такой разрядной сетке (кроме нуля), так что если в результате
произведенной операции получится любое ненулевое число из
этого интервала, то в ЭВМ оно будет отождествлено с нулем. По
этой причине числа из этого интервала называют машинным нулем.
Не могут быть помещены в этой сетке и числа, большие по моду-
лю, чем 1-108— 1. При появлении в процессе счета таких чисел
возникает ситуация, называемая переполнением разрядной сетки.
Рассмотренный способ представления чисел хоть и позволяет
решать многие практические задачи, несет в себе, тем не менее,
очевидные ограничения точности. Точность эта может быть увели-
чена лишь за счет увеличения количества разрядов в представле-
нии чисел, т. е. расширения разрядной сетки.
Наиболее совершенные модели калькуляторов и практически
все современные компьютеры используют представление действи-
тельных чисел в так называемой форме с плавающей запятой.
В этом случае число представляется в виде
х = ±М-10р, (1.1)
где М — мантисса; Р — порядок числа, т.е. показатель степе-
ни, в которую нужно возвести 10, чтобы, умножив результат
на мантиссу и присвоив нужный знак, получить данное число
(рис. 1.4).
Абсолютная величина порядка при представлении, изображен-
ном на рис. 1.4, может выражаться максимальным двузначным
числом 99. Это дает огромные диапазоны представления действи-
тельных чисел. Важной особенностью этой системы представле-
12
-<1-108-1) -1 • 10"7 0 1-10-7 1-1О8-1
Зона переполнения Машинный нуль Зона переполнения
рис. 1-3- Множество чисел, представимых в ЭВМ в форме с фиксирован-
ной запятой
ния чисел является неравномерность их расположения на число-
вой оси.
Для рассмотрения простейших свойств системы чисел с плава-
ющей запятой, позволяющих получить представление об основ-
ных проблемах ошибок машинных вычислений, обсудим эту фор-
му записи чисел более подробно.
Существует несколько способов выделения диапазона, в кото-
ром заключена мантисса. Обсудим два из них.
1. В учебной литературе часто встречается представление ман-
м=^.+4+...+4
₽ р2 р'
тиссы в виде
где Р — основание системы
счисления; / — количество разрядов в записи мантиссы; dY, d2, ...,
dt — целые числа, удовлетворяющие неравенствам
0<4 <Р-1 (/= 1, 2, ..., О-
Определенная таким образом мантисса оказывается в диапазо-
не 0 < М < 1. Значение порядка Р берется из интервала [Р1; Р2],
границы которого обусловлены способом физического представле-
ния чисел в машине. Используя эти обозначения, можно вывести,
что в системе с плавающей запятой ровно 2 ((3 -I)'"1 (Р2 - Pt +1) + 1
чисел. Так, например, при р = 2, t = 3, Р{ = -2, Р2 = 3 система бу-
дет состоять из 41 числа, неравномерно покрывающих участок
числовой оси от -3,5 до 3,5.
2. Для хранения двоичных вещественных чисел в современных
ЭВМ соответствующие форматы предписаны стандартом, не за-
висящим от архитектуры ЭВМ и конкретных языков программи-
рования (IEEE Standard 754 Floating Points Numbers, см. [15]).
Как известно, существует несколько типов вещественных ве-
личин. Характеристики некоторых из них приведены в табл. 1.1.
Знак числа
Мантисса
Знак порядка Порядок
Рис. 1.4. Пример разрядной сетки с представлением десятичных чисел
в форме с плавающей запятой
13
Таблица 1.1
Тип Длина записи числа, байт Диапазон значений Количество сохраняемых значащих цифр мантиссы в десятичном представлении числа
Real 6 2,9-10'39 — 1,7 -1038 11-12
Single 4 1,5 • IO"45 — 3,4 -103« 7-8
Double 8 5 - IO"324— 1,7 - 10308 15-16
Extended 10 3,4-10-4932— 1,Ы О4932 19-20
Опишем форматы хранения чисел типов single и double. Отме-
тим предварительно следующее обстоятельство. В указанном выше
стандарте число хранится в такой форме, что его мантисса заклю-
чена в диапазоне 1 < М < 2, т. е. первая цифра мантиссы всегда
равна 1. Эта дополнительная операция сдвига на один разряд («нор-
мализация») делает нормализованный порядок на единицу мень-
ше, чем тот, который использован в предыдущем рассмотрении.
Величина типа single занимает в памяти ЭВМ 4 байта (рис. 1.5).
Знак числа хранится в крайнем левом разряде с номером 31 (как
обычно, разряды нумеруются с 0 и располагаются справа налево).
Порядок в смещенной форме занимает разряды с 23 по 30. Сме-
щенная форма находится так: к настоящему значению порядка
прибавляется число 127 (так называемое «смещение») для того,
чтобы значение смещенного порядка всегда было положительным.
Мантисса занимает все остальные разряды, т. е. с 0 по 22, причем
целая часть мантиссы вообще не хранится (она всегда равна еди-
нице и при вычислениях это учитывается).
Величина типа double занимает в памяти ЭВМ 8 байт (рис. 1.6).
Знак числа хранится в разряде номер 63. Порядок в смещенной
форме занимает разряды с 52 по 62 (смещение в данном случае
равно 1023). Мантисса занимает разряды с 0 по 51 (как и раньше,
целая часть мантиссы, автоматически равная единице, не хранится).
Номера байтов
4 3 2 1
I I I I I I I I I Id I I I I I I I I I I I I I I I I гпт
31 30 23 22 0
' | Порядок [ Мантисса
Знак числа
Рис. 1.5. Способ хранения числа типа single в ЭВМ
14
Обратим внимание, что границы байтов не совпадают с фраг-
ментами, составляющими вещественное число.
Одна из причин накопления ошибок при выполнении ариф-
метических действий в системе чисел с плавающей запятой — это
запнись конечных десятичных дробей бесконечными дробями в
двоичной системе счисления. Так, например, во многих случаях в
программах на ЭВМ используется десятичный шаг 0,1. Между тем,
в двоичной системе счисления десятичная дробь 0,1 имеет беско-
нечное представление.
В конкретной ЭВМ приходится ограничиваться разрядами дво-
ичного разложения. Поэтому десятичное число 0,1 в машине, ра-
ботающей с двоичными числами, оказывается представленным
приближенно. Не должно удивлять, что при добавлении на ЭВМ
к единице 10 раз по 0,1 получают в ответе не 2, а число, записан-
ное единицей с последующими девятками: 1,99...9.
Нетрудно понять, что если обычным образом выполнять ариф-
метические операции в системе чисел с плавающей запятой, то
очень редко результат будет принадлежать этой же системе. Дей-
ствительно, результат либо выйдет за пределы этой системы чи-
сел (если он окажется больше максимального по модулю нулево-
го элемента этой системы), либо окажется между двумя числами
из этой системы. В первом случае ситуация характеризуется воз-
никновением переполнения или машинного нуля, во втором —
вместо истинного результата возникает значение, которое явля-
ется ближайшим к истинному результату числом из системы чи-
сел с плавающей запятой. Особенности выполнения арифмети-
ческих операций в системе чисел с плавающей запятой приводят
к тому, что, например, для сложения и умножения сохраняются
законы коммутативности, но законы ассоциативности и дистри-
бутивности для них не выполняются.
Считаться с присущими числам с плавающей запятой ограни-
чениями точности необходимо и при использовании для вычис-
лений языков программирования, как в проведении расчетов, так
и в отображении результатов. Покажем на примере, как можно
обнаружить и исследовать эти ограничения.
Номера байтов
8 7 6 5 4 3 2 1
).(iiiidiii.i.iiiliiHiiiliiiiiiiliiiiiiili'iiiiiiliriiinlimnT
63 62 52 51 0
' | Порядок | Мантисса
Знак числа
Рис. 1.6. Способ хранения числа типа double в ЭВМ
15
Пример 1.1. Исследуем реальную точность вычисления встро-
енных в Turbo Pascal математических функций (на примере функ-
ции sin х) и соотнесем ее с возможностями стандартной процеду-
ры вывода.
Приведенная ниже программа Sin позволяет выполнить ука-
занную работу. В программе использован форматированный вывод
с заведомо большим, нежели необходимо, количеством значащих
цифр с целью не потерять в отображении результата части цифр
мантиссы. Однако, как уже отмечалось, мантисса отображения
сохраняет лишь 18 значащих цифр.
program Sin;
uses crt;
var x,y: real;
begin
writein ('введите x'); read(x); y:=sin(x);
writeln(’sin x =',y:40);
repeat until keypressed
end.
Расчеты были повторены при различных вещественных типах
величин х и у. Результаты зависят от типа. Так, для х = 1 получено:
х,у:real sin X
х, у:double sin X
х, у:single sin X
х, у:extended sin X
8.4147098480752P021E-0001
8.41470984807896505Е-0001
8.41410956802368164Е-0001
8.41470984 807 896507Е-0001
Если считать, что последнее значение имеет наибольшую точ-
ность (что вполне естественно), то при использовании величины
типа real в мантиссе лишь 12 верных значащих цифр, типа double —
17, типа single — 7 (сомнительные цифры выделены полужирным
курсивом). Все это вполне соответствует данным из табл. 1.1. Есте-
ственно допустить, что разработчики Turbo Pascal для каждой из
встроенных функций согласовали точность вычисления значения
функции с типом переменной, которой присваивается ее значе-
ние. В этом случае оказывается, что при использовании типа
extended не все верные цифры результата выводятся процедурой
writein.
Одной из важных характеристик точности арифметики числа с
плавающей запятой в ЭВМ является значение машинного эпсилон,
т.е. такого наименьшего числа е из системы чисел с плавающей
запятой, что добавление его к единице дает на этой ЭВМ значе-
ние, большее единицы. Значение машинного эпсилон для конк-
ретной ЭВМ можно определить программным путем; соответствую-
щая программа приведена ниже.
16
program epsilon;
uses crt;
const c:srngle=0.5; d:single=l.0; e:single=2.0;
var a,eps: single; i:integer;
begin
a:=d; eps:=c; i:=l;
while a+eps>a do
begin
eps:=eps/e; r:=i+l
end;
writein('i=i,'eps:single, машинное эпсилон=',
eps: 40);
repeat until keypressed
end.
Результат работы программы:
(' машинное эпсилон = 5.42101086242752217Е-0020
В программе использован форматированный вывод eps:40
(с заведомо большим, нежели необходимо, количеством знача-
щих цифр) с целью не потерять в отображении результата части
цифр мантиссы. Однако, несмотря на это, мантисса отображения
сохраняет лишь 18 значащих цифр — таково ограничение проце-
дуры writeln.
Все переменные и типизированные константы, заданные в про-
грамме, имеют тип single. При смене типа результат вопреки ожи-
данию (и тому, что написано в ряде руководств по Turbo Pascal)
одинаков для любого из вещественных типов: real, double, single,
extended. Это говорит о том, что данная программа определяет имен-
но машинное (процессорное) эпсилон. Отсутствие реакции на смену
типа величин отражает особенности реализации компилятора.
Контрольные вопросы
1. Какие основные способы представления чисел используются в
ЭВМ?
2. Какие числа называют машинным нулем?
3. Каковы причины возникновения ошибок при проведении расчетов
в системе чисел с плавающей запятой, порождаемых структурой этой си-
стемы?
Упражнения
1. Подсчитать количество чисел в системе с плавающей запятой, у
которой ₽ = 2, t = 2, Р] = -1, Р2 = 1- Изобразите эту систему чисел на
числовой оси.
2. Вычислить границы машинного нуля для системы чисел с плаваю-
щей запятой, у которой 0 = 10, t = 3, = -9, Р2 - 9-
3. Определить значение машинного эпсилон для вашего компьютера.
17
1.3. АБСОЛЮТНАЯ И ОТНОСИТЕЛЬНАЯ ПОГРЕШНОСТИ
Пусть X — точное значение некоторой величины, ах — наи-
лучшее из известных приближений. В этом случае ошибка (или
погрешность) приближения х определяется разностью X- х. Обыч-
но знак этой ошибки не имеет решающего значения, поэтому
рассматривают абсолютную величину ошибки:
ех=|Х-х(. (1.2)
Величина ех, называемая абсолютной погрешностью приближен-
ного значения х, в большинстве случаев остается неизвестной,
так как для ее вычисления нужно точное значение X. Вместе с тем
на практике обычно удается установить верхнюю границу абсо-
лютной погрешности, т. е. такое (по возможности наименьшее)
число Дх, для которого справедливо неравенство
Ах>|А'~х|. (1.3)
Число Дх в этом случае называют предельной абсолютной по-
грешностью (или границей абсолютной погрешности) приближения х.
Таким образом, предельная абсолютная погрешность прибли-
женного числа х — это всякое число Дх, не меньшее абсолютной
погрешности ех этого числа.
Пример 1.2. Возьмем число л = 3,14159265358... . Если вызвать л
на индикатор 8-разрядного МК, получим приближение этого чи-
сла: л' = 3,1415926. Попытаемся выразить абсолютную погреш-
ность значения л': =|л- л'( =0,00000005358.... Получили беско-
нечную дробь, непригодную для практических расчетов. Очевид-
но, однако, что еп' < 0,00000006, следовательно, число 0,00000006 =
= 0,6-10“7 можно считать предельной абсолютной погрешностью
приближения, используемого МК вместо числа ея-: Ал' = 0,6 -10~7.
Неравенство (1.3) позволяет установить приближения к точ-
ному значению X по недостатку и избытку:
х - Дх < X < х + Дх, (1.4)
которые могут рассматриваться как одна из возможных пар значе-
ний соответственно нижней границы (НГ) и верхней границы
(ВГ) приближения х:
НГх=х-Дх; ВГх=х + Дх. (1.5)
Во многих случаях значения границы абсолютной ошибки Дх,
так же как и наилучшие значения приближения х, получаются на
практике в результате измерений. Пусть, к примеру, в результате
повторных измерений одной и той же величины получены значе-
ния: 5,2; 5,3; 5,4; 5,3. В этом случае естественно принять за наилуч-
шее приближение измеряемой величины среднее значение х=5,3.
18
Очевидно также, что граничными значениями величины х в дан-
ном случае будут НГХ = 5,2, ВГХ = 5,4, а граница абсолютной по-
грешности Дх может быть определена как половина длины интер-
вала, образуемого граничными значениями НГХ и ВГХ, т.е.
По абсолютной погрешности нельзя в полной мере судить о
точности измерений или вычислений. Качество приближения из-
меряется с помощью относительной погрешности, которая опре-
деляется как отношение ошибки ех к модулю значения X (когда
оно неизвестно, то к модулю приближения х).
Предельной относительной погрешностью (или границей отно-
сительной погрешности) 8х приближенного числа называется от-
ношение предельной абсолютной погрешности к абсолютному
значению приближения х:
~ Дх
Формула (1.6) позволяет при необходимости выражать абсо-
лютную погрешность через относительную:
Дх = |х|3х. (1.7)
Относительную погрешность выражают обычно в процентах.
Пример 1.3. Вычислить границу относительной погрешности
приближения к числу л, используемого 8-разрядным МК (см. при-
мер 1.2).
v 0,6-10~7 Л _ 7 с ,
Учитывая, что —---------<0,2-10 , можно принять 5л =
3,1415926
= 0,000002%. Это чрезвычайно высокая точность, если учесть, что
для ординарных технических расчетов считается приемлемым уро-
вень точности от 0,1 до 5%.
Контрольные вопросы
1. Что такое абсолютная погрешность приближенного значения вели-
чины? граница абсолютной погрешности?
2. Как с помощью границы абсолютной погрешности Дх известного
приближенного значения х можно указать возможные значения его ниж-
ней и верхней границ?
3. Каким образом определяется граница абсолютной погрешности Дх
для приближенного значения х, получаемого в результате многократных
измерений?
4. Что такое относительная погрешность приближенного значения
величины? граница относительной погрешности?
5. Как можно вычислить абсолютную погрешность приближения х,
если известна его относительная погрешность?
19
Упражнения
1. В результате измерения длины стола линейкой с сантиметровыми
делениями установлено, что значение длины находится между деления-
ми 63 и 64 см. Указать границы абсолютной и относительной погрешно-
стей значения длины, если за наилучшее ее приближение принять ее
среднее значение 63,5 см.
2. В результате пятикратных измерений периода колебаний маятника
студент получил результаты (в секундах): 4,8; 5,0; 4,9; 4,8; 5,0.
Основываясь на этих измерениях, установить наилучшее приближе-
ние значения периода и границы абсолютной и относительной погреш-
ностей.
1.4. ПРАВИЛЬНАЯ ЗАПИСЬ И ОКРУГЛЕНИЕ ЧИСЕЛ
Цифра числа называется верной (в широком смысле), если абсо-
лютная погрешность этого числа не превосходит единицы разря-
да, в котором стоит эта цифра.
Пример 1.4. а). Пусть а = 2,91385, Ап = 0,0097. В числе а верны в
широком смысле цифры 2, 9, 1.
б). Возьмем в качестве приближения к числу л = 3,141592... чи-
сло л' = 3,142. Тогда |л-л'| < 0,001 = Дл' (рис. 1.7), откуда следует,
что в приближенном значении п' = 3,142 все цифры являются вер-
ными.
в). Вычислим на 8-разрядном МК частное точных чисел 3,2 и
2,3, получим ответ: 1,3913043. Ответ содержит ошибку, поскольку
разрядная сетка МК не вместила всех цифр результата и все разря-
ды, начиная с восьмого, были опущены. (В том, что ответ неточен,
легко убедиться, проверив деление умножением: 1,3913043-2,3 -
= 3,9999998.) Не зная истинного значения допущенной ошибки,
вычислитель, однако, может быть уверен, что оно не превышает
единицы самого младшего из изображенных на индикаторе раз-
ряда результата. Следовательно, в полученном результате все цифры
верны.
Отметим, что первая отброшенная (неверная) цифра часто
называется сомнительной.
Говорят, что приближенное данное записано правильно, если в
его записи все цифры верные. Это понятно — сохранять в записи
чисел неверные цифры нет смысла. Но важно и другое: если чис-
ло записано правильно, то по одной только его записи в виде
3,141 3,142
---------------1--------------1--------------1------------>
п
Рис. 1.7. Приближение числа л
20
десятичной дроби можно судить о точности этого числа. Пусть, к
примеру, записано приближенное число а = 16,784, в котором все
цифры верны. Из того, что верна последняя цифра 4, которая
стоит в разряде тысячных, следует, что абсолютная погрешность
значения а не превышает 0,001. Это значит, что можно принять
да = 0,001, т.е. а = 16,784±0,001.
Очевидно, что правильная запись приближенных данных не
только допускает, но и обязывает выписывать нули в последних
разрядах, если эти нули являются выражением верных цифр. На-
пример, в записи b = 109,070 нуль в конце означает, что цифра в
разряде тысячных верна и она равна нулю. Предельной абсолют-
ной погрешностью значения Ь, как следует из записи, можно счи-
тать Ab = 0,001. Для сравнения можно заметить, что значение
с = 109,07 является менее точным, так как из его записи прихо-
дится принять, что Дс= 0,01.
Значащими цифрами в записи числа называются все цифры в
его десятичном изображении, отличные от нуля, и нули, если
они расположены между значащими цифрами или стоят в конце
для выражения верных знаков.
Можно сказать короче: значащими цифрами числа являются
все цифры в его правильной записи, начиная с первой ненулевой
слева.
Пример 1.5. 0,2409 — четыре значащие цифры; 24,09 — четыре
значащие цифры; 100,700 — шесть значащих цифр.
Выдача числовых значений в ЭВМ, как правило, устроена та-
ким образом, что нули в конце записи числа, даже если они вер-
ные, не сообщаются. Это означает, что если, например, ЭВМ
показывает результат 247,064 и в то же время известно, что в этом
результате верными должны быть 8 значащих цифр, то получен-
ный ответ следует дополнить двумя нулями: 247,06400.
В процессе вычислений часто происходит округление чисел, т.е.
замена чисел их значениями с меньшим количеством значащих
цифр.
При округлении возникает погрешность, называемая погреш-
ностью округления. Пусть х — данное число, a — результат ок-
ругления. Погрешность округления определяется как модуль раз-
ности прежнего и нового значений числа:
^окр (1.8)
В отдельных случаях вместо Докр приходится использовать его
верхнюю оценку.
Пример 1.6. Выполним на 8-разрядном МК действие 1 :6. На
индикаторе высветится число 0,1666666. Произошло автоматиче-
ское округление бесконечной десятичной дроби 0,1(6) до коли-
чества разрядов, вмещающихся в регистре МК. При этом можно
принять Докр = 0,7 • 10~7.
21
Рассмотренный случай «принудительного» округления назы-
вают округлением методом отбрасывания. Очевидно, что сам по
себе метод отбрасывания оставляет все сохраняемые цифры ок-
ругленного числа верными.
Если вычисления ведутся с точностью меньшей, чем машин-
ная точность, целесообразнее пользоваться способом симметри-
ческого округления, который приводит к меньшей величине ок-
ругления, чем способ отбрасывания. Симметрическое округление
выполняется по следующим правилам:
если первая слева из отбрасываемых цифр меньше 5, то сохра-
няемые десятичные знаки остаются без изменения;
если первая слева из отбрасываемых цифр больше или равна 5,
то последняя сохраняемая цифра увеличивается на единицу.
Из правил симметрического округления следует, что его по-
грешность не превышает половины единицы последнего сохраня-
емого разряда. Это обстоятельство позволяет вести счет с точнос-
тью большей, чем единица последнего сохраняемого разряда. По
этой причине наряду с понятием «верная цифра в широком смыс-
ле», соответствующем методике округления путем отбрасывания,
используется понятие «цифра, верная в строгом смысле», приме-
няемое в вычислениях с симметрическим округлением.
Отметим, что погрешности принято записывать с одной зна-
чащей цифрой (редко — с двумя). Кроме того, при округлении
погрешности обычные правила округления неприменимы: погреш-
ности, по понятной причине, всегда округляют с завышением (как
это и делается в данной книге).
Цифра числа называется верной в строгом смысле, если абсо-
лютная погрешность этого числа не превосходит половины еди-
ницы разряда, в котором стоит эта цифра.
Пример 1.7. Вычислим х = л/23б. Получим х = 15,362291. Ок-
руглим результат до десятых методом симметрического округле-
ния: xt = 15,4; ДХ] = 0,04. Все цифры числа х( верны в строгом
смысле.
Абсолютная погрешность числа Х], получаемого в результате
округления приближенного значения х, складывается из абсо-
лютной погрешности первоначального числа х (являющегося при-
ближением точного значения X) и погрешности округления. Дей-
ствительно, из неравенства [X-xJ <|X-x| + |x-Xi| < Дх +Докр
следует, что если в результате округления приближенного числа
х получено значение х1; то предельной абсолютной погрешнос-
тью числа X] можно считать сумму предельной абсолютной по-
грешности числа х и погрешности округления.
Пример 1.8. Пусть в приближенном значении а - 16,395 все циф-
ры верны в широком смысле. Округлим а до сотых: = 16,40.
Погрешность округления Докр = 0,005. Для нахождения полной по-
грешности Дй] нужно сложить Докр с погрешностью исходного зна-
22
чения flj, которая в данном случае может быть найдена из усло-
вия, что все цифры в записи а верны: Да = 0,001. Таким образом,
д<7] = Да + Докр = 0,001 + 0,005 = 0,0116. Отсюда следует, что в значе-
нии ах = 16,40 цифра 0 не верна в строгом смысле.
Контрольные вопросы
1. Какие цифры в записи приближенного числа называются верными
в широком смысле? верными в строгом смысле?
2. Верно ли утверждение, что компьютер, округляющий числа по
методу отбрасывания, всегда выдает результаты, записанные только вер-
ными цифрами? Почему?
3. Какие цифры в записи приближенного числа называются знача-
щими?
4. Что такое округление числа? погрешность округления?
5. Какие различаются погрешности округления методом отбрасыва-
ния?
6. Из чего складывается полная погрешность округленного числа?
Упражнения
1. Округлить соответственно до двух, трех и четырех знаков после за-
пятой следующие числа: 3,009982; 24,00551; 21,161728.
2. У приближенных чисел 36,7; 2,489; 31,010; 0,031 все цифры верны
в строгом смысле. Указать предельные абсолютные и относительные по-
грешности этих чисел.
3. У приближенных чисел 0,310; 3,495; 24,3790 все цифры верны в
строгом смысле. Округлить заданные числа до сотых и определить в ок-
ругленных значениях количество цифр, верных в строгом смысле.
1.5. ПРОГРАММНОЕ ОКРУГЛЕНИЕ ДЕСЯТИЧНЫХ ЧИСЕЛ
ПО ЗАДАННОМУ ЗНАЧЕНИЮ АБСОЛЮТНОЙ ПОГРЕШНОСТИ
Обычной практикой, принятой для ЭВМ (в том числе и для
МК), является выдача числовых результатов, округленных мето-
дом отбрасывания. Однако при желании программным путем можно
ввести механизм округления по заданному значению абсолютной
погрешности. Используя управляемое программное округление,
можно также предусматривать и программный вывод результатов
в правильной (с точки зрения теории погрешностей) записи, т. е.
верными значащими цифрами.
В некоторых языках программирования имеется функция
ROUND(a, и), где а — арифметическое выражение, задающее ок-
ругляемое значение, а п — арифметическое выражение, задаю-
щее уровень округления (если значение п — не целое, то его дроб-
ная часть автоматически отбрасывается). Округление с помощью
функции ROUND выполняется следующим образом:
23
а) при n > 0 происходит округление до и-й цифры после запя-
той;
б) при п = 0 — округление до ближайшего целого;
в) при п < 0 — округление до (|«| +1 )-й цифры влево от деся-
тичной точки.
При отсутствии функции ROUND она может быть смоделиро-
вана с помощью функции Int — «целая часть»:
. rounds „) Л^Н'у10"+°-5>,
где Sign — «знаковая функция», равная 1 для положительного
значения аргумента, -1 для отрицательного и 0 для нулевого. Ис-
пользуя эту формулу, можно программным путем вести округле-
ние как по заданному уровню округления п, так и по заданной
величине абсолютной погрешности. Во втором случае вначале по
значению абсолютной погрешности требуется определить уровень
Рис. 1.8. Блок-схема алгоритма округления десятичных чисел по задан-
ной величине абсолютной погрешности
24
округления. На рис. 1.8 изображена блок-схема алгоритма округле-
ния числа а с предварительным определением уровня округления
п по заданной величине абсолютнойлтогрешности d.
При всей простоте этого алгоритма при машинном округле-
нии могут возникать некоторые технические проблемы, часто не
позволяющие получать достоверного результата. Коснемся здесь
этих проблем, поскольку процедура округления десятичных чи-
сел с последующим их выводом верными цифрами в естествен-
ной форме записи в дальнейшем будет применяться неоднократно.
Ниже приведена программа okruglenie, которая реализует сим-
метрическое округление десятичных чисел, оставляя лишь вер-
ные (в широком смысле) цифры в соответствии с заданной аб-
солютной погрешностью числа. Для вывода значения округлен-
ного числа в программе умышленно сохранена машинная (нор-
мальная) форма представления десятичных чисел, без «усече-
ния» неверных знаков.
program okruglenie;
{округление десятичного числа "а" по заданной
величине абсолютной погрешности "d" до цифр,
верных в широком смысле}
uses okrugl, crt;
type T=real;
var a,d:T; n:integer;
begin
writein;
writein('Введите число и погрешность'); read(a,d);
okr(a,d,a,n);
writein('Округленное число a=',a, 1 n=',n);
repeat until keypressed
end.
В программе используется модуль okrugl, который, в свою оче-
редь, обращается к процедуре окг. В основе этой процедуры лежит
алгоритм, изображенный на рис. 1.8. Первый ее аргумент — под-
лежащее округлению число а, второй — абсолютная погрешность d.
Результаты работы процедуры — параметры-переменные b и п;
первый из них — округленное число, второй показывает, на сколь-
ко знаков происходит округление (при d > 1 округление происхо-
дит до и-й цифры до десятичной точки, при d < 1 — до л-й циф-
ры после десятичной точки). В ходе исполнения программы внача-
ле определяется количество оставляемых в числе значащих цифр
п (по разным схемам при d < 1 и d> 1) и затем выполняется
округление по указанной выше формуле. В силу отсутствия в язы-
ке Pascal операции возведения в произвольную степень, для вы-
числения 10" используется функция stepenlO. Конструкция type Т
позволяет легко менять тип данных (делать это следует одновре-
25
менно в модуле и программе). Оформление конструкции okrugl в
виде модуля связано с тем, что далее в тексте учебника обраще-
ние к ней используется неоднократно.
unit okrugl;
interface
type T=real;
procedure okr(a,d:T; var b:T; var niinteger);
implementation
function stepenlO(n:integer):T;
var i:integer; k:longint;
begin k:=10; for i:=l to (abs(n)-l) do k:=k*10;
if n=0 then stepenlO:=1;
if n>0 then stepenlO:=k;
if n<0 then stepenlO:=1.0/k
end;
procedure okr(a,d:T; var b:T; var ncinteger);
var i,k:integer;
begin
n:=l;
if del then
begin
while d<((1.O/stepenlO(n))+1E-10)
do n:=n+l;
n:=n-l
end
else
begin
while d>=(stepenlO(n)+1E-10)
do n:=n+l;
n: =-n
end;
b:=int((abs(a)*stepenlO(n))+0.5)/stepenlO(n);
if a<>0 then b:=b*a/abs(a)
end;
end.
Нуждается в комментарии следующее различие между схемой
на рис. 1.8 и программой: в циклах вместо условий d < 10"" и
d> 10" используются модифицированные условия d < (10"" + е) и
d> (10" + е) соответственно. Это связано с особенностями опера-
ций над вещественными числами: при вычислении 10"" (при и > 0)
в ЭВМ получается приближенное значение, и для правильной рабо-
ты программы следует подстраховаться путем добавления е (точное
значение е особой роли не играет, в программе положено 1 • Ю"10).
26
Если этого не сделать, то при округлении числа 1,23456 (см. при-
мер ниже) при погрешностях, например, 0,1 и 0,2 получится оди-
наковое округленное значение числа, в то время как оно в соответ-
ствии с правилом определения верных цифр должно быть разным.
Результаты работы программы okruglenie для различных набо-
ров исходных данных показаны ниже.
Исходное число Погрешность Результат округления (в виде, полученном ЭВМ) п
1,23456 1-ю-1 1.20000000000073Е+0000 1
1,23456 2-Ю-1 1.00000000000000Е+0000 0
1,23456 1-ю-4 1.23460000000008Е+0000 4
1,23456 2-Ю-4 1.23400000000038Е+0000 3
1,20034 1-ю-3 1.20000000000046Е+0000 3
-1,23456 1 -IO"3 -1.23500000000058Е+0000 3
-1,23456 2-10“3 -1.22999999999956Е+0000 2
-1,23432 1-ю-3 -1.23400000000038Е+0000 3
123 456 1-102 1.23499999999881Е+0005 -2
123 456 2 102 1.23000000000119Е+0005 -3
-123 456 2-10' -1.23499999999881Е+0005 -2
-123 432 2-Ю1 —1.23399999999881Е+0005 -2
Анализ результатов показывает, что алгоритм округления ра-
ботает безупречно, однако в ряде случаев (7, 9, Пи 12-я строки,
считая сверху) результат искажен из-за приближенного характера
машинного представления числовых данных. На глаз это искаже-
ние безвредно своей очевидностью, однако при «усечении» не-
верных знаков результаты окажутся неверными; очевидно, напри-
мер, что в результате «усечения» результата округления, получен-
ного в последней строке, вместо 123 400 будет выведено 123 300.
Для преодоления этого затруднения воспользуемся приемом,
который применялся выше: перед «усечением» результата округ-
ления добавим к округленному числу значение в = Ю-10, причем
со знаком «+», если округляемое число является положительным,
и со знаком «-», если округляемое число отрицательно. Очевид-
но, что выбранное значение е, с одной стороны, не является слиш-
ком малым, чтобы не приводить к искомому результату, а с дру-
гой — не настолько большое, чтобы искажать процедуру округле-
ния (разумеется, при значениях погрешности d, существенно боль-
шей по абсолютной величине, чем е).
27
С учетом сказанного ддя вывода результатов округления в есте-
ственной форме в программе okruglenie достаточно заменить про-
цедуру вывода
writein('Округленное число а=',а,' п=’,п);
условным оператором:
if а<0 then begin if n<0 then m:=0 else m:=n;
writein(’Округленное число a=’, а-1Е-10:17:m,
'n=',n);
end
else begin if n<0 then m:=0 else m:=n;
writein('Округленное число a=',
а+1Е-10:17:m,’ n=’,n);
end;
Разумеется, используемая для восстановления отрицательных
значений уровня округления п вспомогательная целочисленная
переменная т в программе okruglenie должна быть описана. Надо
сказать, что вывод значений уровня округления п в этой програм-
ме сохранен не случайно — по значению п можно контролировать
правильность произведенного округления. Результаты выполнения
модифицированной таким образом программы okruglenie для не-
которых значений из прежнего набора исходных данных показа-
ны ниже (незначащие, т.е. неверные, нули выделены полужир-
ным курсивом).
Введите число и погрешность
1.23456 0.0001
Округленное число а= 1.2346 п=4
Введите число и погрешность
1.23456 0.0002
Округленное число а= 1.235 п=3
Введите число и погрешность
1.20034 0.001
Округленное число а= 1.200 п=3
Введите число и погрешность
-1.23456 0.002
Округленное число а=-1.23 п=2
Введите число и погрешность
123456 100
Округленное число а= 123500 п=-2
Введите число и погрешность
123456 200
Округленное число а= 123000 п=-3
Введите число и погрешность
-123456 20
Округленное число а=-123500 п=-2
28
Вывод значений уровня округления п позволяет, в частности,
избежать ошибки в особых случаях — например, при округлении
целых чисел, в изображении которых оказываются значащие нули,
расположенные между значащими цифрами. Ниже показан при-
мер использования программы okruglenie, когда в результате ок-
ругления значащие и незначащие нули оказываются рядом и для
их разделения как раз и используется значение п (незначащие нули
выделены полужирным курсивом):
Введите число и погрешность
12000468 1000
Округленное число а= 12000000 п=-4
Для лучшего понимания следует поупражняться с программой
okruglenie, применяя разные варианты сравнения и альтернатив-
ный (на языке Паскаль) способ вычисления 101" как ехр(±л1п 10),
а также меняя тип данных Т с real на другие вещественные типы.
Контрольные вопросы
1. Почему в функции stepenlO переменная к описана как longint?
2. Какие ограничения существуют в приведенной выше программе
относительно значений величины п при </<1и</>1и как эти ограниче-
ния изменятся, если описать переменную к как integer?
Упражнения
I. Замените последовательно в приведенных выше программах тип Т
на другие вещественные типы и исследуйте, как это влияет на возмож-
ности программы.
2. Замените в приведенной выше программе (модуле okrugle) способ
вычисления 10±п с цикла на формулу ехр(±/г1п 10) и исследуйте, как это
влияет на возможности программы при различных типах данных Т.
3. В Turbo Pascal (как и во многих других языках программирования)
возможен иной, нежели показанный на рис. 1.8 и в приведенных выше
программах, способ округления чисел с помощью функций преобразо-
вания данных из числовой формы в строку (string) и наоборот (в Turbo
Pascal это функции val и str). При этом значение п может быть найдено
по схеме на рис. 1.8, а далее действия выполняются с использованием
указанных функций. С помощью такого приема составить программы
округления чисел: а) в широком смысле; б) в строгом смысле.
1.6. ОПРЕДЕЛЕНИЕ КОЛИЧЕСТВА ВЕРНЫХ ЦИФР
ПО ОТНОСИТЕЛЬНОЙ ПОГРЕШНОСТИ
ПРИБЛИЖЕННОГО ЧИСЛА
Количество верных значащих цифр в приближенном числе и
величина относительной погрешности этого числа взаимосвяза-
29
ны. Эта связь со всей очевидностью вытекает уже из того, что по
величине х, учитывая формулу (1.7), можно вычислить абсолют-
ную погрешность Дх, которая, как следует из определения верных
значащих цифр, явно влияет на их количество в приближенном
числе.
На практике иногда удобнее пользоваться правилом, устанав-
ливающим взаимосвязь количества верных цифр непосредственно
с величиной относительной погрешности. Рассмотрим этот воп-
рос применительно к приближенному числу х, записанному в
форме с плавающей запятой (1.1) в предположении, что мантисса
М удовлетворяет условию 0,1 < М< 1. У числа в таком виде первый
разряд мантиссы после запятой всегда отличен от нуля (число х в
этом случае называют нормализованным). Заметим также, что для
числа, записанного в указанной форме, справедливо ограничение
|х|<10Л (1.9)
Итак, имеются приближенное число х и его относительная по-
грешность 8х. Нужно установить количество верных в строгом смыс-
ле значащих цифр в числе х.
Для каждого известного значения 5х можно подобрать такое
наибольшее натуральное п, чтобы имело место неравенство
5х<10“л. (1.10)
Тогда Дх < |х| • 10"" < 10р • 10“л = 10/>“л < — • Ю'(л'1)+Р, т. е.
11 2
Дх<|-10-(л-1’-10Л (1.11)
Сопоставляя теперь (1.9) и (1.11) и используя определение
цифры, верной в строгом смысле, можно сделать вывод, что в
мантиссе приближенного числа х верны в строгом смысле по край-
ней мере п - 1 цифр после запятой (и, стало быть, все эти циф-
ры — значащие). Таким образом, для того чтобы по заданной ве-
личине относительной погрешности 5х найти количество верных
значащих цифр в числе х, достаточно подобрать наибольшее на-
туральное п такое, чтобы имело место неравенство 8х < 10“”, а
потом полученное значение п уменьшить на единицу.
Пример 1.9. Пусть х = 984,6; 8х = 0,008. Очевидно, что
0,008 < 1 10“2. Это означает, что число х имеет по крайней мере
одну верную в строгом смысле цифру (это первая слева цифра 9).
Полученный результат легко подтвердить, используя определе-
ние цифры, верной в строгом смысле. Вычислим: х= 984,6-0,008 =
= 7,8768, откуда следует, что в числе 984,6 цифра 9 действительно
верна в строгом смысле.
Полученное правило в отдельных случаях проявляет завышен-
ную «осторожность» — при выполнении условия (1.10) в числе
30
могут оказаться верными все п цифр. Зависит это от величины
первых значащих цифр числа х.
Пример 1.10. Пусть х = 136,4; 5х = 0,008 < 1-Ю-2 (т.е. п = 2).
Согласно правилу в числе 136,4 лишь одна верная в строгом смыс-
ле цифра (л- 1 = 1). Вычислим to = 136,4-0,008 < 1,1. Как показы-
вает найденная величина предельной абсолютной погрешности,
в числе 136,4 верны в строгом смысле две цифры: 1 и 3.
В отдельных случаях, когда первая значащая цифра в относи-
тельной погрешности 8х меньше 5, вместо условия (1.10) удается
установить более сильное условие:
5х<|-10“". (1.12)
Легко показать, что в этом случае число х имеет по крайней
мере п верных в строгом смысле цифр. Действительно, с учетом
, (1.7), (1.9) и (1.12) имеем to < ||х| • 10“" < | • 10р • 10“" = | • Ю'’"",
2 2 2
т.е. to < — • 10“" • Ю^.
rs 2
Это означает, что мантисса М нормализованного числа х
(см. (1.9)) имеет по меньшей мере п верных в строгом смысле
цифр.
Пример 1.11. Пусть х = 78,56; 8х = 0,0003. Имеем 0,0003 <
< 0,0005 = - • Ю“3, т. е. в числе х верны в строгом смысле три циф-
ры. Действительно, в данном случае to = 78,56 • 0,0003 < 0,03, что
подтверждает полученный результат.
Контрольные вопросы
1. В значениях х и to десятичная запятая одновременно перемещена
на одинаковое количество разрядов влево или вправо. Изменится ли при
этом количество верных цифр в числе х?
2. Как устанавливается количество верных в строгом смысле цифр
по величине относительной погрешности приближенного числа, если
первая цифра относительной погрешности меньше 5? больше или рав-
на 5?
Упражнения
1. По заданным значениям приближенных чисел и их относительных
погрешностей установить количество цифр, верных в строгом смысле:
а) х= 2,364; х=0,07%;
б) у =109,6; у = 0,04%;
в) z= 14,307; z= 0,005 %.
Округлить значения х, у и z до верных цифр с сохранением одной
запасной цифры.
31
2. Со сколькими верными в строгом смысле десятичными знаками
после запятой нужно взять указанные значения, чтобы относительная
погрешность не превышала 0,1 %:
a) V193; б) sin 0,9; в) In 24,6.
3. Составить программу округления приближенного значения х по его
относительной погрешности Зх.
1.7. ВЫЧИСЛЕНИЕ ОШИБОК АРИФМЕТИЧЕСКИХ ДЕЙСТВИЙ
Получим формулы для учета распространения ошибок при
выполнении основных арифметических действий. Задачу сформу-
лируем в следующем виде:
Имеются приближенные данные с известными оценками ошибок.
С данными производится арифметическая операция. Какое влияние
на ошибку результата оказывают ошибки исходных данных?
Приступая к рассмотрению этого вопроса, нельзя не отметить
чувства неудовлетворенности по поводу самого подхода к делу.
Незнание вычислителем в подавляющем большинстве случаев знака
истинной ошибки принуждает его вводить в рассмотрение пре-
дельные абсолютные величины ошибок и приводит к тому, что
приходится пользоваться формулами, в общем случае сильно за-
вышающими величины ошибок (см. об этом также подразд. 1.11).
Однако ничего другого не остается, если мы хотим получать хоть
сколько-нибудь гарантированные оценки.
Для простоты записей арифметические операции рассматрива-
ются для двух операндов — получаемые при этом формулы как
раз и используются при поэтапном учете ошибок. При необходи-
мости каждая из формул может быть легко распространена на
общий случай.
Сложение и вычитание. Абсолютная погрешность алгебраичес-
кой суммы приближенных значений не превышает суммы абсо-
лютных погрешностей этих значений.
Действительно, пусть S= Х+ Y — сумма точных чисел, среди
которых могут быть как положительные, так и отрицательные, а г =
= х + у — сумма приближений. Составим разность S - s= (X- х) +
+ (К - у) или, переходя к модулям, ]5- < ]Аг-х| + |У -yj, т.е.
es < ех + еу или, тем более, es < Ах + Ду, откуда следует, что мож-
но принять
А5 = Дх + Ду, (1-13)
т. е. предельной абсолютной погрешностью алгебраической суммы
можно считать сумму предельных абсолютных погрешностей сла-
гаемых.
Пример 1.12. Даны приближенные значения х = 235,4 и у -
= 79,1834, у которых все цифры являются верными в широком
смысле. Найдем на МК их сумму: 5=235,4 + 79,1834 = 314,5834. Для
32
оценки точности результата вычислим сумму погрешностей сла-
гаемых: 1 10*1 + 1 • 10~4 = 0,1001 < 0,2 = Д s. Величина ошибки пока-
зывает, что в результате уже первый знак-после запятой является
сомнительным. Стоило ли терять время на учет в вычислениях всех
знаков после запятой у второго слагаемого?
Из рассмотренного примера следуют поучительные выводы:
1) получение с помощью компьютера результата с большим чи-
слом значащих цифр еще не означает, что все эти цифры верны;
2) при вычислении сумм и разностей чисел с сильно различаю-
щимися абсолютными ошибками с целью экономии времени це-
лесообразно «уравнивать» точность исходных данных путем ок-
ругления более точных данных до точности менее точных (с од-
ной-двумя запасными цифрами). Так, в рассмотренном выше при-
мере имело смысл перед выполнением действия сложения округ-
лить значение у до сотых: 79,18.
Руководствуясь только что указанным правилом, следует иметь
в виду, что при последовательном вычитании и сложении несколь-
ких чисел выгоднее производить действия над числами в порядке
возрастания их абсолютных величин.
Относительные погрешности суммы и разности можно вычис-
лять через абсолютные, пользуясь формулой (1.7), но можно ис-
пользовать и специальные формулы. Получим их:
. Дх + Ду |х| Дх |у| Ду |х| |у|
8(х+у) = ----г = г^-^ + г-^т-т = г^-45х+г^8у; (1.14)
|х + у| |х + у| |х| |х + у| |у| |х + у] |х + у|
s, . Дх + Ду |х| Дх |у| Ду |х| „ |у| _
5(х-у) = -[--r = 2—j-Sy. (1.15)
|х-у| |х-у||х| |х-у||у| |х-у| |х-у|
Формулы (1.14) и (1.15) позволяют сделать полезные для прак-
тического использования выводы.
Пусть слагаемые х и у — одного знака, а 8 = тах(8х,8у). Тогда
из формулы (1.14) следует:
8(х + у) < = 8, т.е. 8(х + у) < 8.
|х + у|
Это означает, что если приближенные слагаемые имеют оди-
наковый знак, то предельная относительная погрешность их сум-
мы не превышает наибольшей из предельных относительных по-
грешностей слагаемых.
Как видно из формулы (1.15), при вычитании близких чисел
может произойти большая потеря точности. Действительно, когда
вычитаемые числа почти одинаковы, то даже при условии, что их
собственные ошибки малы, относительная ошибка разности мо-
жет оказаться большой.
33
Пример 1.13. Найдем разность чисел х- 62,425 и у- 62,409, у
которых все цифры верны в строгом смысле. Имеем:
х-у = 62,425 - 62,409 = 0,016.
Граница абсолютной погрешности разности
Д(х - у) = 0,0005 + 0,0005 = 0,001,
поэтому в числе 0,016 из двух значащих цифр верна лишь одна
Сравним предельные относительные погрешности результата и
исходных данных:
х 0,0005 л лллппе я 0,0005 ллллло к/ \ °, 001 „
Зх = -т—— = 0,000008; 8у ~ ~~—- = 0,000008; 3(х - у) = ——? = 0,07.
62,425 62,409 0,016
Таким образом, в данном случае предельная относительная
погрешность разности оказалась почти в 8000 раз больше предель-
ных относительных погрешностей исходных данных. Это означа-
ет, что в приближенных вычислениях нужно исключать вычита-
ние близких по величине значений (например, путем преобразо-
вания вычисляемых выражений).
Умножение и деление. Пусть р-х-у — произведение двух при-
ближенных чисел, a q = xjy — их частное. Знаки чисел х и у не
влияют на величину ошибки, поэтому для простоты примем х, у > 0.
Имеем: lnp = Inx + Iny, In q - Inx - In у.
Принимая во внимание (1.13), а также используя приближен-
ную формулу
Mnz-dlnz- — , получим А 1п/> = Д1п</ = Д 1пх + А1пу, т.е.
Z
(116)
р 1 х у
откуда следует
3(х-у) = 3(х/у) = Зх+ 3у, (117)
т. е. предельной относительной погрешностью произведения (част-
ного) можно считать сумму предельных относительных погреш-
ностей сомножителей (делимого и делителя).
Из формулы (1.16) легко получаются формулы для вычисления
предельных абсолютных погрешностей произведения и частного:
А(х у) = хДу + уДх; (1.18)
Д(х/у)= -у- -. (1.19)
Нетрудно установить, что если хотя бы одно из чисел х или у
неположительны, то в формулы (1.18) и (1.19) они войдут по
модулю (см. табл. 1.2).
34
Пример 1.14. Числа 43,1 и 5,72 заданы верными цифрами. Най-
дем на МК их частное 7,534965. Для определения числа верных
знаков результата вычислим —
д 43,1-0,1 + 5,72-0,1 4,882 п .,
Д^ = —: -У:---------~~ ~ = 0,15.
5,722 32,7184
Частное q имеет один верный знак (7). Округляя полученный
результат с одной запасной цифрой, получим q = 7,5.
Как следует из формул (1.17), относительная погрешность про-
изведения и частного не может быть меньше, чем относительная
погрешность наименее точного из компонентов действий. В то же
время известно, что величина относительной погрешности при-
ближенного числа определяет количество его верных значащих
цифр (см. подразд. 1.6). По аналогии с тем, как при нахождении
алгебраической суммы не имеет смысла сохранять в более точ-
ных слагаемых излишнее количество десятичных знаков, при ум-
ножении и делении приближенных чисел нет необходимости со-
хранять в более точных данных излишнее количество значащих
цифр.
Для удобства все формулы для вычисления погрешностей ариф-
метических действий сведены в общую таблицу (табл. 1.2). Знак #
обозначает одну из операций: +,-,-, /.
Таблица 1.2
X # у Д(х # у) 5(х # у)
х + у х-у х-у х/у Ах + Ду Ах+Ду |х Ау + |у| Дх |х|Ду + |у|Дх J±Sx + rM_5, |х + у| |х+у| 1 ' ' |5х+| ' ' |5у |х-у| ]Х-у] Зх + 8у 8х+8у
У2
Используя приведенные в табл. 1.2 формулы, можно вести по-
операционный учет ошибок арифметических действий на компью-
тере (см. подразд. 1.9). Для этого применяют несложные функции,
примеры которых для языка Turbo Pascal приведены ниже.
function Dsum(da,db:single):single; {предельная
абсолютная погрешность суммы и разности)
begin Dsum:=da+db
end;
35
function Dmult(a,b:T; da,db:single):single;
{предельная абсолюная погрешность произведения}
begin Dmult:=abs(a)*db+abs(b)*da
end;
function Dquot(a,b:T; da,db:single):single;
{предельная абсолютная погрешность частного}
begin Dquot:=da/abs(b)+db*abs(a)/b/b
end;
function Round_R(a:T):single; {погрешность при
округлении с точностью, возможной в типе real}
begin Round_R:=abs(а)*0.5Е-11
end;
function Round_S(a:T):single; {погрешность при
округлении с точностью, возможной в типе single}
begin Round_S:=abs(а)*0.5Е-7
end;
function Round_D(a:T):single; {погрешность при
округлении с точностью, возможной в типе double}
begin Round_D:=abs(а)*0.5Е-15
end-
function Round_E(a:T):single; {погрешность при
округлении с точностью, возможной в типе extended}
begin Round__E : =abs (а) *0.5Е-19
end;
Контрольные вопросы
1. Как объясняется целесообразность сохранения излишних десятич-
ных знаков в более точных слагаемых при сложении нескольких чисел?
2. Каким способом можно быстро оценить относительную погреш-
ность суммы нескольких слагаемых одного знака, если известны относи-
тельные погрешности каждого слагаемого?
3. По какой причине в вычислениях следует избегать вычитания близ-
ких по величине чисел?
4. Как объясняется нецелесообразность сохранения излишних знача-
щих цифр в более точных данных при умножении или делении несколь-
ких чисел?
Упражнения
1. Произвести указанные действия и определить абсолютные и отно-
сительные погрешности результатов (исходные числа заданы верными в
строгом смысле цифрами):
а) 24,37 - 9,18; г) 1,504 - 1,502; ж) 12,64-0,3;
б) 18,437 + 24,9; д) 234,5 - 194,3; з) 72,3 : 0,34;
в) 24,1 - 0,037; е) 0,65-1984; и) 8124,6 : 2,9.
2. Описать на языке программирования функции для вычисления гра-
ниц относительных погрешностей арифметических действий.
36
1.8. ОЦЕНКА ПОГРЕШНОСТЕЙ ЗНАЧЕНИЙ ФУНКЦИЙ
Вычисления по формулам-нередко предполагают нахождение
значений различных математических функций. Используя для рас-
четов МК или ЭВМ, вычислитель в этом случае преобразует вы-
числяемое выражение так, чтобы оно содержало лишь стандарт-
ные функции. При этом становится актуальным вопрос о методах
определения погрешностей значений элементарных функций.
Пусть функция /(х) дифференцируема в некоторой окрестно-
сти приближенного значения аргумента х, а ех — абсолютная ошиб-
ка значения аргумента. Тогда абсолютная ошибка значения функ-
ции в/ = |/(х + Ах) - f (х)|. Поскольку на практике ошибка ех обыч-
но мала по сравнению со значением х, воспользуемся прибли-
женным равенством: ef ~ \df\ = |/'(х)| ех. Заменим ех на Дх. Это оз-
начает, что можно принять
Д/ = |/'(<Лх- (1.20)
Равенство (1.20) позволяет получить целую серию формул для оцен-
ки предельных абсолютных погрешностей значений элементарных
функций. Пусть, например, /(x) = Vx. Тогда A(Vx) = (Jx\ х
. Ах тх
хДх = —7=. Или, аналогично:
2ух
A(sinx) = |(sin х)'| Ах = |cosx| • Ах;
A(cosx) = |(cosx)'| - Ах = |-sinx| • Дх = (sin х| • Дх;
A(tgx) = |(tgx)'| • Дх =
1
COS2 X
Дх =
Дх
COS2 X ’
Д(1п х) = |(ln х)'| • Дх =— (х>0);
Д(ех) = |(ех)'| • Дх = ех • Дх и т. д.
Для вывода формулы погрешности значения функции ху вос-
пользуемся представлением ху = еу1пх, а затем формулой погреш-
ности экспоненты и произведения (предполагается, что х > 0):
(I . Аг 4
Д(х7) = A(e-vlnx) = eJ’Inx • Д(у 1пх) = ху —--+ 1пх-Ду .
х
\ 7
Формула (1.20) позволяет сделать важное для практики вычис-
лений наблюдение. Если значение модуля производной функции
Дх) в точке х меньше единицы, то Д/ < Дх, т. е. абсолютная ошиб-
ка значения функции оказывается меньше абсолютной ошибки зна-
чения аргумента. Если же |/'(х)| > 1, то значение функции будет иметь
ошибку, большую ошибки аргумента. Этот факт имеет простое гео-
37
Рис. 1.9. Зависимость абсолютной погрешности значения функции от
модуля ее производной:
а — при |/'(х)| <1 Дх > Ду погрешность значения функции меньше погрешнос-
ти значения аргумента, т.е. Дх>Ду; б — при |/'(х)| > 1 погрешность значения
функции превышает погрешность значения аргумента, т.е. Дх < Ду
метрическое, толкование. При |/'(х)| < 1 функция изменяется мед-
ленно, т.е. «коридор» изменений значений функции меньше со-
ответствующего «коридора» изменений аргумента (рис. 1.9, а).
При |/'(*)| > 5 малым отклонениям аргумента будут соответство-
вать большие изменения значений функции (рис. 1.9, б).
Второй случай при достаточно больших значениях |/'(х)| при-
водит к резкой потере точности и потому должен особо учиты-
ваться в практике вычислений.
Формулы для вычисления предельных абсолютных погрешно-
стей значений некоторых функций одной переменной приведены
в табл. 1.3.
Таблица 1.3
/(X) Л/(Х) 5/(х)
4х дх 2>/х
д X /Дх 5х
sinx |cosx|-Ax х ctgx| • 5х
COSX [sin х| Дх х tgxl 8х
tgX Дх cos2 X 2W я sin 2х|
Inx Дх X 8х |1п х|
38
Окончание табл. 1.3
' Л*) bf(x) W)
1g X Дх 8х
xlnlO |lgx| • In 10
ех ехДх |х| 8х
10х 10х In 10 • Дх 1п10-|х|-5х
arcsinx Дх |х| s„
/1-х2 |arcsin х|/ -х2
Дх И 5х
arccos х /1-х2 |arccosx| / -х2
arctgx Дх |х| |arctgx| (1 + х2)
1 + х2
X? ху(|у|~ + |1п х|-Ду) |ylnx|-8y + |y|-8x
Пример 1.15. Спомощью МК получаем sin 0,8 = 0,717356091. Если
0,8 — точное значение, то в соответствии с точностью вычисли-
тельного прибора полученный результат имеет точность ±1 • 10'9.
Если же 0,8 — приближенное значение, у которого цифра 8 вер-
на, например, в строгом смысле, то предельная абсолютная по-
грешность значения аргумента Дх = 0,05, а погрешность получен-
ного значения синуса в соответствии с формулой оценки пре-
дельной абсолютной погрешности будет A(sinx) = cosхх
х Дх < 0,7 • 0,05 = 0,035. Отсюда следует, что во втором случае по-
лученное на МК значение sin 0,8 = 0,717356091 имеет лишь одну
верную значащую цифру. Округляя результат с одной запасной
цифрой, получим 0,72.
В тех случаях, когда производная функция вблизи приближен-
ного значения аргумента имеет большие по модулю значения,
произойдет большая потеря точности (так называемый случай
катастрофической потери точности).
Пример 1.16. Пусть х = 1,5, причем Дх = 0,05, т.е. все цифры в
числе х верны в строгом смысле. Нужно вычислить значение tg х.
Спомощью МК получаем: tg 1,5 = 14,10141994. Для определения
верных цифр в результате оценим его абсолютную погрешность:
.... Лх 0,05 1 „
Д (tgx) =--г— = —— = 10, отсюда следует, что в полученном зна-
cos2x 0,005
чении tg 1,5 ни одну цифру нельзя считать верной.
39
Прокомментируем полученный результат. Заданная точность
исходного значения аргумента определяет «коридор» его возмож-
ных значений: 1,45 < х < 1,55. Найдем на МК значения tgx для
граничных значений х из этого «коридора»: tg 1,45 = 8,238092753;
tg 1,55 = 48,07848247. Как видно, диапазон изменения tgx состав-
ляет около 40 единиц, что вполне подтверждает отсутствие смыс-
ла в полученном выше результате вычисления.
В подобных случаях надо использовать все имеющиеся возмож-
ности для увеличения числа верных знаков в исходном данном.
На'пример, если оно получено в результате измерения, то попы-
таться использовать более точный измерительный прибор.
Пусть в условиях примера 1.16 х= 1,4923, Дх = 0,0005. Тогда
tgx = tg 1,4923 = 12,71327341, A(tgx) < <0,09, т.е. в полу-
ченном результате в строгом смысле верны 2 цифры; округляя его
с одной запасной цифрой, получим 12,7.
Используя формулы табл. 1.3, можно составить подпрограм-
мы-функции для вычисления абсолютных погрешностей значе-
ний элементарных функций по заданному значению абсолютной
погрешности аргумента. Ниже приведены описания некоторых
таких функций на языке Turbo Pascal.
function Dsin(x,dx:single):single;
begin Dsin:=abs(cos(x))*dx
end;
function Dtg(x,dx:single):single;
begin Dtg:=dx/sqr(cos(x))
end;
function Din(x,dx:single):single;
begin Dln:=dx/x
end;
function Dexp (x, dx: single) -.single;
begin Dexp:=dx*exp(x)
end;
Из формулы (1.20) легко получается оценка предельной отно-
сительной погрешности функции через предельную относитель-
ную погрешность значения аргумента:
Sf = А/ = = 1^х)1|у|Дх |£W| , |
7 ’ |/(х)| ’ |/(х)| ~ |/(х)| 11 |х| ~ |/(х)| 1 1 ’
т.е.
я, |Г(<
s/=|7mH (1-2”
40
или
5/ = !Д4дх. (1.22)
|/(х)|
Так, пользуясь формулами (1.21) и (1.22), можно, например,
получить
8(%/х) = Ыу-8х = ^8х = Ж,*-
2ухух 2 2|х|
. х Icosxl. . . . . .
8(sin х) = )--) х ox = x ctg x ox = ctg x Дх;
{sin x|
8(ex) = — lx|8x = |x|8x - Дх; 8(ln x) - -ЖЦ = —1—§x;
ex 1 1 x|Inx| |lnx|
8(x-r) = 8(eylnx) = [y lnx|5(y Inx) = |y lnx|[8y + 8(lnx] =
= |1пх|Ду + |y| Д(1пх) = |y lnx|8y +|y|8x
и т.д. В зависимости от способа задания исходных данных (с абсо-
лютными или относительными погрешностями) вычислитель
может использовать для подсчета предельных относительных по-
грешностей тот или иной вариант формулы. Наиболее употреби-
тельные из этих формул приведены в табл. 1.3.
Пример 1.17. Значение аргументах = 0,63 имеет относительную
ошибку около 0,1%. Оценить величину относительной ошибки
sin 0,63.
Используя соответствующую формулу из табл. 1.3, с помощью
МК получим: 3(sin 0,63) = |0,63 ctgO, 63| -0,001 = 0,000864 ~ 0,08%.
Используя величину найденной относительной погрешности,
можно оценить количество верных в строгом смысле значащих
цифр в искомом значении sin 0,63. Поскольку имеет место
0,00864 < 1 10’3, то (см. формулу (1.11)) можно сделать вывод, что
в значении sin 0,63 = 0,589145 по крайней мере две цифры после
запятой верны в строгом смысле.
Формулу оценки погрешности значения функции можно по-
лучить для общего случая. Пусть f — дифференцируемая функция п
переменных; ХъХ2,—,Хп — точные значения; хьх2,...,хл — при-
ближенные значения переменных, а еХ( (/= 1, 2,..., п) — их абсолют-
ные погрешности. Тогда абсолютная погрешность значения функции
/в точке (х|,х2,...,х„) — это ее приращение ef=\f(Xx,X2,..,,Xn)-
-/(Xj,x2,...,x„)|. Считая, что погрешности ех, значительно мень-
ше абсолютных величин значений х1,х2,...,хл , заменим прираще-
ние функции ef ее дифференциалом:
в/ =|#(хьх2
п
¥
дх,
^дх,
е
41
Это неравенство усиливается после замены абсолютных погреш-
ностей eXj предельными абсолютными погрешностями Дх,:
п
/=1
У
Эх,-
Дх,-.
Отсюда следует, что можно принять
У
п
м Эх,-
(1.23)
Формула (1.23) имеет общий характер. Из нее можно получить
не только все формулы для вычисления предельных абсолютных
погрешностей элементарных функций (см. табл. 1.3), но и форму-
лы для предельных абсолютных погрешностей арифметических
действий. Например, пусть /(хьх2) = хг х2. Тогда
А/ =
У
Эх,
Дх! +
У
Эх2
Дх2 = х2ДХ| + Х1Дх2,
что в точности совпадает с формулой (1.18).
Получим общую формулу для относительной погрешности
функции:
§/• =--------5У--------
|/(х1,х2,...,х„)|
£-^1дх,. = 1^
ы Эх,./ Ы Эх,-
Дх,-.
(1-24)
Для выражения 5/ через относительные погрешности аргумен-
тов формулу (1.24) можно переписать в виде
v=i м
у_| ОХ/
(1.25)
Предположив, что в формуле (1.23) все частные дифферен-
циалы одинаково влияют на образование погрешности У, полу-
чим:
У л
дх/
(1 = 1,2, ..., и). (1.26)
bf = п
откуда
Дх,- = —
п
bf
дх.
Формула (1.26) позволяет решать так называемую обратную
задачу теории погрешностей', по заданной точности значения функ-
42
ции находить необходимые для достижения этой точности допус-
тимые величины погрешностей значений аргументов.
71
Пример 1.18. Пустьхблизко к значению — = 0,7853981.... Уста-
новить, какова должна быть точность х, чтобы sin х мог быть полу-
чен на МК с максимальной (машинной) точностью ±1 • 10”6.
Для /(x) = sinx по формуле (1.26) имеем (здесь п = 1):
।—-—г, т. е. Ах =-----~ 0,2 • 10. Отсюда следует, что для
COSX 71
11 COS —
4
получения максимальной точности значений синуса при х, близ-
Дх =
п
ких к —, значения аргумента должны иметь не менее пяти верных
(в строгом смысле) знаков после запятой.
Контрольные вопросы
1. В какой зависимости находится абсолютная погрешность значения
функции одной переменной от абсолютной погрешности значения аргу-
мента?
2. Как объясняется резкая потеря точности значения /(х) для при-
ближенных значений аргумента х на участках с большими по модулю
значениями /'(х) ?
3. Как формулируется обратная задача теории погрешностей?
Упражнения
1. Исходные числовые значения аргумента заданы цифрами, верны-
ми в строгом смысле. Произвести вычисления (на МК или компьютере)
и определить количество верных в строгом смысле цифр в следующих
значениях элементарных функций:
a) log23,6; в) д) arctg8,45;
4,09
б) е2*01; г) arccos0,79; е) 3,42,6.
2. Значение х = 4,53 имеет относительную ошибку 0,02 %. Оценить
количество верных в строгом смысле значащих цифр в значениях:
а) 1пх; б) ех; в) Xх.
1.9. СПОСОБЫ ПРИБЛИЖЕННЫХ ВЫЧИСЛЕНИЙ
ПО ЗАДАННОЙ ФОРМУЛЕ
Наиболее распространенный вид вычислений — это вычисле-
ния по готовой формуле. В компьютере вычисление при любой гро-
моздкости формулы обеспечивается, как правило, одной командой
43
(оператором). Если при этом программно не предусматривается
контроль за вычислительными погрешностями, вычислитель ана-
лизирует результат в конце счета.
Иногда условия вычислительной задачи заставляют вести по-
операционный учет движения вычислительной погрешности. До
появления ЭВМ пооперационный подход к оценке точности вы-
числений по необходимости рассматривался и как способ рацио-
нализации вычислений, ибо позволял на каждом шагу избавлять-
ся от сомнительных цифр, способных лишь загромождать и удли-
нять процесс ручных вычислений.
Однако то, ради чего преимущественно использовался поопе-
рационный подход — исключение сомнительных цифр из после-
дующих вычислений — при широком распространении быстро-
действующих вычислительных устройств с памятью, утратило свой
изначальный смысл.
Уже при вычислениях на микрокалькуляторах, при умелом ис-
пользовании дополнительных регистров памяти, нет необходи-
мости выписывать и заново вводить промежуточные результаты —-
даже в случаях вычислений по достаточно громоздким формулам
(для программируемых микрокалькуляторов этих проблем вовсе
не существует).
Для пооперационного учета ошибок в вычислениях по форму-
ле программным путем сохраняется возможность получить досто-
верный окончательный результат методом его итогового округле-
ния на основе предварительно вычисленной погрешности (если,
конечно, возникающие затруднения не заставят вычислителя об-
ратиться к пооперационному анализу движения ошибки — на-
пример, для выяснения причин обнаруженной в итоге катастро-
фической потери точности вычислений).
Рассматривая в дальнейшем приемы вычислений, мы будем
учитывать как пооперационную, так и итоговую методику оценки
точности.
1.9.1. Вычисления по правилам
подсчета цифр
При вычислении этим методом явного учета погрешностей не
ведется, правила подсчета цифр показывают лишь, какое количе-
ство значащих цифр или десятичных знаков в результате можно
считать надежными.
Сами эти правила основываются на выводах, вытекающих из
формул для оценки погрешностей арифметических действий и
функций (см. подразд. 1.7 и 1.8). Приведем эти правила в система-
тизированном виде.
1. При сложении и вычитании приближенных чисел младший
из сохраняемых десятичных разрядов результата должен являться
44
наибольшим среди десятичных разрядов, выражаемых последни-
ми верными значащими цифрами исходных данных1.
Следует избегать вычитания близких по величине чисел, а так-
же при пооперационном применении правила для сложения и
вычитания нескольких чисел подряд стараться производить дей-
ствия над числами в порядке возрастания их абсолютных величин.
2. При умножении и делении приближенных чисел нужно вы-
брать число с наименьшим количеством значащих цифр и округ-
лить остальные числа так, чтобы в них было лишь на одну знача-
щую цифру больше, чем в наименее точном числе.
В результате следует считать верными столько значащих цифр,
сколько их в числе с наименьшим количеством значащих цифр.
3. При определении количества верных цифр в значениях эле-
ментарных функций от приближенных значений аргумента следу-
ет грубо оценить значение модуля производной функции. Если
это значение не превосходит единицы или близко к ней, то в
значении функции можно считать верными столько знаков после
запятой, сколько их имеет значение аргумента. Если же модуль
производной функции в окрестности приближенного значения
аргумента превосходит единицу, то количество верных десятич-
ных знаков в значении функции меньше, чем в значении аргу-
мента на величину к, где к — наименьший показатель степени,
при котором имеет место2 |/'(х)| < 10А'.
4. При записи промежуточных результатов следует сохранять на
одну цифру больше, чем рекомендуют правила 1 — 3. В оконча-
тельном результате эта запасная цифра округляется.
Правила подсчета цифр носят оценочный характер и не являют-
ся методом строгого учета точности вычислений. Обычно их приме-
няют тогда, когда быстро и без особых затрат нужно получить ре-
зультат, не особо беспокоясь о его достоверности. Между тем прак-
тическая надежность этих правил достаточно высока в результате
вычислительной вероятности взаимопогашения ошибок, не учи-
тываемой при строгом подсчете предельных погрешностей.
При операционном учете ошибок вычислений используется
обычная расчетная таблица — так называемая расписка формулы.
1 Когда точность исходных данных такова, что все они имеют десятичные
знаки после запятой, т.е. являются десятичными дробями, правило формулиру-
ется более доступно: при сложении и вычитании приближенных чисел в резуль-
тате следует считать верными столько десятичных знаков после запятой, сколько
их в приближенном данном с наименьшим числом знаков после запятой. Коли-
чество десятичных знаков после запятой перед выполнением действия целесооб-
разно уравнивать, округляя до одной запасной исходные данные с большим
количеством десятичных знаков.
2 Действительно, при этом условии с учетом формулы Д f = |/'(х)|Дх можно
вывести, что увеличение к на единицу означает увеличение Д/примерно в 10 раз,
что в данном случае уменьшает в значении /(х) количество верных десятичных
знаков по сравнению со значением х на единицу.
45
Пример 1.19. Вычислите значение величины
. са + 4b
А = ЦЦТД) О-2’»
по правилам подсчета цифр для приближенных значений а = 2,156
и b = 0,927, у которых все цифры верны.
Вычисления приведены в табл. 1.4.
Таблица 1.4
а Ь е° Ть е" + С а+ Ь2 1п(д+ Ь2) А
2,156 0,927 8,637 0,9628 9,600 0,8593 3,0153 1,1037 8,698
Прокомментируем ход вычислений. Сначала вычислим е2>156 =
= 8,63652. Это же дает нам и оценку величины производной
в этой же точке: 22’156 < 1 • 101, т. е. в полученном значении следу-
ет сохранить на один десятичный знак меньше, чем в значении
аргумента. Округляя с одной запасной цифрой, получаем 8,637
(запасная цифра выделена) и заносим результаты в таблицу. Да-
лее вычисляем ^0,927 = 0,9628083, причем модуль производной
(1/2 4а ) меньше единицы, поэтому сохраняем после запятой три
знака и один запасной: 0,9628. При вычислении суммы в числите-
ле находим 8,637 + 0,9628 = 9,5998 и, согласно правилу 1, округ-
ляем результат до тысячных: 9,600. При вычислении Ь- пользуемся
правилом 2, при нахождении суммы а + Ь2 — правилом 1.
При определении количества верных цифр в значении In 3,0153
снова применяем правило 3 (учитываем, что производная функ-
ции Inx при х > 1 имеет значение меньше единицы). Округляя
окончательный результат без запасной цифры, получим А = 8,70
(три верные значащие цифры).
Допустим, что в результате вычисления заданного в приме-
ре 1.19 выражения
(ехр(2,156) + sqrt(0,927))/ln (2,156 + sqr(0,927))
на МК или компьютере было получено значение 8,6873389294998.
Как выделить в полученном числе верные цифры? Сделать это можно
и без подробного поэтапного анализа, который приведен выше.
Действительно, так как выражение А представляет собой дробь,
то последнее действие при его вычислении — деление, а следова-
тельно, результат будет содержать верных значащих цифр не бо-
лее, чем в наименее точном из операндов — числителе или зна-
менателе. Учитывая, что корень квадратный дает верных цифр
столько же, сколько и его аргумент (три), а экспонента в данном
случае теряет не более одного верного знака после запятой (что
вместе с ненулевой целой частью также дает не менее трех знача-
щих цифр), замечаем, что в числителе число верных значащих
46
цифр будет равно трем. Нетрудно видеть, что в знаменателе число
верных цифр благодаря свойствам производной логарифма также
наверняка не менее трех. Следовательно, значение А должно быть
округлено до трех верных знаков: А = 8,70. Там, где возможен по-
добный анализ, при использовании МК или компьютера в не-
посредственных вычислениях по правилам подсчета цифр можно
избежать пооперационного учета количества верных знаков.
Контрольные вопросы
1. Как формулируются правила подсчета цифр?
2. В каких случаях рекомендуется применять правила подсчета цифр?
3. Какие два способа применения правил подсчета цифр возможны в
вычислениях на МК и ЭВМ?
4. Какова последовательность действий на каждом промежуточном
этапе расчетной таблицы в вычислениях по правилам подсчета цифр с
пооперационнььм учетом ошибок? на заключительном этапе?
Упражнения
Вычислить на МК или компьютере значения заданных выражений по
правилам подсчета цифр двумя способами:
1) с пооперационным анализом результатов;
2) с итоговой оценкой окончательного результата (у числовых дан-
ных все цифры верные):
0,62 + 716j. 12,47+ /2,52 +14,82 .
а) 1g 41,3 ’ ’ sin2 0,97 +cos2 2,63 ’
ln(6,91 + 3,352). М88
' /626,3 ’ ' е3,94 -8,042 ’ ‘
1.9.2. Вычисления со строгим учетом предельных
абсолютных погрешностей
Этот метод предусматривает использование правил вычисления
предельных абсолютных погрешностей, рассмотренных в подразд. 1.7
и 1.8.
При пооперационном учете ошибок промежуточные результа-
ты, так же как и их погрешности, заносятся в специальную таб-
лицу, состоящую из двух параллельно заполняемых частей — для
результатов и их погрешностей. В табл. 1.5 приведены пошаговые
вычисления со строгим учетом предельных абсолютных погреш-
ностей по той же формуле, что и в примере 1.19, и в предположе-
нии, что исходные данные а и b имеют предельные абсолютные
погрешности Ап = Дй = 0,0005 (т.е. у а и b все цифры верны в
строгом смысле).
Промежуточные результаты вносятся в таблицу после округле-
ния до одной запасной цифры (с учетом вычисленной параллель-
47
но величины погрешности); значения погрешностей для удобства
округляются (с возрастанием!) до двух значащих цифр. Просле-
дим ход вычислений на одном этапе (см. табл. 1.5).
Таблица 1.5
a b e° 4b e“ + 4b b2 a + b2 ln(a + b2) A
2,156 0,927 8,637 0,9628 9,603 0,860 3,016 1,104 8,70
Да д/> A(e°) a(e"+VF) Д(&2) A(a + b2) Д1п(а + h~) ДЛ
0,0005 0,0005 0,0049 0,00027 0,0054 0,0016 0,0021 0,00076 0,016
Используя калькулятор, имеем с2-156 = 8,63652. Подсчитаем пре-
дельную абсолютную погрешность (см. табл. 1.3): Д(е2,156 -0,0005) =
= 0,0043182 = 0,0044. Судя по ее величине, в полученном значе-
нии экспоненты в строгом смысле верны два знака после запятой.
Округляем это значение с одной запасной цифрой: е215б~ 8,637
(запасная цифра выделена) и вносим его в таблицу. Вслед за этим
вычисляем полную погрешность полученного результата (погреш-
ность действия плюс погрешность округления: 0,0044 + 0,00048 =
= 0,0049), которую также вносим в таблицу. Все последующие дей-
ствия выполняем аналогично с применением соответствующих
формул для предельных абсолютных погрешностей.
Округляя окончательный результат до последней верной в стро-
гом смысле цифры, а также округляя погрешность до соответ-
ствующих разрядов результата, окончательно получаем: А = 8,7 ± 0,1.
Вычисления по методу строгого учета предельных абсолютных
погрешностей можно выполнить на компьютере с помощью про-
граммы. Если не производить пооперационного учета движения
вычислительной ошибки, то достаточно вычислить значение пре-
дельной абсолютной погрешности окончательного результата, а
затем произвести его округление. Ниже приведена программа вы-
числения по формуле (1.27), в которой значение погрешности
итогового результата вычисляется по формуле, полученной путем
последовательного применения формул для погрешностей ариф-
метических действий и элементарных функций, приведенных в
табл. 1.2 и 1.3:
[| е° +2VK(Az7+2M2>)+|ln(a+/4)| (2e“&a4b +ДЛ)(а+62)] [ln(<z+Z>2)]2
ДЛ=
24b(a+b2)
(1-28)
Окончательный результат округляется с использованием мо-
дуля okrugl (см. подразд. 1.5) и выводится в правильной записи
верными в широком смысле значащими цифрами.
program Formula_l_27;
uses okrugl,crt;
48
type T=real;
var a,b,da,db,prl,pr2,aa,rezl,rez2,rezult:T;
n,m: integer; _
function Dsum(dx,dy:single):single; {предельная
абсолютная погрешность суммы}
begin Dsum:=dx+dy
end;
function Dquot(x,у:T;dx,dy:single) -.single;
{предельная абсолютная погрешность частного}
begin Dquot:=(abs(x)*dy+dx*abs(у))/sqr(y)
end;
function Dmult(x:T;dx:single):single; {предельная
абсолютная погрешность произведения}
begin Dmult:=2*abs(х)*dx
end;
function Din(x,dx:single):single; {предельная
абсолютная погрешность натурального логарифма}
begin Dln:=dx/x
end;
function Dexp(x,dx:single):single; {предельная
абсолютная погрешность экспоненты}
begin Dexp:=dx*exp(x)
end;
function Dsgrt(x,dx:single):single; {предельная
абсолютная погрешность квадратного корня}
begin Dsqrt:=dx/(2*sqrt(x))
end;
function Round__R (a : T) : single; {погрешность при
округлении}
begin Round_R:=abs(a)*0.5E-11
end;
begin
writein('Введите a,b,da,db'); read(a,b,da,db);
prl:=exp(a)+sqrt(b); {числитель}
pr2:=ln(a+sqr(b)); {знаменатель}
aa:=prl/pr2;
rezl:=Dsum(Dexp(a,da),Dsqrt(b, db)); {предельная
абсолютная погрешность числителя}
rez2:=Dln(a+sqr(b),Dsum(da,Dmult(b, db))) ;
{предельная абсолютная погрешность знаменателя}
rezult:=Dquot(prl,pr2, rezl, rez2) ;
okr(aa,rezult,aa,n);
49
if aa<0 then begin if n<0 then m:=0 else m:=n;
writein('Округленное число a=',аа-1Е-10:17:m,
' n=',n);
end
else begin if n<0 then m:=0 else m:=n;
writein('Округленное число a=',
аа+1Е-10:17:m,' n=’,n);
end;
repeat until keypressed
end.
Результат работы программы:
Введите a,b,da,db
2.156 0.927 0.0005 0.0005
Округленное число а=8.70 п=2
В тех случаях, когда для вычислений выгоднее применять каль-
кулятор, можно обойтись и без составления программы. Рас-
смотрим, например, как можно получить итоговую оценку пре-
дельной погрешности результата вычислений на МК по фор-
муле с использованием предельной относительной погрешно-
сти.
Пример 1.20. Значения а = 23,1 и b = 5,24 даны цифрами, верны-
ми в строгом смысле. Вычислить значение выражения В
С помощью МК получаем В = 0,2921247. Используя формулы
относительных погрешностей частного и произведения, запишем:
5В = 5(л/а) + 8b + 5(1п а), т. е.
8В = — За + ob + Д^-т.
2 |1па|
Пользуясь МК (см. также формулу (1.7)), получим оВ = 0,003,
что дает АВ = В • ЬВ = 0,0008. Это означает, что в результате две
цифры после запятой верны в строгом смысле: В = 0,29 ± 0,001.
Контрольные вопросы
I. Как оформляются вычисления со строгим учетом предельных по-
грешностей при пооперационном учете ошибок?
2. Какова последовательность действий на каждом промежуточном
этапе расчетной таблицы в вычислениях по методу строгого учета пре-
дельных погрешностей с пооперационным учетом ошибок? на заключи-
тельном этапе?
3. Как вычисляются предельные погрешности результата при исполь-
зовании методики итоговой оценки ошибки вычислений?
50
Упражнения
У значений а = 2,674 и b = 31,48 все цифры верны в строгом смысле.
Вычислить значения заданных выражений со строгим учетом границ по-
грешностей двумя способами:
1) с пооперационным учетом границ погрешностей («ручным» и про-
граммным способом, в котором должен быть предусмотрен трассиро-
вочный вывод промежуточных значений погрешности);
2) с итоговой оценкой точности результата:
. ab . a + 4b еа -tfb cos2 а + b
а Ja + b2’ \%(аг+ЬгУ В 1п(1 + а2)’ Г %а'Гь+Ъ'Га'
1.9.3. Вычисления по методу границ
Если нужно иметь абсолютно гарантированные границы воз-
можных значений вычисляемой величины, используют специаль-
ный метод вычислений — метод границ.
Пусть /(х,у) — функция непрерывная и монотонная в неко-
торой области допустимых значений аргументов х и у. Нужно по-
лучить ее значение Да, Ь), где а и b — приближенные значения
аргументов, причем достоверно известно, что
НГа < а < ВГа; НГ4</><ВГ4. (1.29)
Здесь НГ, ВГ — обозначения соответственно нижней и верх-
ней границ значений параметров. Итак, вопрос состоит в том,
чтобы найти строгие границы значения f(a, b) при известных
границах значений а и Ь.
Допустим, что функция /(х,у) возрастает по каждому из аргу-
ментов х и у. Тогда
/(НГа,НГ4) < j\a,b) </(ВГа,ВГ4).
Пусть теперь /(х,у) возрастает по аргументу х и убывает по ар-
гументу у. Тогда будет строго гарантировано неравенство
/(НГа,ВГ4) < /(Д,А) < /(ВГа,НГ4).
Рассмотрим указанный принцип на примере основных ариф-
метических действий. Пусть _/i(x,y) = х + у. Тогда очевидно, что
НГа + НГ4 <а + Ь<ЪТа + ВТь. (1.30)
Точно так же для функции /2(х,у) = х - У (она по х возрастает,
а по у убывает) имеем
НГа-ВГ4 < а-6 < ВГа-НГ4. (1.31)
Аналогично для умножения и деления:
НГЙ-НГА <а й<ВГо ВГ4; (1.32)
НГа а ВГа
ВГЛ < /> < НГ4 ' (1‘33)
51
1
Рассмотрим функцию
1п(х - у)
Замечаем, что при увеличе-
нии х она убывает, а с увеличением у — возрастает (разумеется
при соблюдении условий существования) Следовательно, имеет
место неравенство
1 1 1
1п(ВГо - НГЙ) < 1п(й - Ь) < 1п(НГа - ВГ4) ’
Вычисляя по методу границ с пошаговой регистрацией проме-
жуточных результатов, удобно использовать обычную вычисли-
тельную таблицу, состоящую из двух строк — отдельно для вы-
числения НГ и ВГ результата (по этой причине метод границ на-
зывают еще методом двойных вычислений). При выполнении про-
межуточных вычислений и округлении результатов используются
все рекомендации правил подсчета цифр с одним важным допол-
нением: округление нижних границ ведется по недостатку, а верх-
них — по избытку. Окончательные результаты округляются по этому
же правилу до последней верной цифры.
В табл. 1.6 приведены вычисления по формуле А =-------
ln(a + Z>2)
методом границ. Нижняя и верхняя границы значений а и Ь опре-
делены из условия, что в исходных данных а = 2,156 и b = 0,927
все цифры верны в строгом смысле (Да = Дб = 0,0005), т.е. 2,1555 <
<а< 2,1565; 0,9265 < b < 0,9275.
Таблица 1 6
а b е" Ть еа + 4b b2 а + Ь2 1п(а + Ь2) А
НГ 2,1555 0,9265 8,63220 0,96255 9,59475 0,85840 3,01434 1,10338 8,6894
ВГ 2,1565 0,9275 8,64084 0,96307 9,60391 0,86026 3,01676 1,10419 8,7041
Таким образом, результат вычислений значения А по методу
границ имеет вид
8,6894 < А < 8,7041.
Способ границ связан со способом строгого учета предельных
абсолютных погрешностей следующим образом. Пусть X — точное
значение некоторой величины, ех — его приближение с известны-
ми границами НГЛ и ВГХ.
Примем х равным значению ———---, тогда абсолютная по-
грешность этого приближения (рис. 1.10) будет заведомо не боль-
нгх - ВГХ
ше полуразности ех = ----------•
52
Qx
нгх чk вгх
_____________I-------1—I-----------------1----------->
X x —
Рис ] 10 Связь между абсолютной погрешностью и границами
Так, по результатам вычислений в табл. 1.6 получаем
_ 8,6894 18,7041 = = 8,7041-8,6894
2 2
что дает А = 8,697 ± 0,008, или при записи цифрами, верными в
строгом смысле,
Л = 8,7 ± 0,01.
Вычисления по методу границ также можно реализовать про-
граммным путем. При этом можно осуществлять либо поопераци-
онную, либо итоговую регистрацию значений НГ и ВГ результа-
тов В приведенной ниже программе реализован пошаговый вывод
значений границ в процессе вычисления по формуле (1.27).
program Method_border;
uses crt;
type T=real;
var a, b: T;
da, db, nga, vga, ngb, vgb, Isurtt, upsum, Imult, upmult, lsum2, aa, upsum2,
Iquot,upquot, r:single; n:integer;
{верхняя и нижняя границы погрешности суммы}
procedure BordSum(la,upa,lb,upb:single;
var Is,ups:single);
begin ls:=la+lb; ups:=upa+upb
end;
{верхняя и нижняя границы погрешности произведения}
procedure BordMult(la,upa:single;var lm,upm:single);
begin lm:=sqr(la); upm:=sqr(upa)
end;
{верхняя и нижняя границы погрешности частного}
procedure BordQuot(la,upa,lb,upb:single;
var Iq,upq:single) ;
begin lq:=la/upb; upq:=upa/lb
end;
begin
writein('Введите a,b,da,db');
read (a, b, da, db) ;
writein;
nga:=a-da; vga:=a+da;
53
writein(nga:10:4, ' < a < ', vga:10:4);
ngb:=b-db; vgb:=b+db; writein(ngb:10:4,' < b <
vgb:10:4);
writein('нижняя граница еАа=',exp(nga));
writein ('верхняя граница ела=',exp(vga)); writein;
writein('нижняя граница sqrt(b)=',sqrt(ngb) ) ;
writein('верхняя граница
sqrt(b)=',sqrt(vgb));writein;
BordSum(exp(nga),exp(vga),sqrt(ngb),
sqrt(vgb),Isum,upsum) ;
writein ('нижняя граница eAa+sqrt(b)=',Isum);
writein ('верхняя граница eAa+sqrt(b)upsum);
BordMult(ngb,vgb,Imult,upmult);writein;
writein('нижняя граница Ьл2=',Imult);
writein('верхняя граница Ьл2=',upmult);
BordSum(nga,vga,Imult,upmult,lsum2,
upsum2);writeln;
writein('нижняя граница а+Ьл2=',lsum2);
writein ('верхняя граница а+Ьл2=',upsum2);
BordQuot(Isum,upsum,In(lsum2),in(upsum2) ,
Iquot,upquot);
aa:=(Iquot+upquot)/2 ; writeIn;
writein('нижняя граница A=',Iquot);
writein ('верхняя граница A=’,upquot);writein;
repeat until keypressed
end.
Результат работы программы:
Введите a,b,da,db
2.156 0.927 0.0005 0.0005
2.1555 < а < 2.1565
0.9265 < b < 0.9275
нижняя граница ела=8.63220464292705Е+0000
верхняя граница ела=8.64084259896689Е+0000
нижняя граница sqrt(Ь)=9.62548711708320Е-0001
верхняя граница sqrt(Ь)=9.63068019164141Е-0001
нижняя граница eAa+sqrt(Ь)=9.59475326538086Е+0000
верхняя граница e~a+sqrt(Ь)=9.60391044616699Е+0000
нижняя граница Ьл2=8.5840231.1801910Е-0001
верхняя граница Ьл2=8.60256254673004Е-0001
нижняя граница а+Ьл2=3.01390218734741Е+0000
верхняя граница а+Ьл2=3.01675629615784Е+0000
54
нижняя граница In (а+Ьл2)=1.1032 3564690644Е+0000
верхняя граница In (а+Ьл2) =1-. 10418218003589Е+0000
нижняя граница А=8,68946647644043Е+0000
верхняя граница А=8.70522117614746Е+0000
Таким образом, результат работы программы вычисления А по
методу границ имеет следующий вид (значения НГ и ВТ округле-
ны соответственно по убыванию и возрастанию до четырех знаков
после запятой):
8,6895 < А < 8,7052.
Сравнивая этот результат с тем, что получено в процессе «руч-
ного» счета (см. табл. 1.6), можно сделать вывод, что с помощью
программного вычисления получен более узкий интервал гранич-
ных значений.
Для сопоставления полученного результата со значением А,
найденным по методу строгого учета границ погрешностей
(см. табл. 1.5), можно найти значение еА:
еА = (8,7052 - 8,6895)/2 = 0,0079.
Тогда окончательный результат будет иметь вид (0 — сомни-
тельная цифра):
А = 8,70 ±0,01.
Как видно из записи, в результате верны в строгом смысле две
первые значащие цифры: 8 и 7, что в точности совпадает с пре-
дыдущими результатами «ручного» счета.
Вычисления по методу границ можно вести и без пошагового
фиксирования промежуточных результатов. Пусть, например, нуж-
но найти границы значения выражения Z =------—г~, если 4,845 <
1п(х-у2)
< х < 4,855; 1,215 < у < 1,225. Имеем: -------------- < z <
1п(ВГх - (НГу)2)
7 Жх
< Z <------— ----—. (
1п(НГх -(ВГ,)2)
ней и верхней границ Z:
помощью МК вычислим значения ниж-
1,807895009 < Z< 1,825100030.
Если нет нужды держать в результате слишком большое коли-
чество значащих цифр, его можно округлить (нижнюю границу —
по убыванию, верхнюю — по возрастанию). Так, округляя грани-
цы Z до сотых, будем иметь
1,80 < Z< 1,83, т.е. Z= 1,81 ±0,01.
55
Контрольные вопросы
1. В чем основное отличие метода границ от вычислений по методу
строгого учета границ погрешностей?
2. Какова последовательность действий в вычислениях по методу гра-
ниц с пооперационным учетом ошибок на каждом промежуточном эта-
пе расчетной таблицы? на заключительном этапе?
Упражнения
У* значений а = 2,674 и Ь = 31,48 все цифры верны в строгом смысле.
Вычислите значения заданных выражений по методу границ («ручным»
и программным способом без пошаговой регистрации значений границ
промежуточных результатов) и сравните ответ с результатами, получен-
ными при выполнении упражнений к п. 1.9.2:
. ab а + Jb ч еа -l[b . . cos2 а + b
6 w2 + />2); B)how); г) ‘
1.10. ПРИБЛИЖЕННЫЕ ВЫЧИСЛЕНИЯ ПО ФОРМУЛАМ
С ИСПОЛЬЗОВАНИЕМ ИНСТРУМЕНТАЛЬНЫХ ПАКЕТОВ
Оценка точности получения результатов при осуществлении
элементарных арифметических расчетов может быть предусмотре-
на и при использовании инструментальных программных средств:
Excel, Derive, Maple, MatLab, Mathematica, MathCad и др. К со-
жалению, запроса точности исходных данных при применении
этих пакетов не предусматривается. Это означает, что пользова-
тель должен сам организовывать учет ошибок вычислений.
Значительная часть интегрированных программных средств ав-
томатизации процесса решения математических задач принадле-
жит к классу систем символьной математики.
Символьный тип данных —- это символы, тексты и математиче-
ские выражения (формулы).
Целочисленные данные представляются без погрешности, и
арифметические операции над целыми числами системы выпол-
няют также без погрешностей.
Рациональные данные задаются отношением целых чисел и
также представляют результат точно. Количество цифр, представ-
ляющих большое целое число, ограничено лишь его значением,
но не фиксированными форматами.
Для целочисленных операций используются не обычные коман-
ды микропроцессора, ориентированные на фиксированные фор-
маты, а специальные, реализованные программно, алгоритмы вы-
числений с целыми числами произвольной разрядности.
Вещественные числа в системах символьной математики могут
иметь мантиссу с любым, но конечным числом знаков.
56
Вещественные числа всегда имеют некоторую погрешность
представления результатов из-за неизбежного округления их и
существования так называемого «машинного нуля» — наимень-
шего числа, которое воспринимается как нуль. Например, в тер-
минах системы Mathematica говорят о приближении числовых дан-
ных как об их аппроксимации.
Рассмотрим выполнение расчетов средствами наиболее попу-
лярных инструментальных пакетов по формулам на основе уже
рассмотренных нами ранее примеров вычислений.
Пример 1.21. Вычислим значение величины А =------т- при
1п(с + ш)
заданных значениях параметров а и b с итоговой регистрацией
результатов вычислений по методу систематического учета гра-
ниц абсолютных погрешностей (рис. 1.11) в среде табличного про-
цессора Excel. Для этого воспользуемся формулой (1.28).
Используя результаты, полученные в таблице, изображенной
на рис. 1.11, получаем
А = 8,70 ±0,01.
Пример 1.22. Предыдущее задание может быть выполнено в Excel
и с пошаговой регистрацией границ абсолютных погрешностей
(рис. 1.12).
В ячейках электронной таблицы записываем соответствующие
формулы (см. рис. 1.12). На каждом шаге вычислений выполняется
ручное округление результатов до цифр, верных в широком смысле
(т.е. с одной запасной цифрой). Для этого используется встроен-
ная функция округления ОКРУГЛ(число;количество_цифр).
Результаты расчетов представлены на рис. 1.13.
Окончательный результат: А -- 8,70 ± 0,01.
Пример 1.23. Вычислим значение А = —---5- методом границ
1п(о + /г)
без пошаговой регистрации промежуточных результатов в среде ма-
тематической системы MathCad; исходные значения а и b прежние.
Воспользуемся формулами
НГ ехР(нг°) +х/НГ/, . _ ехр(ВГа) + УВГ^,
А 1п(ВГа+ВГ2) ’ А 1п(НГа+НГ2) '
Вычисления показаны на рис. 1.14.
Таким образом, окончательно получаем
8,6895 < А < 8,7052.
Математическая система MathCad позволяет выполнять обыч-
ные вычисления с повышенной точностью — до 20 знаков. Для
перехода в такой режим вычислений нужно числовые константы
57
В5
Н
J
,E2>(C2+2*B2*D2)+ABS(LN(F2y(E2*EXP(A2)>C2+D2rF2f(LNiF2)),l2/(2"KOPEHb(B2T(.A34D2-'2))
ВЙЙа
= А , В .0 / D Е F Я
1 а ь Да/ !\Ъ а + Ъ '
2 2.156 0.927 0/005 0.0005 1.925617 3.015329
3
4 А= 8.697339
5 Л4 = 0.011689
Рис. 1.11. Вычисления по формуле с итоговой регистрацией границ абсолютных погрешностей
Рис. 1.12. Реализация метода систематического учета границ абсолютных погрешностей и Excel
1- А в С . D Е F G Н 1
1 а ь «г еа + л/b Ъ 3 а 4- Ij Гпф+6?) Л
2 3 4 2 156 0.927 8 63852 0.96281 9 59933 0.85933 3.01533 1.10371 8.69734
а1 0.637 0 963 S.539 0.859 3015 1 104 8 697
5 6
Да АО ДЮ AG/T) ДО12 + VS") А(а т Л2) Д1п(а-1-Д2) АЛ
0 0005 0.0005 0.004318 0.00026 0.0046 0.00093 0.001427 0.00047 0.007877
8
9 0.00048 0.0001 S 0.00033 0.00033 0.00033 0.00029 0.00034
10 Ад, 0.00480 0.00045 0.00491 0.00126 0.00176 0.000761 0.00822
Рис. 1.13. Расчетная электронная таблица
— Ji =1 то •
а '= 2.156 Ъ := 0.927 Да := 0.0005 До := 0.00 НГ(а) := а - Да ВГ(а) := а+Да £22 Ы НГ(а) s= 2.1555 ВГ(а) = 2.W НГ(Ь) - Ъ - ДЬ (с) .= ь дъ тгт-г, > .. ВГ(Ь) = 0.9275 г-В Ill (о) = 0.92&5 4 ' al = НГ(а) bl := НГ(Ь) Ь2 ВГ(Ь) а2 := ВГ(а) fatal+ bVJ г 05 jrnb« Format Display Options 1 I.. - f J.; 1 ' л—« • I ormat General Ji Number ей ••• ••• огаяиииия ~ Scientific Show" s’-j . Engineering '' ' ' • ' - _J J? OK | Отмена | 1 - •••'. -''J 1 Cor •
ттт- о Bl = 8.7052 .
НГ = 8.6^5? 1
Рис. 1.14. Реализация метода границ в пакете MathCad
с форматированием результатов вычислений
Рис. 1.15. Вычисление в MathCad значения функции
с увеличенным количеством знаков
в вычисляемых объектах задавать с обязательным указанием деся-
тичной точки, даже если они являются целыми числами. Для это-
го в меню Symbolics выбирается команда Evaluate/Floating Point, в
окне Floating Point Evaluation устанавливается точность вывода ре-
зультата, равная, например, 20 (число цифр результата может со-
держать до 4000 верных знаков) (рис. 1.15).
Система имеет конечную точность вывода результатов вычис-
лений, при которой учитываются только три значащие цифры,
причем последующие нули по умолчанию не пишутся. Точность
вывода результатов можно изменить с помощью контекстного
60
Рис. 1.16. Окно MathCad установки значений встроенных системных
переменных
меню, при этом точность расчетов определяется значением сис-
темной переменной TOL, изменение которой позволяет пользо-
вателю установить необходимую ему минимальную точность вы-
числений или допускаемую погрешность для различных алгорит-
мов аппроксимации (интегрирования, решения уравнений и т.д.;
по умолчанию TOL = 0,001). Системные переменные имеют свои
имена и значения, присваиваемые системой по умолчанию. Их
действие глобальное, т. е. они доступны в любом месте программы
(рис. 1.16).
Пример 1.24. Средствами системы компьютерной математики
Maple вычислим значение выражения по формуле (1.27), приме-
няя пошаговую фиксацию промежуточных результатов вычисле-
ний по методу границ.
Для организации вычислительного процесса потребуется сис-
темная переменная Digits, которая определяет число знаков ман-
тиссы в операциях с плавающей запятой. Вычисления будем осу-
ществлять (см. табл. 1.6) по группам команд (рис. 1.17).
Краткий обзор возможностей применения инструментальных
средств для вычислений по формуле показывает, что во многих
случаях использование этих средств позволяет обеспечить нагляд-
ную организацию вычислительной схемы, автоматизировать сам
процесс вычислений при возможности быстрого варьирования
Исходных данных, а также — что особенно важно — получать ре-
зультат в различных форматах представления чисел. Все это делает
Применение инструментальных средств для единичных расчетов
61
>*Digits:»6: -n€ja:==a-da; • vga:-a+da; *¥дЬ:«=Ь+йЬ;
nga-=‘2 1555 vga- ='2 1565 ngb-=- 9265 vgb- =-9275
Г >-Digits:~6:-ngexp:=exp(nga);vgexp:=exy(vga>; ngexp- =,8 63221 vgexp- ='8 64084
>• Digits«ngsgrt :=sgrt(ngh) jvgsgrt:-sgrt(vgh) ; ngsqrt-=- 96255 vgsqrt- ='96307
>*Digits:=6ingexpb:=ngexp+ngsqrt;vgexpb:=vgexp+vgsgrt ngexpb---9 59476 vgexpb- =-9 60391
>-Digits:=5:nghb:=nghA2;vghh:=vgbA2; ngbb- — 85840 vgbb- =• 86026
>• Digits:-6 :ngsum:=nga+ngbb ;vgsum:=vga+vghb ; >• Digits :-6 :ngln:=ln(ngsum) ;vgln:«ln(vgsum) ; ngsum-=-3 01390 vgsum- — 3 01676 »§&•=• 1 10323 vg&-=-l 10418
>*Digits :=6 :ngA:®ngexpb/vgln;vg&.*.«vgexpb/ngXn; «gZ-=-8 68949 vg4-=-8 70527
Рис. 1.17. Окно Maple с результатами пошаговых вычислений
по методу границ
по формулам более предпочтительным по сравнению с примене-
нием МК или компьютера в программируемом режиме.
Контрольные вопросы
1. Какие встроенные функции округления могут быть использованы
в процессе вычислений с помощью инструментальных средств?
2. Какие инструментальные программные средства являются более
эффективными при использовании различных методов вычислений?
Упражнения
У значений а = 2,674 и b = 31,48 все цифры верны в строгом смысле.
Вычислить значения заданных выражений по методу строгого учета гра-
62
ниц погрешностей и методу границ с использованием инструменталь-
ных средств вычислений и сравнить ответ с результатами, полученными
при выполнении упражнений к п. 1.9.2. —
. ab а + Тб . е" - л/б . , cos2 а + b
Э \la + b2’ lg(a2+№)’ В 1п(1 + а2)’ Г ал + '
1.11. ВЕРОЯТНОСТНЫЕ И ЭМПИРИЧЕСКИЕ МЕТОДЫ
ОЦЕНКИ ОШИБОК ВЫЧИСЛЕНИЙ
Описанные способы оценки погрешностей приближенных вы-
числений — пошаговые вычисления предельных абсолютных по-
грешностей и метод границ, будучи строгими, дают при большом
объеме вычислений многократно завышенную по отношению к
реальности оценку погрешности результатов.
Поясним еще раз механизм этого завышения на простейшем
примере.
Пусть надо оценить погрешность суммы п чисел, каждое из
которых задано приближенно:
S + ДА = (й] + А]) + + Д^) + ••• + (ап + А;1). (1.34)
Если понимать под А, предельные абсолютные погрешности
слагаемых, то все, что можно сказать о предельной абсолютной
погрешности суммы, так это то, что она равна сумме предельных
абсолютных погрешностей слагаемых.
Если слагаемых очень много, то даже при малости каждой А,
АД может оказаться неприемлемо велико. Тем не менее это не оз-
начает реальной неприемлемости результата, поскольку' в такой
редакции ДА не есть истинная погрешность суммы, а есть ее оцен-
ка сверху, исходящая из наиболее неблагоприятного стечения об-
стоятельств.
Если понимать под А, не предельные абсолютные, а реальные
погрешности слагаемых, картина оказывается иной. Среди них
будут и положительные, и отрицательные, и при сложении про-
исходит то, что в реальности спасает от катастрофически непри-
емлемых погрешностей результата, — так называемая частичная
компенсация погрешностей. Фактически только благодаря ей про-
должительные (иногда многочасовые) решения математических
задач на современных ЭВМ дают достоверные результаты, кото-
рые не тонут целиком в погрешностях.
В некоторых простейших случаях можно провести вероятност-
ную оценку реальной погрешности вычислений. Допустим, что в
сумме (1.34) п велико (иначе вероятностные оценки бессмыслен-
ны) и что совокупность погрешностей слагаемых есть набор неза-
висимых случайных чисел, распределенных по нормальному за-
кону (наиболее правдоподобное предположение) с центром в
63
точке 0 и некоторой дисперсией о. Тогда статистическая оценка
погрешности суммы такова:
-не < Д.8' < не,
где е — доверительный интервал, задаваемый с некоторой дове-
рительной надежностью Р.
Как известно из математической статистики, величину е мож-
но оценить следующим образом:
е =
где t — коэффициент Стьюдента, зависящий от доверительной
надежности и объема выборки (в реальности при больших л ко-
эффициент /слабо зависит от Ри при Р=0,99 1=3).
Основной вывод, который следует из этой оценки, таков: с
ростом л погрешность суммы растет пропорционально 4п (а не
пропорционально л, как предельная абсолютная погрешность).
Тем не менее вероятностные оценки не получили широкого
распространения и в практических вычислениях не используются.
Это связано с тем, что в любой реальной вычислительной форму-
ле сочетаются различные действия, и вероятностная оценка ито-
говой погрешности становится затруднительной.
Огромную роль в вычислительной практике играют эмпири-
ческие способы оценки погрешностей. Они не имеют под собой
теоретической базы, но почти всегда позволяют получить резуль-
тат, в котором опытный вычислитель практически уверен (хотя
вероятность ошибки отлична от нуля). Так, полуэмпирическими
являются описанные выше вычисления по правилам подсчета
цифр.
Другой достаточно универсальный эмпирический прием зак-
лючается в том, чтобы, решая вычислительную задачу на ЭВМ,
решить ее дважды с различным числом цифр в мантиссе веще-
ственных чисел. Для этого достаточно, применяя Pascal, вначале
объявить все вещественные переменные типом real, а затем, при
повторном решении — double. Значительное несовпадение резуль-
татов — сигнал о серьезных проблемах, связанных с организаци-
ей вычислительного процесса или выбором алгоритма.
Далее при рассмотрении конкретных вычислительных процес-
сов мы будем говорить о связанных с ними эмпирических при-
емах контроля точности вычислений.
Контрольный вопрос
Как работает механизм завышения оценки погрешности путем ее за-
мены предельной погрешностью в случае вычисления произведения боль-
шого числа сомножителей?
64
Упражнение
Провести расчеты по формуле (1.27) на компьютере на различных
языках программирования (включая. Turbo Pascal), описывая а и b раз-
личными (но, разумеется, одинаковыми в каждом конкретном расчете)
вещественными типами данных. Установить различия результатов и ин-
терпретируйте их.
ЛАБОРАТОРНАЯ РАБОТА № 1
Тема: Методы оценки погрешностей
Задание 1. Число х, все цифры которого верны в строгом смыс-
ле, округлить до трех значащих цифр. Для полученного числа ~ х
найдите предельную абсолютную и предельную относительную
погрешности. В записи числа укажите количество верных цифр
(в строгом и широком смысле).
Задание 2. Вычислите с помощью МК значение величины Z
при заданных значениях параметров а, b и с, используя «ручные»
расчетные таблицы для пошаговой регистрации результатов вы-
числений, тремя способами:
1)по правилам подсчета цифр;
2) с систематическим учетом границ абсол ютных погрешностей;
3)по способу границ.
Сравните полученные результаты между собой, прокомменти-
руйте различие методов вычислений и смысл полученных число-
вых значений.
Задание 3. Вычислите значение величины Zпри заданных зна-
чениях параметров а, b и с, используя один из инструментальных
пакетов, с пошаговой и итоговой регистрацией результатов вы-
числений двумя способами:
1)по методу строгого учета границ абсолютных погрешностей;
2) по методу границ.
Задание 4. Составьте программы и вычислите на ЭВМ значе-
ния величины Z при заданных значениях а, b и с с пошаговой и
итоговой регистрацией результатов двумя способами:
1)по методу строгого учета границ абсолютных погрешностей;
2)по методу границ.
Результаты, полученные в заданиях 3 и 4 разными способами,
сопоставьте между собой и сравните с ответами, полученными
при выполнении задания 2.
Пояснения к выполнению лабораторной работы № 1
Исходные данные для выполнения всех заданий содержатся в
табл. 1.7 (числа х, а, Ь, с — приближенные, в их записи все циф-
ры верны в строгом смысле, коэффициенты — точные числа).
65
Для выполнения заданий необходимо изучить материал гл. 1
подробно разобрав все приведенные в тексте примеры (лучше
всего при этом иметь под руками МК, а также компьютер хотя
бы с одним из инструментальных средств: Excel, MathCad, Maple
и др.).
Для выполнения задания 1 требуется владение основными оп-
ределениями и понятиями теории приближенных вычислений
(см. подразд. 1.3 и 1.4).
. При выполнении задания 2 составляются «ручные» расчетные
таблицы, аналогичные табл. 1.4 —1.6 (см. подразд. 1.9).
Для выполнения задания 3 требуется владение по крайней мере
одним из инструментальных программных средств (дополнитель-
ные сведения можно получить в Приложении или из источников
[1, 7, 11]). При этом надо тщательно разобрать примеры, рассмот-
ренные в подразд. 1.9 и 1.11.
При выполнении задания 4 составляются программы для ЭВМ
с использованием процедур и функций, приведенных в примерах
гл. 1. Примеры аналогичных программ имеются в подразд. 1.9.
Поскольку при выполнении заданий 2, 3 и 4 используется одна
и та же расчетная формула, в результате выполнения лаборатор-
ной работы необходимо сделать обоснованный вывод о целесооб-
разности и эффективности использования тех или иных методов
и средств вычислений.
Таблица 1.7
Номер варианта X Z а b С
1 2,3143 4аЬ Ь-2с 3,4 6,22 0,149
2 0,012147 (Ь - с)1 2а+ Ь 4,05 6,723 0,03254
3 0,86138 lnZ> - а а2 + 12с 0,7219 135,347 0,013
4 0,1385 b - sin а а + Зс 3,672 4,63 0,0278
5 23,394 \0c + 4b а2 - b 1,24734 0,346 0,051
6 0,003775 (а - с)1 4а + ЗЬ 11,7 0,0937 5,081
66
Окончание табл. 1.7
""Номер варианта X Z a b c
7 718,54 а - sin b Ь- + 6с 1,75 1,21 0,041
8 9,73491 db — с In о + b 18,0354 3,7251 0,071
9 11,456 Inc - 10а dbc 0,113 0,1056 89,4
10 3549 с + sin й с - а2 0,317 3,27 4,7561
11 7,32147 ln(Z> + с) Ь-ас 0,0399 4,83 0,072
12 35,085 da - b За-с 1,574 1,40 1,1236
13 7,544 ab - 4с In а + b 12,72 0,34 0,0290
14 198,745 а - cos b 13с + Ь 3,49 0,845 0,0037
15 37,4781 ас + Ь db-c 0,0976 2,371 1,15874
16 0,183814 lg(a ~ b) db - с 82,3574 34,1 7,00493
17 0,009145 b + cos c b + 2а 0,11587 4,25 3,00971
18 11,3721 d1 - b dab + c 3,71452 3,03 0,765
19 0,2538 In а+46 ab-c 7,345 0,31 0,09872
20 10,2118 b2 + In c y/c — a 0,038 3,9353 5,75
УДК 520.88
ББК 22.193я73
Л24
Рецензенты:
д-р физ.-мат. наук, проф. Московского
> педагогического государственного университета В.А.Горелик;
директор института математики, физики и информатики
при Красноярском государственном педагогическом университете,
д-р пед. наук, профессор Н.И.Пак
Лапчик М.П.
Л24 Численные методы: Учеб, пособие для студ. вузов /
М.П.Лапчик, М.И.Рагулина, Е.К.Хеннер; Под ред. М.П.Лап-
чика. — 2-е изд., стер. — М.: Издательский центр «Акаде-
мия», 2005. — 384 с.
ISBN 5-7695-2503-7
В учебном пособии в сжатом виде и на доступном уровне излагаются
основные теоретические сведения о численных методах решения приклад-
ных задач, рассматриваются вопросы применения инструментальных средств.
Для студентов факультета информатики педагогических вузов, изуча-
ющих систематический курс «Численные методы». Будет полезно студен-
там математических факультетов педагогических вузов, изучающим курс
«Информационные технологии в математике».
УДК 520.88
ББК 22.193я73
Учебное издание
Лапчик Михаил Павлович, Рагулина Марина Ивановна,
Хеннер Евгений Карлович
Численные методы
Учебное пособие
2-е издание, стереотипное
Редакторы Е. Ф. Алферова, Н. С. Лепина-Лавринович
Технический редактор Н.И. Горбачева
Компьютерная верстка: Н. В. Протасова
Корректоры Л. А. Котова, Н. С. Потемкина
Изд. № А-749-П. Подписано в печать 25.07.2005. Формат 60 «90/16. Гарнитура «Таймс».
Бумага тип. № 2. Печать офсетная. Усл. печ. л. 24,0. Тираж 3000 экз. Заказ № 15177.
Издательский центр «Академия», www.academia-moscow.ru
Санитарно-эпидемиологическоезаключение № 77.99 02.953.Д 004796.07.04 от20.07.2004.
П7342, Москва, ул. Бутлерова, 17-Б, к. 360. Тел./факс. (095)330-1092, 334-8337.
Отпечатано на Саратовском полиграфическом комбинате.
410004, г. Саратов, ул. Чернышевского, 59.
© Лапчик М.П., Рагулина М.И., Хеннер Е.К., 2004
ISBN 5-7695-2503-7 © Издательский центр «Академия», 2004