Приближённые методы решения алгебраического уравнения

Реферат по курсу численных методов выполнил студент группы РЭ–01-1

Днепропетровский Национальный Университет

Радиофизический факультет

Кафедра физики СВЧ

Днепропетровск 2002

1. Численное решение уравнений с одним неизвестным

В данной работе рассматриваются метода приближённого вычисления действительных корней алгебраического или трансцендентного уравнения

f(x)=0 (1.1)

на заданном отрезке [a, b]. 

Уравнение называется алгебраическим, если заданная функция есть полином n-ой степени:

f(x) = P(x) = a0xn + a1xn- 1 + … + an-1 x + an = 0, a0 ¹ 0

Требование a0 ¹ 0 обязательно, так как при невыполнении этого условия данное уравнение будет на порядок ниже.  

Всякое уравнение (1.1) называется трансцендентным, если в нём невозможно явным образом найти неизвестное, а можно лишь приближённо.  

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

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

Корнем уравнения (1.1) называется такое число x, где f(x)=0. 

При определении приближённых корней уравнения (1.1) необходимо решить две задачи:

отделение корней, т. е. определение достаточно малых промежутков, в каждом из которых заключён один и только один корень уравнения (простой и кратный);

уточнение корней с заданной точностью (верным числом знаков до или после запятой);

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

Вторая задача решается непосредственно в методах рассмотренных ниже. 

При графическом отделении корней уравнения (1.1) нужно последнее преобразовать к виду: 

j1(x)=j2(x) (2.1)

и построить графики функций y1=j1(x), y2=j2(x).

Действительно, корнями уравнения (1.1)

f(x) = j1(x) - j2(x) = 0

являются абсциссы точек пересечения этих графиков (и только они).

Из всех способов, какими можно уравнение (1.1) преобразовать к виду (2.1) выбираем тот, который обеспечивает наиболее простое построение графиков y1=j1(x) и y2=j2(x). В частности можно взять j2(x) = 0 и тогда придём к построению графика функции (1.1), точки пересечения которого с прямой y2=j2(x)=0, т. е. с осью абсцисс, и есть искомые корни уравнения (1.0).  

Условия, наложенные на функцию f(x) на отрезке [a, b].

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

2. Метод дихотомии 

Этот метод ещё называется методом вилки.  

Нам необходимо найти корень уравнения (1.1) на отрезке [a, b]. Рассмотрим отрезок [x0, x1]: [x0, x1]Ì[a, b]. Пусть мы нашли такие точки х0, х1, что f (х0) f(х1) £ 0, т. е. на отрезке [х0, х1] лежит не менее одного корня уравнения. Найдём середину отрезка х2=(х0+х1)/2 и вычислим f(х2). Из двух половин отрезка выберем ту, для которой выполняется условие

f (х2) f(хгран.) £ 0, так как один из корней лежит на этой половине. Затем новый отрезок делим пополам и выберем ту половину, на концах которой функция имеет разные знаки, и т. д. (рис 1.2).

 

рис. 1.2

Если требуется найти корень с точностью Е, то продолжаем деление пополам до тех пор, пока длина отрезка не станет меньше 2Е. Тогда середина последнего отрезка  даст значение корня с требуемой точностью.   Дихотомия проста и очень надёжна. К простому  корню она сходится для любых непрерывных функций  в том числе и не дифференцируемых; при этом она устойчива к ошибкам округления. Скорость сходимости не велика; за одну итерацию точность увеличивается примерно вдвое, т. е. уточнение трёх цифр требует 10 итераций. Зато точность ответа гарантируется.

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

Предположим для определённости, что функция f(x) принимает на левом конце отрезка [a, b] отрицательное значение, а на правом – положительное:

f(a) < 0, f(b) > 0.

Возьмём среднюю точку отрезка [a, b], h=(a+b)/2 и вычислим значение в ней функции f(x). Если f(h)=0, то утверждение теоремы доказано: мы нашли такую точку, где функция обращается в нуль. Если f(h)¹ 0, тогда из отрезков [a, h] и [h, b] выберем один из них тот, где функция на его концах принимает значения разных знаков. Обозначим его [a1, b1]. По построению: f(a1)<0, f(b1)>0. Затем среднюю точку отрезка [a1, b1] точку h1 и проведём тот же алгоритм нахождения другого отрезка [a2, b2] где бы по построению f(a2)<0, f(b2)>0. Будем продолжать этот процесс. В результате он либо оборвётся на некотором шаге n в силу того, что f(hn)=0, либо будет продолжаться неограниченно. В первом случае вопрос о существовании корня уравнения f(x)=0 решён, поэтому рассмотрим второй случай.

Неограниченное продолжение процесса даёт последовательность отрезков [a, b], [a1, b1], [a2, b2],… Эти отрезки вложены друг в друга – каждый последующий отрезок принадлежит всем предыдущим:

an £ an+ 1 < bn+ 1 £ bn (1.2)

причём:

f(an) < 0, f(bn) > 0 

Длины отрезков с возрастанием номера n стремятся к нулю:

 

Рассмотрим левые концы отрезков. Согласно (1.2) они образуют монотонно убывающую ограниченную последовательность {an}. Такая последовательность имеет предел, который можно обозначить через c1:

Согласно (1.1) и теореме о переходе к пределу в неравенствах имеем:  

c1 £ bn (2.2)  

Теперь рассмотрим правые концы отрезков. Они образуют монотонно не возрастающую ограниченную последовательность {bn}, которая тоже имеет предел. Обозначим его через с2: . Согласно неравенству (2.1) пределы с1 и с2 удовлетворяют неравенству с1 £ с2. Итак, an £ с1 < с2 £ bn, и следовательно:

с2-с1 £ bn - an=(b-a)/2n.

Таким образом, разность с2-с1 меньше любого наперёд заданного положительного числа. Это означает, что с2-с1=0, т. е.: с1=с2=с

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

Мы знаем, что f(an)<0. Согласно определению непрерывности и возможности предельного перехода в неравенствах, имеем:  

f(c)=lim f(an)£0 (3.2)

Аналогично, учитывая, что f(bn)³0, получаем, что:  

f(c)=lim f(bn) ³0 (4.2) 

Из (3.2) и (4.2) следует, что f(c)=0. т. е. с – корень уравнения. 

Процесс построения последовательности вложенных стягивающих отрезков методом вилки (дихотомии) является эффективным вычислительным алгоритмом решения уравнения f(x)=0. На n-ом шаге процесса получаем:

an £ c £ bn

Это двойное неравенство показывает, что число an определяет корень с недостатком, а число bn с избытком, с ошибкой не превышающей длину отрезка Dn=bn-an=(b-a)/2n. При увеличении n ошибка стремится к нулю по закону геометрической прогрессии со знаменателем q=0.5. Если задана требуемая точность e>0, то чтобы её достигнуть достаточно сделать число шагов N, не превышающее log2[(b-a)/e]: N>log2[(b-a)/e].

3. Метод итераций

Этот метод называется ещё методом последовательных приближений.

Пусть нам необходимо найти корень уравнения (1.1) на некотором отрезке [a, b].  

Предположим, что уравнение (1.0) можно переписать в виде:  

x=j(x) (1.3)

Возьмём произвольное значение x0 из области определения функции j(x) и будет строить последовательность чисел {xn}, определённых с помощью рекуррентной формулы:

xn +1=j(xn), n=0, 1, 2, … (2.3)

Последовательность {xn} называется итерационной последовательностью. При её изучении встают два вопроса:

Можно ли процесс вычисления чисел xn продолжать неограниченно, т. е. будут ли числа xn принадлежать отрезку [a, b] ?

Если итерационный процесс (2.3) бесконечен, то как ведут себя числа xn при n®¥ 

Исследование этих вопросов показывает, что при определённых ограничениях на функцию j(x) итерационная последовательность является бесконечной и сходится к корню уравнения (1.3).

, c=j(c) (3.3)

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

Говорят, что функция f(x) удовлетворяет на отрезке [a, b] условию Липшица, если существует такая постоянная a, что для любых x1, x2, принадлежащих отрезку [a, b] имеет место неравенство:

| f(x1) - f(x2)| £ a|x1 - x2| (4.3)

Величину a в этом случае называют постоянной Липшица.

Если функция f(x), удовлетворяет на отрезке [a, b] условию Липшица, то она непрерывна на нём. Действительно, пусть x0 – произвольная точка отрезка. Рассмотрим приращение функции f(x) в этой точке:

Df=f(x0+Dx) – f(x0)

и оценим его с помощью неравенства (4.3)

|Df | £ a|Dx|

Таким образом, , что означает непрерывность функции f(x).

Условие Липшица имеет простой геометрический смысл. Возьмём не графике функции y=f(x) две произвольные точки M1 и M2 с координатами (x1, f(x1)) и (x2, f(x2)). Напишем уравнение прямой линии, проходящей через эти точки:

y=f(x1) + k(x-x1)

где k– тангенс угла наклона прямой у оси Оx и определяется формулой:

 

Если функция f(x) удовлетворяет на отрезке [a, b] условию Липшица, то при произвольном выборе точек M1 и M2 имеем |k|£a. Таким образом, с геометрической точки зрения условие Липшица означает ограниченность тангенса угла наклона секущих, проведённых через всевозможные пары точек графика функции y=f(x).

рис 2.3 геометрическая иллюстрация условия Липшица.

 

рис 3.3 геометрическая иллюстрация cвязи условия Липшица с предположением о дифференцируемости функции.

Предположим, что функция f(x) имеет на отрезке [a, b] ограниченную производную:

| f ¢(x)| £ m; тогда она удовлетворяет условию Липшица с постоянной a=m. Для доказательс- тва этого утверждения воспользуемся формулой конечных приращений Лагранжа:

f(x2) – f(x1) = f ¢(x)(x2-x1) (5.3)

где x1, x2, - произвольные точки отрезка [a, b] x, - некоторая точка отрезка [x1, x2]. Возьмём модуль обеих частей равенства (4.3) и заменим в правой части | f ‘(x)| на m. В результате по- лучим неравенство (4.3) с a=m. Рис.2.3 даёт геометрическую иллюстрацию установленного свойства. Согласно формуле Лагранжа (5.3) каждой секущей графика функции y = f(x) мож- но поставить в соответствие параллельную её касательную. Поэтому наибольший тангенс угла наклона касательных, и его можно оценить той же константой m: |k| £ m.

Познакомившись с условием Липшица, перейдём к изучению итерационной последовательности, предполагая, что уравнение имеет корень x=c. Существование этого корня можно установить с помощью качественного предварительного исследования уравнения с применением теоремы о существовании корня непрерывной функции.

Теорема о существовании корня непрерывной функции 

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

Теорема о сходимости итерационной последовательности

Пусть с – корень уравнения (2.3) и пусть функция j(x) удовлетворяет на некотором отрезке [c-d, c+d] (d>0) условию Липшица с постоянной a<1. Тогда при любом выборе x0 на отрезке [c-d, c+d] существует бесконечная итерационная последовательность {xn} и эта последовательность сходится к корню x=c, который является единственным решением уравнения (1.3) на отрезке [c-d, c+d].

Сформулированная теорема имеет очень простой смысл. Будем говорить, что функция j осуществляет отображение точки x на точку y=j(x). Тогда условие Липшица с постоянной a<1 означает, что отображение j является сжимающим: расстояние между точками x1 и x2 больше, чем расстояние между их изображениями y1=j(x1) и y2=j(x2).

Корень c является неподвижной точкой отображения j, он преобразуется сам в себя c=j(c). Поэтому каждый шаг в итерационном процессе, сжимая расстояния должен приближать члены последовательности {xn} к неподвижной точке c.

После таких соображений поясняющих смысл теоремы, перейдём к её доказательству. Возьмём произвольную точку x0 на отрезке [c-d, c+d], она отстоит от точки c не больше чем на d: |c-x0| £ d.

Вычислим x1: x1=j(x0), при этом x1-c =j(x0)-j(c). Разность j(x0)-j(c) можно оценить с помощью условия Липшица:

|x1-c| = |j(x0)-j(c)| £ |x0-c| £ ad. (6.3)

Неравенство (6.3) показывает, что x1 принадлежит отрезку [c-d, c+d] и расположен ближе к точке c, чем x0.  

Продолжим построение итерационной последовательности. Вычислим x2: x2=j(x1), при этом:

|x2-c| = |j(x1)-j(c)| £ a|x1-c| £ a2|x0-c| £ a2d

Точка x2 опять принадлежит отрезку [c-d, c+d] и расположена ближе к точке c, чем точка x1, т.е. мы приблизились к c.

По индукции легко доказать, что последующие итерации также существуют и удовлетворяют неравенствам.

|xn-c| £ an |x0-c| £ and (7.3)

Отсюда следует, что:

, т. е.  

Остаётся доказать, что корень x=c (1.3) является единственным решением уравнения на отрезке [c-d, c+d]. Действительно, допустим, что существует ещё один корень x=c1.

Примем c1 за нулевое приближение и будем строить итерационную последователь- ность (2.3). Тогда с учётом (7.3) получим xn=c1 (n=0, 1, 2, …). С другой стороны, по доказанному , т. е. c1=c. Никаких других решений уравнение на отрезке иметь не может. 

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

4. Быстрота сходимости процесса итераций

Используем теперь производную функции j(x) для оценки скорости сходимости итераций при решении уравнения х=j(x). Нужно оценить скорость, с которой убывают погрешности an=x-xn приближённых значений х1, … , хn, … корня x.

  

рис 1.4

Можно заметить, что справедливы равенства x=j(x) и хn+ 1=j(хn). Из них вытекает, что:

an+ 1= x-хn+ 1=j(x)-j(хn)

Но по формуле Лагранжа имеем:

j(x)-j(хn)= j ¢(cn)·( x-xn)= j ¢(cn) ·an  

где cn - точка лежащая между точками x и хn. Поэтому:

an+ 1=j ¢(cn) ·an (1.4) 

Из равенства (1.4) вытекает следующий вывод:

Пусть x – корень уравнения x=j (x) - лежит на отрезке [a, b]. Если на этом отрезке выполняется неравенство |j ¢(x)|<q<1, а начальное приближение x1 также выбрано на отрезке [a, b], то при любом n выполняется соотношение:

|an+ 1|<qn·|a1| (2.4)

В самом деле, из равенства (1.4) имеем:

|a2|=|j ¢(c1)|·|a1|

Но точка c1 лежит на отрезке [a, b] (рис.1.4), и потому:

|j ¢(c1)|<q

Отсюда следует, что:

|a2|<q·|a1|

Точно так же получаем, что:

|a3|=|j ¢(c1)|·|a2|<q·|a2|< q2·|a1|

и вообще:

|an+ 1|=qn·|a1|

Тем самым наше утверждение доказано. 

Так само при 0<q<1 последовательность чисел q, q2, q3, … , qn, … стремится к нулю, то и погрешность an+ 1 стремится к нулю с возрастанием n. Иными словами, при указанных выше предположениях числа x1, x2, … , xn, … приближаются к числу x, причём разность |x-xn| убывает быстрее, чем qn·|a1|.

Точно так же можно