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

Информатика 2 сессия / Численные методы решения задач строительства на ЭВМ

.pdf
Скачиваний:
333
Добавлен:
29.03.2015
Размер:
2.5 Mб
Скачать

Численные методы решения нелинейных уравнений

nПример 3.1. Отделить корни уравнения

4 – ех–2х2=0,

(3.2)

т.е выяснить сколько корней имеет это уравнение и найти промежутки, в которых они находятся.

Решение.

С п о с о б 1. Составим таблицу значений функции f(x)=4 – ех – 2х2 на промежутке [–3, 1], с шагом изменения х=1.

 

 

 

Таблица 3.1

 

x

-3

-2

-1

0

 

1

f(x)=4-ех-2х2

–14,049

–4,135

1,632

3,012

 

–0,718

Из таблицы видно, что существуют корни уравнения на отрезках [–2,–1]

и [0,1]

Сп о с о б 2. Рассмотрим три функции: 1) f (x) = 4 – ех–2х2 ;

2)ϕ (x)=4–2х2 ; 3) ψ (x)= ех. Уравнение f (x) = 0 эквивалентно уравнению ϕ(x)=ψ(x).

Построим графики функций у=ϕ (x) и у=ψ (x) ( рис. 3.2). Они пересекаются в двух точках, абсциссы которых х*1 и х*2 являются

решениями уравнения ϕ (x)=ψ (x).

Рис. 3.2. Графический способ отделения корней

n Пример 3.2. Отделить корни уравнения

 

х – tg(x)=0,

(3.3)

103

Численные методы решения нелинейных уравнений

которое получается при решении задачи устойчивости стержня (рис.3.3).

Здесь x = PEJкр l .При решении задач устойчивости нас обычно

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

Если при решении данной задачи отделение корней производить на основании таблицы табулирования (табл.3.2), то можно допустить ошибку, предположив, что корень уравнения находится на отрезке [1.5, 2], где функция меняет знак.

 

Таблица 3.2

х

f(x)=х-tg(x)

0

0,000

0,5

0,046

1

0,557

1,5

12,601

2

4,185

2,5

3,247

3

3,143

3,5

3,125

4

2,842

4,5

0,137

5

8,381

Рис.3.3. К задаче

устойчивости Рис.3.4. Локализация корней уравнения х – tg(x)=0

стержня

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

[4, 4.5].

3.2. Этап уточнения корня

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

значений корня уравнения (3.1):

 

x1, x2,……xn….

( 3.4 )

Если эта последовательность имеет предел

 

104

Численные методы решения нелинейных уравнений

lim xn = x* ,

(3.5)

n→∞

 

то говорят, что итерационный процесс (3.4) сходится и сходится к

точному решению уравнения x* [8,12].

На практике мы должны ограничивать итерационный процесс конечным числом шагов (итераций) n. Количество итераций зависит от требуемой точности нахождения корня.

Для прекращения итерационного процесса применяются различные критерии, зависящие от вида функции y=f(x) в окрестности корня.

§ Если функция достаточно «пологая», то итерационный процесс продолжается до тех пор, пока две соседние итерации не станут достаточно близкими, т.е. пока не выполнится условие

 

 

 

xn1 xn

 

< ε .

(3.6)

 

 

 

 

§

Если

функция у=f(x) «круто» меняет свои

значения,

целесообразно использовать условие

 

 

 

 

f (xn )

 

< ε .

(3.7)

 

 

 

 

§

Если

условие (3.6) или (3.7) выполняется, то

в качестве

приближенного решения уравнения (3.1) с заданной точностью ε принимают n-ю итерацию т.е. x* xn .

§ Если ни одно из условий не выполняется, то итерационный процесс необходимо продолжить.

Рассмотрим несколько итерационных методов решения нелинейных уравнений. Выбор того или иного метода зависит от вида функции y = f(x).

3.2.1. Метод половинного деления (бисекций)

Пусть функция y=f(x) удовлетворяет условиям теоремы 1 на отрезке [a,b], т.е. уравнение (3.1) имеет единственный корень на этом отрезке.

105

Численные методы решения нелинейных уравнений

Идея метода бисекций. (рис.3.5)

 

у

 

 

 

 

 

 

 

 

y = f ( x )

 

a

x 1

x *

x 2

b

x

 

 

 

 

 

а

ε

b

 

 

Рис. 3.5. Схема метода бисекций

1. Делим отрезок [a, b] пополам.

2.

Если

f (

a + b

) = 0 , то

x* =

a + b

является корнем уравнения

 

 

 

 

(3.1).

 

2

 

 

2

 

 

 

 

 

 

 

a + b

 

 

 

 

a + b

 

3.

Если

 

f (

) ¹ 0 ,

то из двух отрезков [ a,

],

 

 

2

 

 

a + b

2

 

 

 

 

 

 

 

[

, b ] выбираем тот, на концах которого функция f(x)

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

имеет разные знаки.

4.Новый «суженный» отрезок [a1, b1] снова делим пополам и проводим тот же анализ и т.д.

5.В результате получаем на каком-то этапе или точный корень

уравнения (3.1), или же бесконечную последовательность

вложенных друг в друга отрезков,

 

[a1, b1], [a2, b2], …………………[an, bn],………

 

таких, что

f(ai,) f(bi)<0, (i=1,2,…..)

(3.8)

и

bi – ai=

1

(b a) .

(3.9)

 

 

 

2n

 

106

Численные методы решения нелинейных уравнений

Левые концы a1, a2,….,an,…и правые концы b1, b2,….,bn,этих отрезков образуют монотонные последовательности, соответственно неубывающую и невозрастающую.

6.В силу равенства (3.9) существует общий предел

x* = lim an = lim bn

n→∞ n→∞

Переходя к пределу при n → ∞ в неравенстве (3.8), в силу непрерывности функции f(x) получаем f(x*) = 0 т.е. x* является корнем уравнения (3.1).

Метод половинного деления легко реализуется на ЭВМ по следующей схеме.

: Для нахождения приближенного значения корня уравнения (3.1) с заданной точностью ε необходимо циклически повторить следующую последовательность действий:

1)отрезок [a, b] делится пополам x = a +2 b ,

2)если│f(x)> ε, переходим на пункт 3, иначе на пункт 5,

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

4)если a-b>ε, то выполняется пункт 1 , иначе пункт 5.

5)в качестве приближенного решения уравнения (3.1) с заданной степенью точности ε принимается x = a +2 b .

G Замечание. Метод половинного деления практически удобно применять для грубого нахождения корня заданного уравнения,

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

107

Численные методы решения нелинейных уравнений

3.2.2.Метод хорд

Пусть функция y=f(x) на отрезке [a,b] удовлетворяет условиям теорем 3.1, т.е. уравнение (3.1) имеет на этом отрезке единственный корень x*.

Положим для определенности f’’(x) > 0 (рис.3.6). Вместо деления отрезка пополам, разделим его в отношении f(a) : f(b).

С геометрической точки зрения способ пропорциональных частей эквивалентен замене кривой y = f(x) хордой, проходящей через точки A[a, f(a)] и B0[b, f(b)].

Уравнение хорды АВ запишется, как

x a

=

y f (a)

.

 

 

 

 

 

 

 

 

 

 

(3.10)

b a

 

f (b) f (a)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис.3.6. Схема метода хорд (1-й случай)

Полагая х =х1 и y = 0, найдем абсциссу точки пересечения хорды АВ0 с осью ОХ, т.е. х1.

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

108

Численные методы решения нелинейных уравнений

Первый случай. Полагаем f(а)>0, f(b)<0 и f’’ (x)>0 для x [a,b].

1.В качестве нулевого приближения корня выбираем правый конец отрезка [a,b], т.е. х0 =b.

2.Проводим хорду АВ0 и за первое приближение х1 принимаем абсциссу точки пересечения хорды с осью ОХ.

3.Второе приближение х2 получаем как абсциссу точки пересечения хорды АВ1 с осью ОХ.

4.Аналогичным образом строим итерационную последовательность приближений:

х0 =b, x1 , x2 ,…….,xn ,….

(3.11)

В математическом анализе доказывается теорема, что итерационная последовательность (3.11) сходится к корню х* уравнения (3.1). В этом случае левый конец отрезка [a,b]

неподвижен и последовательные приближения определяются по формуле

x0 = b,

 

 

.

(3.12)

xn+1

= xn

f (xn )

(xn a).

f (xn ) f (a)

 

 

 

 

 

 

 

Второй случай. Полагаем f(а)<0, f(b)>0 и f’’ (x)>0 для x [a, b].

В качестве нулевого приближения корня выбираем левый конец отрезка [a,b], т.е. х0 =а, а в качестве неподвижного конца х=b

(рис.3.7).

Аналогично первому случаю строим последовательность приближений, сходящуюся к точному решению х* уравнения (3.1):

x0 = a,

 

 

 

 

xn+1

= xn

f (xn )

(b xn ).

,

(3.13)

f (b) f (xn )

 

 

 

 

 

 

 

109

Численные методы решения нелинейных уравнений

 

y

 

 

 

 

 

 

B

 

 

 

 

 

 

 

 

)

 

 

 

 

 

 

 

(

x

 

 

 

 

 

y

=

f

 

 

 

 

 

 

 

 

x

 

a=x

x1

x2

 

 

 

 

f(a

0

 

 

 

 

0

 

 

x*

 

 

 

b

)

 

A

A2

 

 

 

 

A0

 

 

 

 

 

1

 

 

 

 

Рис.3.7. Схема метода хорд (2-ой случай).

Таким же образом можно рассмотреть еще два аналогичных случая, когда вторая производная f’’ (x)<0 для x [a, b].

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

4 Теорема 3.2. Пусть функция y = f(x) на отрезке [a,b] удовлетворяет условиям теорем 3.1, т.е. уравнение (3.1) имеет на этом отрезке единственное решение. Если функция y = f(x) имеет вторую производную,

сохраняющую знак на этом отрезке, то исходя из начального приближения х0 , удовлетворяющего условию

f(x0) f’’ (x0 )<0,

(3.14)

можно вычислить корень уравнения (3.1) с заданной точностью ε по формулам (3.12) или (3.13).

Метод хорд хорошо реализуется на ЭВМ.

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

Пусть уравнение (3.1) на отрезке [a,b] имеет единственный корень, причем f(x) и f’’ (x) непрерывны и сохраняют определенные знаки на этом отрезке.

110

Численные методы решения нелинейных уравнений

Геометрически метод Ньютона эквивалентен замене небольшого участка дуги кривой y=f(x) касательной, проведенной в некоторой точке этой кривой (рис.3.8).

Положим для определенности f’’ (x)>0 для x [a, b] и f(b)>0. И выберем в качестве нулевого приближения x0 = b, для которого выполняется условие f(x0)·f ’’ (x0) >0.

Проведем касательную к кривой y = f(x) в точке B0[x0 ,f (x0)]. В качестве первого приближения корня х1 возьмем абсциссу точки пересечения этой касательной с осью ОХ. Через точку B1[x1 ,f (x1)] снова проведем касательную, абсцисса точки пересечения которой с осью ОХ даст нам второе приближение корня х2 и т.д.

Y

 

 

B

0

 

 

 

 

 

 

 

 

 

 

 

 

 

y=f(x)

 

 

 

 

B

 

f(b)

 

 

 

 

 

 

 

 

1

 

 

 

 

B

 

 

 

 

 

2

 

 

 

 

a

x

x 1

b=x0

 

 

f(a)

x 2

 

x 1

X

 

 

 

Рис.3.8. Схема метода касательных

Уравнение касательной в точке Bn[xn , f (xn)] (n=0, 1, 2, ….) к

нашей кривой записывается

y – f (xn) = f(xn) (x - xn).

Полагая y=0, x=xn+1, получим формулу для построения последовательности приближений корня уравнения (3.1), т.е.

итерационную последовательность

xn+1 = xn

f

(xn )

.

(3.15)

f

'

 

(xn )

 

111

Численные методы решения нелинейных уравнений

Если в нашем случае положить x0 = а, т.е. f(x0)·f’’(x0)<0, то, проведя касательную к кривой y = f(x) в точке (a, f(a)), мы получили бы точку х1(рис.3.8), лежащую вне отрезка [a,b].

Выбранное таким образом начальное приближение оказывается непрактичным. В данном случае «хорошим» начальным приближением х0 является то, для которого выполняется условие

f(x0) f’’ (x0)>0.

(3.16)

В математическом анализе доказывается теорема, что это правило является общим.

Метод касательных хорошо реализуется на ЭВМ.

GЗамечания.

1.Из формулы (3.15) видно, что чем больше значения f (x) в окрестности корня х* , тем меньше поправка, которую нужно прибавить к n-му приближению, чтобы получить (n+1) – приближение. Поэтому метод касательных особенно удобно применять тогда, когда график функции y=f(x) имеет большую кривизну в окрестности корня соответствующего уравнения, т.е. круто меняет свое значение.

2.С другой стороны, если значения f(x) в окрестности корня х* малы, т.е. функция достаточно пологая, то поправки будут

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

3.Следовательно, если кривая y = f(x) вблизи точки пересечения с осью ОХ почти горизонтальна, то применять метод Ньютона для решения уравнения f(x)=0 не рекомендуется.

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

Если значения производной f (x) мало изменяется на отрезке [a, b], то в формуле (3.15) можно положить f(xn) f(x0).

Отсюда итерационная последовательность для корня уравнения (3.1) имеет вид:

xn+1 = xn

f

(xn )

,

(n=0, 1,2,…..).

(3.17)

f

'

 

(x0 )

 

 

 

112