Вы находитесь на странице: 1из 7

Санкт-Петербургский политехнический университет Петра Великого

Институт прикладной математики и механики


Кафедра прикладной математики

Л АБ О РАТ О РН АЯ РАБ О Т А №1

Решение алгебраических и трансцендентных


уравнений
По дисциплине «Реализация численных методов»

Выполнила
студент гр. 23631/1 ____________ Л.М. Панзу

Руководитель
Доцент, к.ф.-м.н. ____________ В.В Курц

Санкт-Петербург 2018 год


Оглавление
1.Формулировка задачи .....................................................................................................3
2. Алгоритм метода и условия его применимости .........................................................3
2.1. Метод половинного деления .................................................................................3
2.2. Метод касательных .................................................................................................3
3. Тестовые примеры .........................................................................................................4
3.1. Уравнение 1: ............................................................................................................4
3.2. Уравнение 2: ............................................................................................................5
4. Работа методов при нарушении условий сходимости ...............................................6
4.1. Метод касательных. ................................................................................................6
4.2. Метод половинного деления. .............................. Error! Bookmark not defined.
5. Заключение .....................................................................................................................7
Решение алгебраических и трансцендентных уравнений
1.Формулировка задачи
Написать функцию, реализующую методы половинного деления и простых
итераций решения алгебраических и трансцендентных уравнений. Исследовать работу
методов на различных тестовых примерах. Сравнить полученные результаты с
результатами функции fzero пакета MatLab. Сравнить методы между собой.
2. Алгоритм метода и условия его применимости
2.1. Метод половинного деления
Теорема (Больцано-Коши): Пусть функция f(x) определена и непрерывна при всех x
ϵ [a, b] и на [a, b] меняет знак, т.е. f(a)* f(b) <0. Тогда на интервале (a, b) она хотя бы один
раз обращается в нуль, т.е. Ǝ с ϵ (a, b), f(с)=0.
Самый простой выбор пробной точки – деление промежутка существования корня
[a, b] пополам. Вычисление f(с) может привести к трём взаимоисключающим ситуациям:
а) f(a)* f(с) < 0 => корень находится на интервале (a, с);
б) f(с)* f(b) < 0 => корень находится на интервале (с, b);
в) f(с) = 0 => точка с является искомым корнем
Тогда процедуру сужения промежутка можно применить к промежуткам а) и б) и
далее повторно циклически, пока не придём к в). Таким образом, алгоритм можно
записать так:
Шаг 0. Задать концы отрезка a и b, функцию f и малое число 𝜀 > 0 (допустимую
погрешность корня).
𝑎+𝑏
Шаг 1. Вычислить 𝑐 = 2 .
Шаг 2. Если b – a < 2* 𝜀 , то с – корень.
Шаг 3. Вычислить f(с).
Шаг 4. Если f(с) = 0, то с – корень.
Шаг 5. Если f(a)* f(с) <0, то b = c, иначе a = c. Вернуться к шагу 1.
Очевидно, что метод применим, только тогда, когда функция на концах отрезка
принимает разные знаки и на этом отрезке только один корень.
Данный метод обладает линейной сходимостью.
Для полинома нам понадобится следующая теорема:
Теорема о верхней границе: Пусть 𝑃(𝑥) = 𝑎0 𝑥 𝑛 + 𝑎1 𝑥 𝑛−1 + ⋯ + 𝑎𝑛−1 𝑥 + 𝑎𝑛 (𝑎0 >0).
𝑚 |𝑎′ |
Тогда любой положительный корень 𝑥∗ ≤ 1 + √ , где m – номер первого
𝑎0

отрицательного коэффициента в ряду 𝑎1 , 𝑎2 ,…, 𝑎𝑛 , а 𝑎′ - наибольший по модулю


отрицательный коэффициент.
Эта теорема позволяет найти нижнюю границу положительных корней, а также
1
верхнюю и нижнюю границы отрицательных корней. если произвести замены 𝑥 = 𝑦 , 𝑥 =
1
−𝑦, 𝑥 = − 𝑦.
5.1 метод Ньютона (касательных).

x ( k )  x ( k 1)    f ( x ( k 1) ) y

0   k  f ' ( x)  2

1
x (k )  k  f ' ( x (k ) )  1   k  .
f ( x (k ) )
'

f ( x (k ) )
x ( k 1)  x ( k )  - формула Ньютона.
f ' ( x (k ) )

x |( k 1) x ( k ) x
Теорема (о сходимости метода Ньютона)

Пусть

1. f  C ( 2) a; b
2. f (a)  f (b)  0
3. f ' ( x) знакопостоянная (корень единственный)
4. f '' ( x) знакопостоянная
5. x ( 0) : f " ( x ( 0) )  f ( x ( 0) )  0

Тогда

f ( x (k ) )
1. Последовательность x ( k 1)  x ( k )  сходится.
f ' ( x (k ) )
  x ( k )  x ( k 1)  .
M2 2
2. Справедлива оценка погрешности x ( k )  x* 
2m1
3. Тестовые примеры
3.1. Уравнение 1:
f(x)=(x+2)*(x-1)*(x-3)*(x-5)
Найдём аналитически промежутки для его корней с помощью теоремы о верхней
границе. Раскроем скобки: 𝑓(𝑥) = 𝑥 4 − 7 ∗ 𝑥 3 + 5 ∗ 𝑥 2 + 31 ∗ 𝑥 − 30.
1) 𝑓(𝑥) = 𝑥 4 − 7 ∗ 𝑥 3 + 5 ∗ 𝑥 2 + 31 ∗ 𝑥 − 30
1 30
m = 1, a’ = -30, a0 = 1 𝑥 ∗ ≤ 1 + √ 1 = 31 – верхняя граница положительных
корней
1 1 4 1 3 1 2 1
2) 𝑓 (𝑦) = (𝑦) − 7 ∗ (𝑦) + 5 ∗ (𝑦) + 31 ∗ (𝑦) − 30 =
1 4
= − ( ) ∗ (30 ∗ 𝑦 4 − 31 ∗ 𝑦 3 − 5 ∗ 𝑦 2 + 7 ∗ 𝑦 − 1)
𝑦
1 31 1
m = 1, a’ = -31, a0 = 30 𝑦 ∗ ≤ 1 + √30 ≈ 2 => 𝑥 ∗ ≥ 2 – нижняя граница
положительных корней
3) 𝑓(−𝑦) = 𝑦 4 + 7 ∗ 𝑦 3 + 5 ∗ 𝑦 2 − 31 ∗ 𝑦 − 30
3 31
m = 3, a’ = -31, a0 = 1 𝑦 ∗ ≤ 1 + √ 1 ≈ 4 => 𝑥 ∗ ≥ −4 – верхняя граница
отрицательных корней
1 1 4 1 3 1 2 1
4) 𝑓 (− 𝑦) = (𝑦) + 7 ∗ (𝑦) + 5 ∗ (𝑦) − 31 ∗ (𝑦) − 30 =
1 4
= (− ) ∗ (30 ∗ 𝑦 4 + 31 ∗ 𝑦 3 − 5 ∗ 𝑦 2 − 7 ∗ 𝑦 − 1)
𝑦
2 7 2
m = 2, a’ = -7, a0 = 30 𝑦 ∗ ≤ 1 + √30 ≈ 1,5 => 𝑥 ∗ ≤ − 3 – нижняя граница
отрицательных корней
2 1
Таким образом, корни могут находиться в интервалах (−4; − 3) и (2 ; 31).
Построим график функции на промежутке (-4; 31). В результате построения
интервал пришлось уменьшить до (-2,5; 5,5).

3.2. Уравнение 2:
𝑓(𝑥) = 𝑥 2 − 𝑒 −𝑥
Уточнять корень этой функции будем на промежутке [0.5; 1].
Построим график функции на этом промежутке.

Выполним метод половинного деления. Точность 𝜀 =10-10. Метод выполнил 32


итерации. Найденный корень 𝑥 ∗ = 0.7034674225142226. Сходимость линейная, как и
ожидалось.
Выполним метод простых итераций. Функция удовлетворяет условиям теоремы.
Поэтому можно применить этот метод. Точность 𝜀 =10-10. Использовались числа 𝜆 ≈
0.743 и 𝑞 ≈ 0.89, вычисленные в соответствии с теоремой. Начальное приближение 𝑥0 =
0.75. Метод выполнил 26 итераций. Найденный корень 𝑥 ∗ = 0.7034674224963150.
Сходимость линейная, как и ожидалось.
Ниже на одном графике представлены сходимости обоих методов. Метод простых
итераций сходится быстрее.

4. Работа методов при нарушении условий сходимости


4.1. Метод половинного деления.
1) f(a)* f(b) ≥ 0
a. f(a)*f(b) ≠ 0
В данном случае метод вообще не будет выполняться, потому что
перед началом цикла поставлена проверка на то, что функция на
концах отрезка принимает разные знаки.
Если данную проверку убрать, и выполнить метод для полинома
f(x)=(x+2)*(x-1)*(x-3)*(x-5), на отрезке [-1.5; 0.5], на котором он
корень не содержит, с точностью 𝜀 = 2.2 ∗ 10−16 . Метод находит
корень 𝑥 ∗ =0.4999999999999997, который в действительности не
является корнем полинома.
Если выполнить метод для функции, на отрезке, на концах которых
функция принимает значения одинаковых знаков, но корень
содержит, то в зависимости от выбора отрезка, метод может дать и
правильные, и неправильные корни.
b. f(a)*f(b) = 0
Тут также стоит проверка на то, чтобы функция на концах отрезков
принимала ненулевые значения разных знаков.
Если данную проверку убрать, то происходит следующее:
Если на отрезке [a, b] f(a)=0, метод выводит корень 𝑥 ∗ = 𝑏, что не
соответствует действительности. Если же на отрезке [a, b] f(b)=0, то
метод тоже выводит 𝑥 ∗ = 𝑏, но это уже правильно.
2) f имеет несколько корней на выбранном отрезке
Возьмём тот же самый полином f(x)=(x+2)*(x-1)*(x-3)*(x-5). Выполним
метод на отрезке [0; 6]. На концах этого отрезка функция принимает
значения разных знаков и содержит три корня 𝑥1∗ = 1, 𝑥2∗ = 3 и 𝑥3∗ = 5.
Точность 𝜀 = 2.2 ∗ 10−16. Метод находит только корень 𝑥2∗ = 3, причём за
одну итерацию.
Если взять отрезок [0.5; 6], то метод находит корень 𝑥3∗ = 5. А если взять
отрезок [0; 5.5], то метод находит корень 𝑥1∗ = 1.
3) f – разрывна
1
Функция 𝑓(𝑥) = 𝑥−2 имеет разрыв точке 𝑥 = 2. На различных отрезках,
содержащих только разрыв, метод выдаёт точку разрыва. отрезке [1; 2]
𝑥 ∗ = 2.
sin(𝑥)
Функция 𝑓(𝑥) = 𝑥 имеет разрыв в точке 𝑥 = 0. Корни 𝑥 ∗ = 𝜋𝑛, 𝑛 ≠ 0, 𝑛 ∈
ℤ. На отрезке [-1; 2], содержащем только разрыв, метод даёт 𝑥 ∗ = 2. На
отрезке[-1; 4], содержащем и корень, и разрыв, метод зацикливается.
1. Заключение
Методы половинного деления и простых итераций используются для решения
алгебраических и трансцендентных уравнений. Они позволяют находить корни с заданной
точностью 𝜀, если выполнены все условия сходимости. В некоторых случаях, при
нарушении условий метод может находить верный корень. Оба метода обладают
линейной скоростью сходимости. Для выбранных примеров: для алгебраического
уравнения метод простых итераций сходится быстрее, чем метод половинного деления;
для трансцендентного скорость сходимости примерно одинакова.