Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Metodichka_po_kursovoy_rabote

.pdf
Скачиваний:
16
Добавлен:
14.03.2016
Размер:
1.35 Mб
Скачать

21

Приложение 1

Пример возможного выполнения раздела «Анализ, формальная постановка и

выбор метода решения»

( http://physics.herzen.spb.ru/library/01/01/nm_labs/nonlineareq.htm )

ЧИСЛЕННОЕ РЕШЕНИЕ НЕЛИНЕЙНЫХ УРАВНЕНИЙ

1.Понятия и определения

1.Постановка задачи. Решение нелинейных уравнений с одним неизвестным является одной из важных математических задач, возникающих в различных разделах физики, химии, биологии и других областях науки и техники.

В общем случае нелинейное уравнение с одним неизвестным можно записать в виде:

f (x) 0 ,

(2.1)

где f (x) – некоторая непрерывная функция аргумента x.

 

Всякое число x* , обращающее функцию f (x) в нуль, т.е. при котором

f (x* ) 0 ,

называется корнем уравнения (2.1). Если в точке x x* наряду с функцией обращаются в ноль и

ее производные до (k 1) порядка включительно, то число x* называют корнем kкратности. Однократный корень также называют простым. В дальнейшем мы будем говорить именно о простых корнях.

В зависимости от вида функции f (x) нелинейные уравнения подразделяются на два класса – алгебраические и трансцендентные1[1].

Уравнение (2.1) называется алгебраическим, если функция f (x) является алгебраической функцией. Алгебраическое уравнение всегда может быть представлено в канонической форме:

f (x) a

0

a x a

2

x2

a

n

xn 0

,

(2.2)

 

1

 

 

 

где a0 , a1, , an – коэффициенты уравнения. Показатель n называют степенью алгебраического уравнения.

Если функция

f (x) содержит тригонометрические, показательные, логарифмические и

другие функции,

не являющиеся алгебраическими, то уравнение (2.1) называется

трансцендентным. Примерами трансцендентных уравнений являются:

4cos(x) 0.3x 0;

2x 2cos(x) 0;

lg( x 5) cos(x)

.

 

 

 

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

Однако подавляющее большинство нелинейных уравнений, встречающихся на практике, не удается решить прямыми методами. Даже для алгебраического уравнения выше четвертой

.

22

степени не удается получить аналитического решения в виде формулы с конечным числом арифметических действий. Во всех таких случаях приходится обращаться к численным методам, позволяющим получить приближенные значения корней с любой заданной точностью2[2].

При численном подходе задача о решении нелинейных уравнений разбивается на два этапа: локализация (отделение) корней, т.е. нахождение таких отрезков на оси x, в пределах которых содержится один единственный корень, и уточнение корней, т.е. вычисление приближенных значений корней с заданной точностью.

y = f(x)

f(b)

a

b x

f(a)

Рис. 2.1. Отделение корней. Функция

f(x) не монотонна на отрезке [a, b].

2. Локализация корней. Для отделения корней уравнения (2.1) необходимо иметь критерий, позволяющий убедится, что, во-первых, на

рассматриваемом отрезке [a,b] имеется корень, а, во-вторых, что этот корень единственный на указанном отрезке. Если функция f (x) непрерывна на отрезке [a,b], а на концах отрезка её

значения имеют разные знаки f (a) f (b) 0 , то на этом отрезке расположен, по крайней мере, один корень. Это условие (как видно из рисунка 2.1) не обеспечивает единственности корня. Достаточным дополнительным условием, обеспечивающем единственность корня на

отрезке [a,b] является требование монотонности функции на этом отрезке. В качестве признака монотонности функции можно воспользоваться условием знакопостоянства первой производной

f (x) .

Таким образом, если на отрезке [a,b] функция непрерывна и монотонна, а ее значения на концах отрезка имеют разные знаки, то на рассматриваемом отрезке существует один и только один корень. Заметим, что под этот критерий не подпадают кратные корни уравнений, например,

очевидный корень уравнения x2 0 .

Воспользовавшись этим критерием можно отделить корни аналитическим способом, находя интервалы монотонности функции.

Отделение корней можно выполнить графически, если удается построить график функции

y f (x) . В ряде случае бывает

удобно заменить уравнение f (x) 0 эквивалентным

уравнением вида f1(x) f2 (x) .

Корни этого уравнения определяются абсциссами точек

пересечения графиков функций y f1(x) и y f2 (x) .

2[2] К таким случаям следует отнести и те, в которых, хотя и существуют формулы для получения точного решения, но они столь громоздки, что использование приближенных методов оказывается более предпочтительным. Это относится, например, к алгебраическим уравнениям третьей и четвертой степени.

Рис. 2.3. Табличный способ локализации корней.
могут оказаться и при выполнении условия

+

x

x + h

x

а)

Рис. 2.4.

В качестве примера рассмотрим уравнение

sin 2x ln x 0. Переходя

к эквивалентному

уравнению sin 2x ln x

построим

графики

функций y sin 2x и y ln x (рис. 2.2)

 

 

Из графика видно, что

уравнение

содержит

один корень, расположенный в интервале

1,

.

2

Отделение корней можно также выполнить табличным способом. Допустим, что все интересующие нас корни уравнения (2.1) находятся

x

 

 

 

23

 

x + h

 

x

 

 

 

 

б)

 

 

y

 

 

 

1

 

 

y = ln x

 

 

 

 

1

 

 

0

x*

e

x

y = sin 2x

Рис. 2.2. Графическое отделение корней уравнения sin 2x – ln

на отрезке [ A, B]. Выбор этого отрезка (интервала поиска корней) может быть сделан, например, на основе анализа конкретной физической или иной задачи. Будем вычислять

значения f (x) , начиная с точки x1 A , двигаясь вправо с некоторым шагом h (рис. 2.3). Как

только обнаруживается пара соседних значений f (x) , имеющих разные знаки, так соответствующие значения аргумента x можно считать границами отрезка, содержащего корень.

Надежность рассмотренного подхода к отделению корней уравнений зависит как от характера функции f (x) , так и от выбранной величины шага h. Действительно, если при достаточно малом значении h ( h | B A |) на границах текущего отрезка [x; x h] функция

f (x) принимает значения одного знака, то естественно ожидать, что уравнение f (x) 0 корней на этом отрезке не имеет. Однако, это не всегда так: при несоблюдении условия

монотонности функции f (x) на отрезке [x; x h] могут оказаться корни уравнения (рис. 2.4а).

Также несколько корней на отрезке [x; x h]

f (x) f (x h) 0 (рис. 2.4б). Предвидя подобные ситуации, следует выбирать достаточно малые значения h.

Поскольку данный способ предполагает выполнение лишь элементарных арифметических и логических операций, количество которых может быть велико при малых значениях h, для его

реализации

целесообразно

использовать

 

 

 

 

вычислительные возможности компьютера.

 

 

y = f(x)

 

Отделяя таким образом корни, мы, по сути,

 

 

 

 

 

 

получаем их приближенные значения с точностью до

 

h h

 

выбранного шага. Так, например, если в

качестве

A

 

 

 

 

 

 

 

приближенного

значения корня взять

середину

 

 

 

x

 

B

отрезка локализации, то абсолютная погрешность

 

 

 

 

 

этого значения не будет превосходить половины шага

 

 

 

 

поиска (h/2). Уменьшая шаг в окрестности каждого

 

 

 

 

корня, можно,

в принципе,

повысить

точность

 

 

 

 

отделения корней до любого наперед заданного значения. Однако такой способ требует большого объема вычислений. Поэтому при проведении

численных экспериментов с варьированием параметров задачи, когда приходится многократно

24

осуществлять поиск корней, подобный метод не годится для уточнения корней и используется только для отделения (локализации) корней, т.е. определения начальных приближений к ним. Уточнение корней проводится с помощью других, более экономичных методов.

3. Уточнение корней. На данном этапе задача состоит в получении приближенного значения корня, принадлежащего отрезку [a,b], с заданной точностью (погрешностью) . Это

~

должно отличаться от точного x

 

означает, что вычисленное значение корня x

не более чем на

величину :

 

 

 

 

|

x

 

~

 

 

x | .

 

Процедура численного определения приближенных значений корней нелинейных уравнений, как правило, состоит в выборе начального приближения к корню x0 [a,b] и

вычислении по некоторой формуле последующих приближений x1 , x2 и т.д. Каждый такой шаг называется итерацией (от латинского iteratio – повторение), а сами методы уточнения – итерационными методами. В результате итераций получается последовательность

приближенных значений корня x0 , x1, ,xk , , которая называется итерационной последовательностью. Если эти значения с ростом k стремятся к точному значению корня x :

lim {x

k

} x

 

k

,

(2.3)

 

то говорят, что итерационный процесс сходится.

Сходимость итерационного процесса означает, что погрешность каждого последующего приближения должна быть меньше погрешности предыдущего приближения, т.е. погрешность приближенных значений с каждым шагом должна уменьшаться:

| x x

k 1

| | x x

k

|

 

 

 

 

 

В общем случае это неравенство можно представить в виде:

 

| x xk 1 | q |

x xk | ,

(2.4)

где q 0 и 1 – некоторые числа, значения которых определяются методом уточнения корня. От значений q и зависит насколько с каждым шагом уменьшается погрешность приближенных значений и, соответственно, насколько быстро можно получить приближенное значение с заданной точностью. Главным показателем скорости сходимости метода является

значение , называемое порядком сходимости. При 1 погрешность с каждым шагом

убывает линейно, в этом случае говорят о линейной сходимости. Если 1, то говорят, что имеет место сверхлинейная сходимость.

§ 2. Методы уточнения корней

1. Метод половинного деления (бисекции, дихотомии)

25

Считаем, что отделение корней уравнения (2.1) проведено и на отрезке [a,b] расположен один корень, который необходимо уточнить с погрешностью . В качестве начального

приближения корня принимаем середину этого отрезка: c0 (a b) / 2 (рис. 2.5). Затем

исследуем значение функции f (x) на концах отрезков

концах которого f (x) принимает значения разных знаков, содержит искомый корень; поэтому его

принимаем в качестве нового отрезка [a1,b1 ] (на рис.

2.5 это

отрезок [a, c0 ]).

Вторую половину

отрезка

[a,b],

на которой

f (x) не меняет

знак,

отбрасываем. В качестве следующего приближения

корня

принимаем

середину нового отрезка

c1 (a1

b1) / 2

и т.д. Таким образом, k

приближение вычисляется как

[a, c0 ] и [c0 ,b] . Тот из отрезков, на

f(b)

f(с0 )

a

с1

с0

b

x

f(a)

 

 

ak bk

 

Рис. 2.5. Метод половинного деления.

ck

 

2 .

(2.5)

 

 

После каждой итерации отрезок, на котором расположен корень, уменьшается вдвое, а после k

итераций в 2k раз:

b

a

 

 

b a

 

 

 

k

 

 

 

k

 

 

 

2k .

 

(2.6)

 

 

 

 

 

 

Прекратить итерационный процесс следует, когда будет достигнута заданная точность, т.е.

при выполнении условия

 

 

 

 

 

 

 

 

 

| x c

k

|

.

(2.7)

 

 

 

 

 

 

Поскольку корень x принадлежит отрезку [ak ,bk ], а ck

– середина этого отрезка, то величина

| x c

k

|

всегда будет меньше половины длины отрезка

[a

k

,b ]

(см. рис. 2.5), т.е.

 

 

 

k

| x c

 

|

| bk ak |

 

 

k

 

 

 

 

 

2

.

(2.8)

 

 

 

Следовательно, условие (2.7) будет выполнено, если

 

 

| bk ak

| 2 .

 

(2.9)

Таким образом, итерационный процесс нужно продолжать до тех пор, пока не будет выполнено условие (2.9).

26

В отличие от большинства других методов уточнения, метод половинного деления сходится всегда, т.е. обладает безусловной сходимостью. Кроме этого он чрезвычайно прост, поскольку

требует лишь вычисления значений функции f (x) и, поэтому применим для решения любых уравнений.

Однако метод половинного деления довольно медленный. С каждым шагом погрешность приближенного значения уменьшается в два раза, т.е.

| x ck 1 | 12 | x ck | ,

поэтому данный метод является методом с линейной сходимостью. Вычислим количество итераций N, требуемое для

достижения заданной точности . Пользуясь выражением (2.6) можно выяснить для каких значений

k будет выполнено условие (2.9), и взять в качестве N B1 наименьшее из таких k:

(2.10)

B

 

 

 

 

 

 

k log 2

b a

 

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

,

 

x1

x0

b

x

 

 

 

 

b a

 

 

 

 

 

 

 

 

 

 

 

 

N int log

2

 

 

1

 

A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

,

(2.11)

 

 

 

 

 

 

 

 

где int( x) – целая

часть

числа x. Например, при

 

Рис. 2.6. Метод хорд.

 

b a 1 и 10 6

получим N 19 .

 

 

 

 

 

 

 

 

 

 

З а м е ч а н и е . При реализации метода

следует

учитывать,

что функция

f (x)

 

 

 

 

 

вычисляется с некоторой абсолютной погрешностью f . Вблизи корня значения функции

f (x)

 

малы по абсолютной величине и могут оказаться сравнимы с погрешностью ее вычисления.

Другими словами, при подходе к корню мы можем попасть в полосу шумов 2f и дальнейшее уточнение корня окажется невозможным. Поэтому целесообразно задать ширину полосы шумов

и прекратить итерационный процесс при попадании в нее. Если принять f , то

итерационный процесс можно завершать, когда значение функции станет меньшим по модулю ., т.е.

f (x) после k-й итерации

f (ck )

 

.

(2.12)

 

 

Также необходимо иметь ввиду, что при уменьшении интервала [a,b] увеличиваются погрешности вычисления его длины b a за счет вычитания близких чисел. 3[3]

2. Метод хорд

Рассматриваемый метод так же, как и метод половинного деления, предназначен для уточнения корня на интервале [a,b], на концах которого функция f (x) принимает значения

27

разных знаков. Очередное приближение в отличие от метода половинного деления берем не в

середине отрезка, а в точке x0 , где пересекает ось абсцисс прямая линия (хорда), проведенная через точки А и В (рис. 2.6).

Запишем уравнение прямой, проходящей через точки А и В:

 

y f (a)

 

x a

 

 

 

 

 

 

 

 

 

 

 

 

f (b) f (a)

 

b a .

 

 

Для точки пересечения прямой с осью абсцисс ( x x0 , y 0 ) получим уравнение

 

x0 a

 

b a

f (a)

 

 

 

 

 

 

 

 

f (b) f (a)

 

 

 

.

(2.13)

 

 

 

 

 

 

 

 

В качестве нового интервала для продолжения итерационного процесса выбираем тот из

двух [a, x0 ] и [x0 ,b], на концах которого функция

 

f (x) принимает значения разных знаков.

Для рассматриваемого случая (рис. 2.6) выбираем отрезок [a, x0 ], так как f (a) f (x0 ) 0 .

Следующая итерация состоит в определении нового приближения x1

как точки пересечения

хорды AB1 с осью абсцисс и т.д.

 

 

 

 

Заканчиваем процесс уточнения корня,

когда расстояние

между очередными

приближениями станет меньше заданной точности, т.е.

 

 

 

 

 

xk 1 xk

 

 

(2.14)

 

 

 

 

или при выполнении условия (2.12).

З а м е ч а н и е . Метод половинного деления и метод хорд очень похожи, в частности, процедурой проверки знаков функции на концах отрезка. При этом второй их них в ряде случаев дает более быструю сходимость итерационного процесса. Однако в некоторых случаях метод хорд может сходится существенно медленнее метода половинного деления. Такая ситуация показана на рис. 2.7. Оба рассмотренных метода не требуют знания дополнительной информации

о функции f (x) . Например, не требуется, чтобы функция была дифференцируема. Даже для разрывных функций рассмотренные методы обладают гарантированной сходимостью. Более сложные методы уточнения корня используют дополнительную

информацию о функции f (x) , прежде всего свойство дифференцируемости. Как результат они обычно обладают более быстрой сходимостью, но в то же время, применимы для более узкого класса функций, и их сходимость не всегда гарантирована. Примером такого метода служит метод Ньютона.

3. Метод Ньютона (метод касательных)

Пусть нам известно начальное приближение к

a

x*

b x

Рис. 2.7. О сходимости метода хорд

28

 

 

 

f(x0)

 

корню x0 (вопрос выбора начального приближение

 

 

 

 

будет подробно рассмотрен ниже). Проведем в этой

 

 

 

 

точке касательную к кривой y f (x) (рис. 2.8). Эта

 

 

 

 

касательная пересечет ось абсцисс в точке x1 , которую

x*

 

 

 

будем рассматривать в качестве следующего

 

 

 

 

 

 

приближения. Значение x1 легко найти из рисунка:

 

x1

x0

x

 

f (x0 )

 

 

 

 

 

tg

 

f (x0 )

 

 

 

 

x0 x1

 

 

 

 

 

,

 

 

 

 

 

 

 

 

 

 

Рис. 2.8. Метод Ньютона.

выражая отсюда x1 , получим

 

 

 

 

 

 

 

x1 x0

 

f (x0 )

 

 

 

 

 

 

 

 

 

f

(x0 ) .

Аналогично могут быть найдены и следующие приближения. Формула для k+1-го приближения имеет вид

xk 1 xk

f (xk )

 

 

 

 

k 0,1, 2,...

 

 

f (xk ) ,

(2.15)

Из формулы (2.15) вытекает условие применимости метода:

функция f (x)

должна быть

дифференцируемой и f (x) в окрестности корня не должна менять знак.

Для окончания итерационного процесса могут быть использованы условия (2.12) или (2.14).

З а м е ч а н и е 1 . В методе Ньютона, в отличие от предыдущих методов, не обязательно задавать отрезок [a,b], содержащий корень уравнения, а достаточно найти некоторое начальное приближение корня x0 .

З а м е ч а н и е 2 . Формула метода Ньютона может быть получена и из других соображений. Зададимся некоторым начальным приближением корня x0 [a,b] . Заменим функцию f(x) в окрестности точки x0 отрезком ряда Тейлора:

f (x) f (x0 ) (x x0 ) f (x0 ) ,

и вместо нелинейного уравнения f (x) 0 решим линеаризованное уравнение

f (x0 ) (x x0 ) f (x0 ) 0

рассматривая его решение как следующее (первое) приближение к искомому значению корня. Решение этого уравнение очевидно:

29

x1

x0

 

f (x0 )

f (x0 )

 

 

 

Повторяя это процесс приходим к формуле Ньютона (2.15).

Сходимость метода Ньютона. Выясним основные условия сходимости последовательности значений {xk }, вычисляемых по формуле (2.15), к корню уравнения (2.1). Предполагая, что

f (x) дважды непрерывно дифференцируема, разложим f (x ) в ряд Тейлора в окрестности k- го приближения

f (x ) f (x

 

) (x x

 

) f (x

 

 

 

)

(x x

k

)2

f (x

 

) 0

k

k

k

 

 

 

2

 

 

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Разделив последнее соотношение на f (xk ) и перенеся часть слагаемых из левой части

в правую, получим:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x

 

)

 

 

1

 

 

 

 

 

)

 

 

 

 

 

 

 

 

k

 

 

 

 

f (x

k

 

 

 

 

 

 

xk

 

 

 

x

 

 

 

 

 

 

 

(xk

x )2

 

 

 

 

 

2 f (xk )

 

 

 

 

 

f (xk )

 

 

 

 

.

 

 

Учитывая, что выражение в квадратных скобках согласно (2.15) равно xk 1 , переписываем это соотношение в виде

 

 

 

1

 

f

 

 

 

 

x

k 1

x

 

(xk )

(x

 

x )2

2 f (xk )

k

 

 

 

 

 

 

 

 

 

.

Отсюда

 

 

 

1

 

| f

 

 

 

 

 

| x

k 1

x |

 

(xk ) |

| x

 

x |2

 

2 | f (xk ) |

k

 

 

 

 

 

 

 

 

 

 

 

.

(2.16)

Из (2.16) следует оценка

| x

k 1

x |

1

 

M 2

| x

 

x |2

 

2 m1

k

 

 

 

 

 

 

 

 

 

 

 

,

(2.17)

M 2

max

 

f (x)

 

m1

min

 

f (x)

 

 

 

 

 

где

[a,b]

 

 

,

[a,b]

 

 

.

 

 

 

 

 

 

Очевидно, что ошибка убывает, если

30

x

x

*

 

0

 

x0

 

 

x

x

x

1

2

 

Рис. 2.9.

1

 

M 2

 

 

x

0

x

 

1

 

 

 

 

 

 

2 m1

 

 

 

 

 

 

 

 

 

 

 

 

.

(2.18)

Полученное условие означает, что сходимость зависит от выбора начального приближения. Оценка (2.17) характеризует скорость убывания погрешности для метода Ньютона: на

каждом шаге погрешность пропорциональна квадрату погрешности на предыдущем шаге. Следовательно, метод Ньютона обладает квадратичной сходимостью.

Выбор начального приближения в методе Ньютона. Как следует из условия (2.18)

сходимость итерационной последовательности, получаемой в методе Ньютона, зависит от выбора начального приближения x0 . Это можно заметить и из геометрической интерпретации метода.

Так, если в качестве начального приближения взять точку x (рис. 2.9), то на сходимость

0

итерационного процесса рассчитывать не приходится.

Если же в качестве начального приближения выбрать точку x0 , то получим сходящуюся последовательность.

В общем случае, если задан отрезок [a,b] , содержащий корень, и известно, что функция f (x) монотонна на этом отрезке, то в качестве начального приближения x0 можно выбрать ту

границу отрезка [a,b] , где совпадают знаки функции f (x) и второй производной f (x) . Такой выбор начального приближения гарантирует сходимость метода Ньютона при условии монотонности функции на отрезке локализации корня.

4. Модифицированный метод Ньютона

Рассмотренный выше метод Ньютона требует вычисления производной f (x) на каждом шаге. В некоторых случаях это может существенно снизить эффективность метода (в смысле затрат машинного времени). Поэтому в тех случаях, когда вычисление производной сопряжено с существенными затратами машинного времени, используют модифицированный метод Ньютона,

в котором производная f (x) вычисляется только в точке начального приближения x0 :

xk 1

xk

 

f (xk )

 

 

f (x0 ) .

(2.19)

 

 

 

5. Метод секущих

Еще одна модификация метода Ньютона связана с приближенным вычисление

производной f (x) в окрестности точки xk по формуле

 

f (xk )

f (xk ) f (xk 1 )

 

xk xk 1

.

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]