Метод половинного деления

advertisement
Решение нелинейных уравнений
Задача нахождения корней нелинейных уравнений вида
F(x)=0
(1)
встречается в различных областях научных исследований. (здесь F(x) – некоторая
непрерывная функция).
Нелинейные уравнения делятся на два класса – алгебраические и трансцендентные.
Алгебраическими уравнениями называются уравнения, содержащие только
алгебраические функции (целые, рациональные, иррациональные). В частности,
многочлен является целой алгебраической функцией. Уравнения, содержащие другие
функции (тригонометрические, показательные, логарифмические и др.) называются
трансцендентными.
Методы решения нелинейных уравнений делятся на прямые и итерационные. Прямые
методы позволяют записать корни в виде некоторого конечного соотношения, в виде
формулы. Из курса алгебры известны такие методы для решения тригонометрических,
логарифмических, показательных, а также простейших алгебраических уравнений.
Однако встречающиеся на практике уравнения не удается решить такими простыми
методами. Для их решения используются итерационные методы.
Итерационные методы, как и все численные методы, являются приближенными методами.
Пусть имеется точный корень уравнения (1) x’, превращающий уравнение в тождество
F(x’)=0.
Решая уравнение численным методом, мы находим приближенное значение корня x*,
которое отличается от точного на некоторую величину r, r = |x’-x*| называемую
абсолютной погрешностью.
Сущность итерационного метода заключается в следующем:
Задается начальное, возможно очень грубое, приближение к корню уравнения,
называемое нулевым приближением - x0.
Затем, используя x0, по так называемой итерационной формуле, своей для каждого метода,
находится следующее приближение к корню x1. Затем оценивается его погрешность r1.
Если эта погрешность нас устраивает, т.е. r1<e, где e - заранее заданное малое число,
называемое точностью, то говорят, что мы решили уравнение с точностьe, или что x1
является корнем нашего уравнения с точностьюe, если нет, то, повторяя вычисления по
итерационной формуле (или выполняя n количество итераций) находим
последовательность приближенных значений корня x1, x2, x3… xn.
Имеющих погрешности r1, r2, r3… rn.
Если эти значения с ростом n приближаются к точному значению корня x’ (погрешности
уменьшаются r1> r2> r3>… >rn.), то говорят, что итерационный процесс сходится.
Итак, численные методы решения нелинейного уравнения состоят из трех этапов:
·
отделение корня,
·
уточнения корня,
·
оценка погрешности.
Цель первого этапа – найти отрезок [a,b], на котором функция F(x) меняет знак. Если F(x)
непрерывна на[a,b], то уравнение (1) имеет хотя бы один корень на этом отрезке, если, к
тому же F(x)строго монотонна на[a,b], то корень единственный.
Отделение корней можно провести графически, построив график функции F(x), а можно
протабулировать функцию F(x) на достаточно большом участке числовой прямой с
достаточно большим шагом h, т. е. Вычислить значения F(x) начиная с некоторой точки
x0, двигаясь вправо с шагом h.
Как только обнаружится пара соседних значений F(xi-1), F(xi), имеющие разные знаки,
F(xi-1) * F(xi) < 0.
Говорят, что удалось отделить отрезок [a,b] =[xi-1,xi], содержащий корень. Уточнение
корня проводится подходящим численным методом.
Отделение корней
Отделение корней алгебраических
и трансцендентных уравнений
Пусть имеется уравнение вида
F(x) = 0, (2.1)
где F(x) — алгебраическая или трансцендентная функция.
Решить такое уравнение - значит установить, имеет ли оно корни, сколько корней, и найти
значения корней (либо точно, либо, если это невозможно, то с нужной точностью). Мы
ограничимся обсуждением методов поиска лишь действительных корней, не затрагивая
проблему корней комплексных.
Решение указанной задачи в достаточно общем случае начинается с отделения корней, т.
е. с установления:


количества корней;
наиболее «тесных» промежутков, каждый из которых содержит только один
корень.
Следует отметить, что универсальных приемов решения этой задачи, пригодных для
любых уравнений, не существует.
Если бы мы располагали графиком функции F(x), то примерное положение корней
уравнения (2.1) было бы очевидным — точки пересечения графика с осью абсцисс.
Однако построение графиков функций обычно и начинается с поиска ее нулей, т.е.
возникает замкнутый круг.
Тем не менее отделение корней во многих случаях можно произвести графически. Задачу
часто удается сильно упростить, заменив уравнение (2.1) равносильным ему уравнением
f1(x)=f2(x)
(2.2)
В этом случае строятся графики функций f1(x) и f2(x), а потом на оси х отмечаются
отрезки, локализующие абсциссы точек пересечения этих графиков.
Пример 2.1
Для графического отделения корней уравнения sin 2x - In x = 0 преобразуем его к
равносильному уравнению sin 2x = ln x и отдельно построим графики функций sin2x и lnx
(рис. 2.1).
Из графика вполне очевидно, что уравнение имеет единственный корень E, и этот корень
находится на отрезке [1; 1,5].
Рис. 2.1. Иллюстрация к отделению корней уравнения
При решении задачи об отделении корней бывают полезными следующие очевидные
положения:
1. Если непрерывная на отрезке [а; b] функция F(x) принимает на его концах значения
разных знаков (т.е. F(a)*F(b) < 0), то уравнение (2.1) имеет на этом отрезке по
меньшей мере один корень.
2. Если функция F(x) к тому же еще и монотонна, то корень на отрезке [а; b]
единственный.
Вычислим для проверки значения функции F(x) = sin 2x - ln x на концах отрезка [1; 1,5]:
F(l) = 0,909298; F(l,5) = -0,264344. Как видно, корень на отрезке [1; 1,5] действительно
имеется.
Рассмотренный прием позволяет при желании сузить отрезок, полученный графическим
способом. Так, в нашем примере имеем F(1,3) = 0,253138 > 0, так что отрезком, на
котором находится корень, можно считать [1,3; 1,5].
В простейших случаях графическое отделение корней можно осуществить вручную,
однако в более сложных случаях для исследования вопроса о наличии (и количестве)
корней уравнения на заданном отрезке целесообразнее воспользоваться
инструментальным пакетом или составить программу для компьютера на языке
программирования. Рассмотрим коротко суть идеи для применения указанных подходов.
Пусть имеется уравнение F(x) = 0, причем известно, что все интересующие вычислителя
корни находятся на отрезке [А; В], на котором функция F(x) определена, непрерывна и
F(A)*F(B) < 0. Требуется отделить корни уравнения, т.е. указать все отрезки [а;
b] принадлежащие [А; В], содержащие по одному корню.
Будем вычислять значения F(x), начиная с точки х-А, двигаясь вправо с некоторым
шагом h (рис. 2.2).
Как только обнаружится пара соседних значений F(x), имеющих разные знаки, и функция
F(x) монотонна на этом отрезке, так соответствующие значения аргумента х (предыдущее
и следующее) можно считать концами отрезка, содержащего корень.
Рис. 2.2. Иллюстрация к процессу отделения корня
Пример 2.2
Построить графическую иллюстрацию и локализовать корни уравнения cos x = 0,1х на
отрезке [-10; 10] с шагом 0,1.
Решим эту задачу с помощью Excel (рис. 2.3).
Рис. 2.3. Отделение корней функции с помощью ТП Excel
Кроме графика функции у = cos х - 0,1 х на экран компьютера выводится таблица
табулирования, из которой и выбирается окончательный результат — семь отрезков
отделения корня с шагом 0,1: -9,7 < Х\ < -9,6; -9,0 < х2 < -8,9; -4,3 < х3 < -4,2; -1,8 < х4 < 1,7; 1,4 < х5 < 1,5; 5,2 < x6 < 5,3; 7,0 < х7 < 7,1.
Рассмотрим решение этой же задачи отделения корней уравнения cosx = 0,1х на отрезке [10; 10] с помощью программы для компьютера.
Общая схема соответствующего алгоритма изображена на рис. 2.4. Результатом решения
поставленной задачи будут выводимые на экран (или на печать) в цикле значения
параметров х1 и х2 (концов выделенных отрезков).
По схеме алгоритма отделения корней легко составить программу.
Ниже приведена программа отделения корней уравнения на языке Turbo Pascal.
Рис. 2.4. Блок-схема алгоритма отделения корней уравнения F(x) = О
Результаты выполнения программы:
Как видим, результатом решения задачи отделения корней, как и в примере 2.2, является
последовательный вывод семи отрезков, содержащих по одному корню. Для того чтобы
эту же программу использовать для отделения корней другого уравнения, достаточно
заменить в тексте программы выражение для функции f.
Обратим внимание на то, что надежность рассмотренного алгоритма отделения корней
уравнения зависит как от характера функции F(x), так и от выбранной величины шага h.
Действительно, если при достаточно малом значении h на концах текущего отрезка [х; х +
И\ функция F(x) принимает значения одного знака, естественно ожидать, что уравнение
F{x) = 0 корней на этом отрезке не имеет. Это, однако, не всегда так: при несоблюдении
условия монотонности функции F(x) на отрезке [х; х + h] могут оказаться корни уравнения
(рис. 2.5, а). Не один, а несколько корней могут оказаться на отрезке [х; х + h] и при
соблюдении условия F(A)*F(B) < 0 (рис. 2.5, б). Предвидя подобные случаи, следует
выбирать при отделении корней достаточно малые значения h.
Рис. 2.5. Зависимость количества корней функции F(x) на отрезке [х, х+ h]
от характера функции и величины шага h:
а — функция не меняет знака на отрезке [х, х + h], но не монотонна,
поэтому на отрезке [х, х+ h] имеются корни;
б — функция на отрезке [х, х + h] меняет знак, но немонотонна,
поэтому корней на отрезке не один, а несколько.
Контрольные вопросы
1. Что означает «решить уравнение аналитически» и «решить уравнение численно»?
2. В чем заключается задача отделения корней?
3. В чем суть графического метода отделения корней? Какие свойства функции одной
переменной используются для проверки правильности отделения корня и его
единственности на отрезке?
Упражнения
Отделить действительные корни уравнений: a) lg x + 6 = х2; б) x sin x -1 = 0:
1) графическим методом (схематически, на бумаге);
2) с помощью ТП Excel;
3) с помощью программы для компьютера.
Метод половинного деления
УТОЧНЕНИЕ КОРНЯ УРАВНЕНИЯ МЕТОДОМ ПОЛОВИННОГО ДЕЛЕНИЯ
При решении уравнения, как правило, заранее задается допустимая погрешность е
приближенного значения корня E. В процессе уточнения корней требуется найти их
приближенные значения, отличающиеся от точных не более чем на е.
Описанный выше способ табулирования может рассматриваться и как способ уточнения
корня (хотя и крайне неэффективный). При этом можно либо постепенно уменьшать шаг
табулирования, приближая его к значению е, либо сделать это сразу, полагая h = е. В
любом случае получим b - а < е. Тогда в качестве искомого значения корня можно
выбрать середину этого отрезка, т.е. положить E = (а + b)/2.
Гораздо более эффективным, чем табулирование с постоянным шагом, является так
называемый метод половинного деления.
Пусть уравнение F(x)=0 имеет на отрезке [а; b] единственный корень, причем функция
F(x) на этом отрезке непрерывна. Разделим отрезок [а; b] пополам точкой с = (а + b)/2.
Если F(c) <> 0 (что практически наиболее вероятно), то возможны два случая: F(x) Меняет
знак либо на отрезке [а; с] (рис. 2.6, а), либо на отрезке [a; b] (рис. 2.6, б). Выбирая в
каждом случае тот из отрезков, на котором функция меняет знак, и продолжая процесс
половинного деления дальше, можно дойти до сколь угодно малого отрезка, содержащего
корень уравнения.
Рис. 2.6. К решению уравнения F(x) методом половинного деления:
а — функция F(x) меняет знак на отрезке [а; с];
б — функция F(x) меняет знак на отрезке [c; b]
Метод половинного деления вполне можно использовать как метод решения уравнения с
заданной точностью. Действительно, если на каком-то этапе процесса получен отрезок [а;
b], содержащий корень, то, приняв приближенно х = (а + b)/2, получим ошибку, не
превышающую значения
(заметим, что речь в данном случае вдет о погрешности метода). Метод половинного
деления требует утомительных ручных вычислений, однако он легко реализуется с
помощью программы на компьютере (блок-схему алгоритма см. на рис. 2.7). Отметим, что
даже если на каком-то этапе деления отрезка пополам получится F(c) = 0, это не приведет
к сбою алгоритма.
Рис. 2.7. Блок-схема алгоритма уточнения корня уравнения F(x)=0 на отрезке [а; b] с
точностью е методом половинного деления
Пример 2.3.
Уравнение sin 2х - ln х = 0 имеет единственный корень на отрезке [1,3; 1,5] (см. пример
2.1). Решим это уравнение с точностью до 1*10-4 методом половинного деления с
помощью программы для компьютера.
В соответствии с блок-схемой алгоритма, изображенной на рис. 2.7, программа на языке
Turbo Pascal имеет вид:
В приведенной программе заданная точность обозначена eps, a граница погрешности
текущего значения корня определяется через разность b - а. Еще раз напомним, что эта
разность отождествлена в алгоритме с погрешностью метода; вычислительная же
погрешность значения х как результат ошибки вычисления по формуле х= (а + b)/2 в
программе в явном виде не регистрируется И связана только с погрешностью машинного
представления.
При этом мы исходим из того, что точность машинного представления значительно выше
запрашиваемой точности eps (т.е. полная погрешность значения корня отождествляется с
погрешностью метода), поэтому выдаваемый программой числовой результат округляется
с помощью модуля okrugl до цифр, верных в широком смысле, по запрашиваемой
точности eps.
Прим. Оформление конструкции okrugl в виде модуля связано с тем, что обращение к ней
будет происходить неоднократно.
Результат работы программы:
Введите a, b, eps
1.3 1.5 0.0001
х= 1.3995 n=4
Округление значения корня проведено до четырех знаков после запятой. Если ввести
значение е = 0,000001, результат будет другой:
Введите a, b, eps
1.3 1.5 0.000001
х= 1.399429 n=6
При алгоритмизации метода половинного деления остановить процедуру уточнения корня
можно и другим способом. Зная допустимое значение погрешности е:
легко вычислить количество шагов N(e) получения последовательных приближений:
Учитывая, что N - число целое, окончательно получим
где, как это принято, квадратные скобки означают целую часть числа.
Так, для уравнения, рассмотренного в примере 2.1, положив а = 1,3; b= 1,5 и е = 1*10-4,
получаем
Если же положить е = 1*10-6, то получим N=18. Зная N, можно в алгоритме заменить цикл
с постусловием на цикл с параметром, ограничив количество делений отрезка числом N.
Контрольные вопросы
1. В чем состоит основная идея метода половинного деления?
2. Может ли метод половинного деления дать точное значение корня уравнения?
Упражнения
1. Уточнить методом половинного деления наименьший по модулю и отличный от
нуля корень уравнения x sin x - 1 = 0 с точностью
до 1*10-4, используя: а) калькулятор; б) программы, приведенные выше.
2. Разработать алгоритм решения уравнения методом половинного деления,
использующий цикл с параметром и формулу для вычисления количества
последовательных приближений N(s) по заданной величине е.
Лабораторная работа
Решить уравнение F(x)=0 c точностью e методом половинного деления,
e=10-3
1. x2 + ex = 2
2. 3 sin(x + 0,7) - 0,5x = 0
3. cos x – (x - 1)2 = 0
4. 5 sin x = x + ln(x)
5. x2 + cos(2 + x) = 1
6. x ln(x + 1) = 1
7. ln (x + 1) - (x - 2)2 = 0
8. 2 ln x – 0,5 x + 1 = 0
9. (x - 2) ln(x) = 1
10. sin(x - 0,5) - 2x + 0,5 = 0
11. cos (x + 0,3) = x2
12. x2 - 3 sin x = 0
13. x ln(x + 2) = 2
14. x3 - 0,5 - sin x = 0
15. sin (x + 1) = 0,2x
16. 0,3 e0,6 x - x = 0
Этапы решения прикладной задачи
Анализ ошибок (или, как говорят чаще, погрешностей) является неотъемлемой частью
процесса решения прикладной задачи. Часть этих погрешностей связана с вычислениями,
которые в наше время производятся на ЭВМ: в простейших случаях - на
микрокалькуляторах (МК), а в достаточно сложных — на программируемых ЭВМ
(компьютерах).
С увеличением скорости производства вычислений и с вовлечением в счетный процесс
чисел с большим количеством значащих цифр, как это делается в ЭВМ, потребность в
оценке фактической точности результата лишь возрастает. При этом следует правильно
рассматривать сам термин «ошибка», который в данном случае выражает объективно
неизбежную погрешность, сопровождающую процесс решения задачи, начиная с
измерения исходных значений.
«Ошибка» в этом понимании не есть что-то неправильное, она не возникает
исключительно в результате промахов вычислителя; от этих ошибок нельзя избавиться
только путем усиления внимания к процессу измерений и вычислений. Задача анализа
ошибок сводится, по существу, к отысканию их надежных границ и к соблюдению
условий, обеспечивающих их минимальное распространение.
Возникновение, накопление и распространение ошибок проходят через все стадии
решения прикладной задачи, начиная с получения значений исходных данных. В
достаточно общем случае процесс решения задач с использованием ЭВМ состоит из
следующих этапов (рис. 1.1):
1. постановка задачи и построение математической модели (этап
моделирования);
2. выбор метода и разработка алгоритма (этап алгоритмизации);
3. запись алгоритма на языке, понятном ЭВМ (этап программирования);
4. отладка и исполнение программы на ЭВМ (этап реализации);
5. анализ полученных результатов (этап интерпретации).
Рис. 1.1. Общая схема процесса компьютерного математического
моделирования
Рассмотрим кратко содержание перечисленных этапов решения прикладной задачи и
характер возникающих при этом ошибок.
Фабула практических задач изначально связана не с идеальными, а с реальными
объектами — производственными процессами и явлениями природы, физическими
закономерностями, экономическими отношениями и т. п. По этой причине решение
задачи обычно начинается с описания исходных данных и целей на языке строго
определенных математических понятий.
Точную формулировку условий и целей решения называют математической
постановкой задачи. Выделяя наиболее существенные свойства реального объекта,
исследователь описывает их с помощью математических соотношений. Этот этап
называют построением математической модели, или моделированием.
Построение математической модели является наиболее сложным и ответственным этапом
решения. Если выбранная математическая модель слишком грубо отражает изучаемое
явление, то какие бы методы решения вслед за этим ни применялись, найденные значения
не будут отвечать условиям реальной задачи и окажутся бесполезными.
Математическая модель может иметь вид уравнения, системы уравнений или быть
выраженной в форме иных, как угодно сложных, математических структур или
соотношений самой различной природы. Математические модели, в частности, могут
быть непрерывными или дискретными, в зависимости от того, какими величинами —
непрерывными или дискретными — они описаны.
По той причине, что математическая модель отражает лишь некоторые черты реального
объекта или явления, в ряде случаев становятся актуальными вопросы существования и
единственности решения в рамках математической модели. Выяснение в исходной
информации необходимых и достаточных условий для существования и единственности
решения имеет большое практическое значение, так как определяет цикл тех наблюдений,
которые должны быть запроектированы для количественной реализации задачи.
В числе общетеоретических вопросов можно назвать также вопрос об устойчивости
решений по входным условиям задачи (такую устойчивость также называют
корректностью решения).
Вслед за построением математической модели исследователь разрабатывает (или, что
бывает чаще, подбирает из числа известных) метод решения задачи и составляет
алгоритмы. Этап поиска и разработки алгоритма решения задачи в рамках заданной
математической модели называют алгоритмизацией. На этом этапе могут использоваться
любые подходящие средства представления алгоритмов: словесные описания, формулы,
схемы и т.п.
Во многих случаях вслед за построением алгоритма выполняют так называемый
контрольный просчет — грубую прикидку ожидаемых результатов, которые
используются затем для анализа решения.
Особые трудности на этапе разработки алгоритма заключаются в поиске метода решения
задачи. Дело в том, что уже для достаточно простых моделей чаще всего не удается
получить результат решения в аналитической форме.
Пусть, к примеру, задача свелась к решению уравнения с одной переменной: x - tgx = 0.
При всей тривиальности этой задачи выразить корни уравнения путем аналитических
преобразований не удается, и весь арсенал методов «точной» математики оказывается
здесь беспомощным. В таких случаях приходится использовать приближенные
математические методы, позволяющие получать удовлетворительные результаты.
Основными методами решения подобных задач являются численные методы, при
использовании которых результат получается путем вычислений. По этой причине
наиболее естественный путь реализации численных методов - это использование ЭВМ.
На следующем этапе алгоритм задачи записывается на языке, понятном ЭВМ. Это - этап
программирования. В простейших случаях может оказаться, что на этом этапе вовсе не
составляется новая программа для ЭВМ, а дело сводится, например, к использованию
имеющегося программного обеспечения.
После отладки и тестирования программы (если ее все же пришлось создавать) следует
этап реализации — исполнение программы на ЭВМ и получение результатов решения.
Время, требуемое на прохождение этого этапа, зависит от объема вычислений и
быстродействия ЭВМ.
Завершающий этап решения задачи — это анализ, или интерпретация результатов. На
этом этапе происходит осмысливание полученных результатов, сопоставление их с
результатами контрольного просчета, а также с данными, полученными
экспериментальным путем. При этом одни результаты могут оказаться приемлемыми, а
другие — противоречащими смыслу реальной задачи; такие решения следует отбросить.
Высшим критерием пригодности полученных результатов в конечном итоге является
практика.
Контрольные вопросы
1. Из каких основных этапов состоит процесс решения задачи с помощью ЭВМ?
Дайте характеристику каждого этапа.
Классификация ошибок
В условиях использования ЭВМ численные методы выступают как мощное
математическое средство решения практических задач. При этом важно иметь в виду, что
сам по себе фактор использования ЭВМ не упрощает, а в некотором смысле даже
усложняет (ввиду резкого возрастания количества выполняемых операций) оценку
точности получаемых результатов.
Суть возникающих здесь проблем точно подмечена в известном принципе Питера: «ЭВМ
многократно увеличивает некомпетентность вычислителя». Из этого остроумного
замечания следует, что, используя для решения задачи ЭВМ, вычислитель должен не
столько полагаться на могущество вычислительной техники, сколько помнить о том, что в
конечном итоге он получает на выходе.
На общую погрешность задачи, как это уже отмечалось, влияет целый ряд факторов.
Отметим основные из них, рассмотрев общий ход решения задачи - от построения
математической модели до производства вычислений.
Пусть R - точное значение результата решения некоторой задачи. Из-за
несоответствия построенной математической модели реальной ситуации, а также по
причине неточности исходных данных вместо R будет получен результат, который
обозначим R1. Образовавшаяся таким образом погрешность е1 = R -R1 уже не может быть
устранена в ходе последующих вычислений (так называемая неустранимая
погрешность).
Приступив к решению задачи в рамках математической модели, мы избираем
приближенный (например, численный) метод и, еще не приступив к вычислениям,
допускаем новую погрешность, приводящую к получению результата R2 (вместо R1).
Погрешность е2 = R2 - R1 называют погрешностью метода.
Действия над числами вносят дополнительную погрешность. Например, если складывать
два числа с одинаковыми погрешностями, то погрешность суммы будет, вообще говоря,
больше погрешности каждого из слагаемых.
Это обстоятельство, а также неизбежность округлений (в случае использования ЭВМ
принудительное округление диктуется конечностью разрядной сетки машины) приводят к
получению результата R3, отличающегося от R2 на величину вычислительной
погрешности е3 = R3 - R2.
Полная погрешность е, очевидно, получается как сумма всех погрешностей:
е = R - R3 = (R - R1) + (R1 - R2) + (R2 - R3) = е1 + е2 + е3.
При решении конкретных задач те или иные виды погрешностей могут отсутствовать или
незначительно влиять на окончательный результат. Тем не менее, для исчерпывающего
представления о точности окончательного результата в каждом случае необходим полный
анализ погрешностей всех видов.
Это в полной мере относится и к неустранимой погрешности — погрешности
математической модели. Располагая несовершенной математической моделью,
вычислитель должен каким-то способом составить представление о величине
неустранимой погрешности. Понятно, что в условиях слишком грубой модели не имеет
смысла проводить утонченный анализ вычислительных ошибок.
Отсюда следует, что оценка неустранимой погрешности может послужить веским
доводом для снижения требований к точности последующих вычислений, что, в свою
очередь, может сделать их менее трудоемкими.
К числу причин, искажающих окончательный результат, следует отнести также
всевозможные промахи, допускаемые иногда в процессе решения: использование не тех
исходных данных, неверной программы вычислений и т.п. Возможны также ошибки из-за
сбоев, возникающих в самом компьютере (бывшие обычным делом в компьютерах
первого поколения и исключительно редкие — для современных ЭВМ).
Средством борьбы против промахов разного рода служит предварительная, грубая
прикидка ожидаемого результата. Учитывая быстродействие ЭВМ, часто используют
способ двойных вычислений, а также специально организуемые системы текущего
контроля, связанные обычно с характером решаемой задачи.
Очевидно, что для исчерпывающего представления о погрешности окончательного
результата решения задач следует учитывать влияние всех типов ошибок. Мы
рассмотрели этот вопрос применительно к достаточной общей схеме решения прикладной
задачи, включающей этапы построения математической (или шире - информационноматематической) модели, выбор метода, алгоритмизации и программирования,
интерпретации результатов.
Во многих случаях исследователь может выбрать более короткий путь, исключающий
часть из перечисленных выше этапов и резко сокращающий затраты на
программирование. Речь идет об использовании так называемых компьютерных
математических инструментов — программных пакетов, предназначенных как для
производства сложных вычислений, так и для быстрого решения различных
математических, научно-технических, статистических, экономических и других задач:
Excel, MatLaB, MathCad, Derive, Maple, Mathematica и др.
Работа с использованием этих пакетов также предполагает обращение к вопросам
точности получения результатов. Особенность применения специализированных пакетов
заключается в том, что внутренние механизмы их работы большей частью скрыты для
пользователя.
В любом случае проведение анализа ошибок, как и общее понимание проблемы точности
расчетов, невозможно без ознакомления с начальными понятиями методики
приближенных вычислений.
Контрольные вопросы
1. Из каких частей складывается общая погрешность решения задачи?
Абсолютная и относительная погрешности
Пусть X — точное значение некоторой величины, а х — наилучшее из известных
приближений. В этом случае ошибка (или погрешность) приближения х определяется
разностью Х-х. Обычно знак этой ошибки не имеет решающего значения, поэтому
рассматривают абсолютную величину ошибки:
ех = |Х-x|
(1.2)
Величина ех, называемая абсолютной погрешностью приближенного значения х, в
большинстве случаев остается неизвестной, так как для ее вычисления нужно точное
значение X. Вместе с тем на практике обычно удается установить верхнюю границу
абсолютной погрешности, т.е. такое (по возможности наименьшее) число dx, для которого
справедливо неравенство
dх => |Х-х|
(1.3)
Число dx в этом случае называют предельной абсолютной погрешностью (или границей
абсолютной погрешности) приближения х.
Таким образом, предельная абсолютная погрешность приближенного числа x - это всякое
число dх, не меньшее абсолютной погрешности ех этого числа.
Пример 1.2. Возьмем число Пи - рi=3,14159265358.... Если вызвать рi на индикатор 8разрядного МК, получим приближение этого числа: рi' = 3,1415926.
Попытаемся выразить абсолютную погрешность значения рi': ерi' = |рi-рi'| =
0,00000005358.... Получили бесконечную дробь, непригодную для практических расчетов.
Очевидно, однако, что ерi' < 0,00000006, следовательно, число 0,00000006 = 0,6*10-7 можно
считать предельной абсолютной погрешностью приближения рi', используемого МК
вместо числа р: d рi'= 0,6· 10-7.
Неравенство (1.3) позволяет установить приближения к точному значению X по
недостатку и избытку:
x - dх <= X <= x + dх,
(1.4)
которые могут рассматриваться как одна из возможных пар значений соответственно
нижней границы (НГ) и верхней границы (ВГ) приближения х:
НГх= х - dх; ВГх= х + dх.
(1.5)
Во многих случаях значения границы абсолютной ошибки dx, так же как и наилучшие
значения приближения х, получаются на практике в результате измерений. Пусть, к
примеру, в результате повторных измерений одной и той же величины получены
значения: 5,2; 5,3; 5,4; 5,3. В этом случае естественно принять за наилучшее приближение
измеряемой величины среднее значение х= 5,3.
Очевидно также, что граничными значениями величины x в данном случае будут НГХ =
5,2, ВГХ= 5,4, а граница абсолютной погрешности dх может быть определена как половина
длины интервала, образуемого граничными значениями НГХ и ВГХ, т.е.
dx = (5,4 - 5,2)/2 = 0,1.
По абсолютной погрешности нельзя в полной мере судить о точности измерений или
вычислений. Качество приближения измеряется с помощью относительной
погрешности, которая определяется как отношение ошибки ех к модулю значения X
(когда оно неизвестно, то к модулю приближения х).
Предельной относительной погрешностью (или границей относительной погрешности) бх
приближенного числа называется отношение предельной абсолютной погрешности к
абсолютному значению приближения х:
бх = dx/|x|
(1.6)
Формула (1.6) позволяет при необходимости выражать абсолютную погрешность через
относительную:
dx = |x|*бх
(1.7)
Относительную погрешность выражают обычно в процентах.
Пример 1.3. Вычислить границу относительной погрешности приближения к числу рi,
используемого 8-разрядным МК (см. пример 1.2).
Учитывая, что 0,6*10-7 < 0,2*10-7, можно принять брi' = 0,000002%.
Это чрезвычайно высокая точность, если учесть, что для ординарных технических
расчетов считается приемлемым уровень точности от 0,1 до 5%.
Контрольные вопросы
1. Что такое абсолютная погрешность приближенного значения величины? граница
абсолютной погрешности?
2. Как с помощью границы абсолютной погрешности Дч известного приближенного
значения ч можно указать возможные значения его нижней и верхней границ?
3. Каким образом определяется граница абсолютной погрешности Дч для
приближенного значения х, получаемого в результате многократных измерений?
4. Что такое относительная погрешность приближенного значения величины?
граница относительной погрешности?
5. Как можно вычислить абсолютную погрешность приближения х, если известна его
относительная погрешность?
Упражнения
1. В результате измерения длины стола линейкой с сантиметровыми делениями
установлено, что значение длины находится между делениями 63 и 64 см. Указать
границы абсолютной и относительной погрешностей значения длины, если за
наилучшее ее приближение принять ее среднее значение 63,5 см.
2. В результате пятикратных измерений периода колебаний маятника студент
получил результаты (в секундах): 4,8; 5,0; 4,9; 4,8; 5,0.
Основываясь на этих измерениях, установить наилучшее приближение значения
периода и границы абсолютной и относительной погрешностей.
Правильная запись и округление чисел
Цифра числа называется верной (в широком смысле), если абсолютная погрешность
этого числа не превосходит единицы разряда, в котором стоит эта цифра.
Пример 1.4.
а). Пусть а = 2,91385, da = 0,0097. В числе а верны в широком смысле цифры 2, 9, 1.
б). Возьмем в качестве приближения к числу р = 3,141592... число р'=3,142. Тогда |р-р'|<
0,001 = dр' (рис. 1.7), откуда следует, что в приближенном значении рi'= 3,142 все цифры
являются верными.
в). Вычислим на 8-разрядном МК частное точных чисел 3,2 и 2,3, получим ответ:
1,3913043. Ответ содержит ошибку, поскольку разрядная сетка МК не вместила всех цифр
результата и все разряды, начиная с восьмого, были опущены. (В том, что ответ неточен,
легко убедиться, проверив деление умножением: 1,3913043*2,3 = 3,9999998.) Не зная
истинного значения допущенной ошибки, вычислитель, однако, может быть уверен, что
оно не превышает единицы самого младшего из изображенных на индикаторе разряда
результата. Следовательно, в полученном результате все цифры верны.
Отметим, что первая отброшенная (неверная) цифра часто называется сомнительной.
Говорят, что приближенное данное записано правильно, если в его записи все цифры
верные. Это понятно - сохранять в записи чисел неверные цифры нет смысла.
Но важно и другое:
если число записано правильно, то по одной только его записи в виде десятичной
дроби можно судить о точности этого числа.
Пусть, к примеру, записано приближенное число а=16,784, в котором все цифры верны.
Из того, что верна последняя цифра 4, которая стоит в разряде тысячных, следует, что
абсолютная погрешность значения а не превышает 0,001. Это значит, что можно
принять da = 0,001, т.е. а=1б,784±0,001.
Очевидно, что правильная запись приближенных данных не только допускает, но и
обязывает выписывать нули в последних разрядах, если эти нули являются выражением
верных цифр. Например, в записи b=109,070 нуль в конце означает, что цифра в разряде
тысячных верна и она равна нулю. Предельной абсолютной погрешностью значения b, как
следует из записи, можно считать db = 0,001. Для сравнения можно заметить, что значение
с=109,07 является менее точным, так как из его записи приходится принять, что dс=0,01.
Значащими цифрами в записи числа называются все цифры в его десятичном
изображении, отличные от нуля, и нули, если они расположены между значащими
цифрами или стоят в конце для выражения верных знаков.
Можно сказать короче: значащими цифрами числа являются все цифры в его правильной
записи, начиная с первой ненулевой слева.
Пример 1.5.
0,2409 - четыре значащие цифры; 24,09 - четыре значащие цифры; 100,700 - шесть
значащих цифр.
Выдача числовых значений в ЭВМ, как правило, устроена таким образом, что нули в
конце записи числа, даже если они верные, не сообщаются. Это означает, что если,
например, ЭВМ показывает результат 247,064 и в то же время известно, что в этом
результате верными должны быть 8 значащих цифр, то полученный ответ следует
дополнить двумя нулями: 247,06400.
В процессе вычислений часто происходит округление чисел, т. е. замена чисел их
значениями с меньшим количеством значащих цифр.
При округлении возникает погрешность, называемая погрешностью округления. Пусть x данное число, а х1 - результат округления. Погрешность округления определяется как
модуль разности прежнего и нового значений числа:
dокр = |x-x1| (1.8)
В отдельных случаях вместо dокр приходится использовать его верхнюю оценку.
Пример 1.6.
Выполним на 8-разрядном МК действие 1/6. На индикаторе высветится число 0,1666666.
Произошло автоматическое округление бесконечной десятичной дроби 0,1(6) до
количества разрядов, вмещающихся в регистре МК. При этом можно принять dокр = 0,7 ·
10-7.
Рассмотренный случай «принудительного» округления называют округлением методом
отбрасывания. Очевидно, что сам по себе метод отбрасывания оставляет все сохраняемые
цифры округленного числа верными.
Если вычисления ведутся с точностью меньшей, чем машинная точность, целесообразнее
пользоваться способом симметрического округления, который приводит к меньшей
величине округления, чем способ отбрасывания.
Симметрическое округление выполняется по следующим правилам:
если первая слева из отбрасываемых цифр меньше 5, то сохраняемые десятичные знаки
остаются без изменения;
если первая слева из отбрасываемых цифр больше или равна 5, то последняя сохраняемая
цифра увеличивается на единицу.
Из правил симметрического округления следует, что его погрешность не превышает
половины единицы последнего сохраняемого разряда. Это обстоятельство позволяет вести
счет с точностью большей, чем единица последнего сохраняемого разряда. По этой
причине наряду с понятием «верная цифра в широком смысле», соответствующем
методике округления путем отбрасывания, используется понятие «цифра, верная в
строгом смысле», применяемое в вычислениях с симметрическим округлением.
Отметим, что погрешности принято записывать с одной значащей цифрой (редко — с
двумя). Кроме того, при округлении погрешности обычные правила округления
неприменимы: погрешности, по понятной причине, всегда округляют с завышением.
Цифра числа называется верной в строгом смысле, если абсолютная погрешность этого
числа не превосходит половины единицы разряда, в котором стоит эта цифра.
Пример 1.7. Вычислим ч = %/236. Получим ч = 15,362291. Округлим результат до десятых
методом симметрического округления: х{ = 15,4; Д*! = 0,04. Все цифры числа х{ верны в
строгом смысле.
Абсолютная погрешность числа хь получаемого в результате округления приближенного
значения х, складывается из абсолютной погрешности первоначального числа ч
(являющегося приближением точного значения X) и погрешности округления.
Действительно, из неравенства \Х - Х\ | < \Х - х\ + \х - Х\ \ < Ах + Дпкс следует, что если в
результате округления приближенного числа ч получено значение хи то предельной
абсолютной погрешностью числа Чй можно считать сумму предельной абсолютной
погрешности числа ч и погрешности округления.
Пример 1.8. Пусть в приближенном значении а = 16,395 все цифры верны в широком
смысле. Округлим а до сотых: а{ = 16,40. Погрешность округления Дпкс = 0,005. Для
нахождения полной погрешности Дий нужно сложить Дпкс с погрешностью исходного
зна22
чения аь которая в данном случае может быть найдена из условия, что все цифры в записи
а верны: Дб = 0,001. Таким образом, Ай1 = Дб + Дпкс = 0,001 + 0,005 = 0,006. Отсюда
следует, что в значении а\ = 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 все цифры верны в строгом смысле.
Округлить заданные числа до сотых и определить в округленных значениях количество
цифр, верных в строгом смысле.
Download