Уравнение с одним неизвестным



Пусть задана непрерывная функция f(x) и требуется найти все или некоторые корни уравнения

f(x) = 0.                                                                                       (19)

Решение задачи (19) включает несколько этапов:

· оценку количества корней;

· определение их местонахождения;

· получение значений интересующих нас корней с заданной точностью.

Например, если f(x) есть полином n-й степени Pn(x), т.е. нас интересуют корни уравнения

                                                                    (20)

то оно, как известно из курса алгебры, имеет в общем случае n комплексных корней x1,…,xn, не обязательно различных. Кроме того, известно их местоположение, они все находятся в круге радиуса , т.е. .

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

Заданная точность в оценке значений корней получается путем использования различных итерационных методов. К наиболее эффективным из них относятся:

· дихотомия или деление отрезка пополам;

· метод простых итераций;

· метод Ньютона;

· метод секущих.

Метод дихотомии или деления отрезка пополам состоит в следующем. Пусть найдены две такие точки x0, x1, что f(x0)f(x1) £ 0, т.е. на отрезке [x0,x1] находится не менее одного корня уравнения f(x) = 0. Найдем среднюю точку x2 = (x0+x1)/2 и вычислим f(x2). Определим, среди пары f(x0)f(x2), f(x2)f(x1) то произведение, которое не положительно, пусть это будет первое произведение, т.е. f(x0)f(x2) £ 0 и искомый корень лежит на отрезке [x0,x2], длина которого в два раза меньше предыдущего отрезка. Далее процедура повторяется. Если требуется получить корень с заданной точностью e, то делим отрезок пополам до тех пор, пока его длина не станет меньше 2e, середина этого отрезка и даст значение корня с заданной точностью.

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

К недостаткам метода дихотомии относится поиск исходного отрезка, на котором функция меняет знак. Если корней на исходном отрезке несколько, то неизвестно к какому из корней процесс сойдется. Метод не работает для поиска корней четной кратности. Для поиска корней нечетной кратности метод сходится, но он менее точен и плохо устойчив к ошибкам округления. Наконец, метод дихотомии не обобщается на случай поиска корней системы уравнений.

На листинге_№5 приведен код программы поиска корней уравнения (19) методом дихотомии. В качестве тестовых функций взяты две:  и . Первая функция имеет один-единственный корень x = 0, вторая функция имеет множество корней xk = k/4, k = 0,±1,±2,… На рис.6,а приведена динамика сходимости к корню первого уравнения, на рис.6,б — к одному из девяти корней на отрезке [-1,1] второго уравнения.

 

Листинг_№5

%Программа поиска корней уравнения f(x)=0

%методом дихотомии (деления отрезка пополам)

%очищаем рабочее пространство

clear all

%определяем точность численной оценки корня

eps=1e-10;

%определяем максимальное количество делений

%отрезка пополам (итераций)

itermax=100;

%выбираем различные представления для

%функции f(x), а также исходный отрезак,

%на котором есть хотя бы один корень

% f=@(x)(exp(-x)-x-1);

% x0=-2; x1=3;

f=@(x)sin(4*pi*x);

x0=-1+0.1*randn; x1=1+0.1*randn;

iter=1;

%организуем цикл делений отрезка пополам

%до тех пор, пока либо не достигнута

%нужная точность, либо не превышен предел

%деления отрезка пополам, либо значения

%функции на концах исходного отрезка

%одного знака

while ((x1-x0)>2*eps)&(iter<itermax)&...

                 (f(x0)*f(x1)<=0)

x2=0.5*(x0+x1);

root(iter)=x2;

if f(x0)*f(x2)<=0

   x1=x2;

end

if f(x2)*f(x1)<=0

   x0=x2;

end  

iter=iter+1;

end

root(iter)=0.5*(x0+x1);

%рисуем историю сходимости итераций к

%корню уравнения

plot(1:iter,root,'-*');

 

Рис.6,а. Сходимость метода дихотомии к корню уравнения exp(-x) - x - 1 = 0 Рис.6,б. Сходимость метода дихотомии к одному из корней уравнения sin(4p x) = 0

 

В методе простых итераций исходное уравнение (19) преобразуется к уравнению x = f(x). Процедура преобразования неоднозначна, например, допустимо преобразование вида: x = f(x) = x + y(x)f(x), где y(x) — произвольная непрерывная, отличная от нуля в интересующем нас диапазоне, функция.

Выберем нулевое приближение x0 и вычислим все последующие приближения по формуле:

xn+1 = f(xn), n = 0,1,2,…                                                             (21)

Очевидно, что, если последовательность xn, n = 0,1,… сходится к некоторому пределу , то этот предел является корнем исходного уравнения.

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

                                        (22)

где точка x лежит между xn и . Если всюду , то, согласно (22), следует, что последовательность , n = 0,1,… убывает не медленнее членов геометрической последовательности со знаменателем q < 1 и последовательность xn, n = 0,1,… сходится при любом начальном значении x0. Если , то итерации не сходятся к значению , если , а в отдалении от корня , то для сходимости итераций необходимо выбирать начальное приближение из близкой к корню окрестности.

Ясно, что скорость сходимости тем выше, чем меньше значение q. При этом сходимость в окрестности корня определяется величиной  и будет особенно высокой при .

Рассмотрим пример решения уравнения f(x) = x2 - a, a > 0. Перепишем это уравнение двумя способами:

1)  и 2) .                                   (23)

Каждый из способов записи (23) порождает соответствующий итерационный процесс. Согласно первой форме записи в (23),  при  и , т.е. итерационный процесс расходится в окрестности и того и другого корней. Согласно второй форме записи в (23),  при  и , т.е. итерационный процесс сходится при  к корню  и при  к корню .

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

                                                                (24)

Решая систему уравнений (24) относительно двух неизвестных  и q, найдем оценку точности приближения , т.е.

                                                 (25)

где e — заданное значение точности расчетов. Таким образом, в качестве критерия остановки итерационного процесса выступает условие выполнения неравенства (25).

На листинге_№6 приведен код программы численной оценки корня уравнения x2 - a = 0 методом простой итерации в форме 2) из (23). На рис.7,а приведена траектория выхода итерационной последовательности на корень , а на рис.7,б — на корень .

 

Листинг_№6

%Программа поиска корня уравнения

%методом простой итерации

%очищаем рабочее пространство

clear all

%определяем точность численной оценки корня

eps=1e-10;

%определяем максимально возможное число

%итераций

itermax=100;

%определяем параметр уравнения f(x)=x^2-a=0

a=2;

%задаем функцию phi

phi=@(x)0.5*(x+a/x);

%определяем начальное приближение x0

x0=0.5;

x1=phi(x0); x2=phi(x1);

root(1)=x0; root(2)=x1; root(3)=x2;

it=4;

%организуем цикл расчета последовательных итераций

while ((x2-x1)^2/abs(2*x1-x0-x2)>eps)&(it<itermax)

x0=x1; x1=x2; x2=phi(x1);

root(it)=x2;

it=it+1;

end

root(it)=phi(x2);

%рисуем траекторию сходимости итераций к

%корню уравнения

plot(1:it,root,'-*');

 

Рис.7,а. Сходимость к корню Ö2 Рис.7,б. Сходимость к корню -Ö2

 

Метод Ньютона называется также методом касательных или методом линеаризации. Запишем следующую последовательность преобразований исходного уравнения (19):

где точка x находится между парой xn и , тогда

.                                                                           (26)

С помощью (26) можно получить итерационный процесс, если заменить x на xn и  на xn +1. В итоге получаем искомый итерационный процесс, который составляет суть метода Ньютона:

.                                                                      (27)

Геометрический смысл процесса поиска приближенного значения корня (27) представлен на рис.8. Каждая последующая итерация есть пересечения касательной к графику функции y = f(x) в точке предыдущей итерации с осью абсцисс.

Рис.8. Геометрическая интерпретация к методу Ньютона

 

Метод Ньютона можно рассматривать как частный случай метода простой итерации, если считать, что , тогда . Если  p-кратный корень уравнения (19), то в окрестности корня , тогда , т.е. . Для простого корня, когда p = 1 имеем .

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

Оценим скорость сходимости метода Ньютона для простого корня. Рассмотрим представление:

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

,                                                          (28)

где .

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

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

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

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

                                                                             (29)

                                                                (30)

где n = 0,1,… В методе простой итерации сходимость обеспечивается, когда , т.е. при .

На листинге_№7 приведен код программы, которая, согласно (29), (30), рассчитывает последовательные приближения к искомому корню согласно методу простой итерации и методу Ньютона. На рис.9 приведен совместный график, который дает возможность визуально сравнить скорости сходимости для первого и второго методов.

 

Листинг_№7

%Программа сравнения метода простой итерации

%и метода Ньютона на примере решения

%уравнения exp(ax)-x-1=0

%очищаем рабочее пространство

clear all

%задаем максимальное число итераций

itermax=20;

%определяем параметр уравнения

a=-0.5;

iter=1;

%задаем начальные значения для итераций

%метода простой итерации x0si и для

%метода Ньютона x0n

x0si=3; x0n=3;

rsi(iter)=x0si; rn(iter)=x0n;

%организуем итерационный процесс

while iter<itermax

x1si=exp(a*x0si)-1;

x1n=((a*x0n-1)*exp(a*x0n)+1)/(a*exp(a*x0n)-1);

iter=iter+1;

rsi(iter)=x1si; rn(iter)=x1n;

x0si=x1si; x0n=x1n;

end

%строим графики, иллюстрирующие динамику

%итерационного процесса

plot(1:iter,rsi,'-*',1:iter,rn,'-p');

 

Рис.9. Сравнение скоростей сходимости метода простой
итерации и метода Ньютона

 

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

.                               (31)

Итерационный процесс (21) с функцией (31) называется стационарным процессом p -го порядка. Скорость сходимости этого процесса легко можно получить, производя соответствующее разложение Тейлора, т.е.

.             (32)

Если , то из (32) следует

.

Сходимость при p = 1 называют линейной, что соответствует методу простой итерации, при p = 2 — квадратичной, что, например, отвечает методу Ньютона, а при p = 3 — кубичной. Хотя с ростом порядка сходимость усиливается, область гарантированной сходимости уменьшается.

В качестве примера кубической скорости сходимости итераций рассмотрим решение уравнения f(x) = x - x3 = 0, которое естественным образом преобразуется к форме (21), т.е. x = f(x) = x3. Запишем итерационный процесс: , n = 0,1,… Непосредственной проверкой, согласно формуле (32), можно показать, что данный процесс для поиска корня  является стационарным порядка 3, т.е. имеет место кубическая скорость сходимости.

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

                                        (33)

Для работы процесса (33) необходимо задать два начальных значения x0 и x1. Процессы, в которых вычисление последующего приближения зависит от двух предыдущих, называют двухшаговыми.

Рис.10. Геометрическая интерпретация к методу секущих

 

Геометрическая интерпретация метода секущих представлена на рис.10. В отличие от метода Ньютона последующие итерации находятся не из пересечения касательных с осью абсцисс, а соответствующих хорд (секущих).

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

                                  (34)

Решение рекуррентного уравнения (34) будем искать в виде, аналогичном (28), (32), т.е. . Подставляя это соотношение в (34), находим соотношения для неопределенных параметров:

.                                                                (35)

Только положительный корень квадратного уравнения для b в (35) отвечает условию убывания ошибки, т.е.

.                                                         (36)

Оценка (36) для метода секущих является основной. Сравнивая формулы (28) и (36), можно убедиться, что метод секущих сходится медленнее, т.к. для него b = 1,618, а для метода Ньютона — b = 2.

Для сравнения методов секущих и Ньютона обратимся к листингу_№8 программы, где осуществляется численный поиск корня уравнения . На рис.11 приведен итог работы кода программы. Из рис.11 видно, что методу секущих потребовалось приблизительно в два раза больше итераций (17 против 9) для достижения полной неразличимости двух соседних итераций.

 

Листинг_№8

%Программа сравнения метода секущих и Ньютона

%очищаем рабочее пространство

clear all

%вводим максимальное количество итераций

itermax=20;

%определяем параметр a уравнения exp(ax)-x-1=0,

%само уравнение и его производную

a=-4;

f=@(x)exp(a*x)-x-1;

df=@(x)a*exp(a*x)-1;

%определяем начальные значения для

%итерационного процесса в методе секущих

x0=1; x1=x0-f(x0)/df(x0);

iters=1;

%организуем итерационный процесс метода секущих,

%где вводится проверка на различимость ближайших

%итераций

while (iters<itermax)&(x0~=x1)

x2=x1-((x1-x0)*f(x1))/(f(x1)-f(x0));

roots(iters)=x2;

iters=iters+1;

x0=x1; x1=x2;

end

iters=iters-1;

%определяем начальное значение для метода Ньютона,

%оно такое же, как и для метода секущих

x0=1;

itern=1;

%организуем итерационный процесс метода Ньютона,

%где вводится проверка на различимость ближайших

%итераций

while (itern<itermax)&(x0~=x0-f(x0)/df(x0))

x1=x0-f(x0)/df(x0);

rootn(itern)=x1;

itern=itern+1;

x0=x1;

end

itern=itern-1;

%строим совместно два графика сходимости к корню

%и для метода секущих, и для метода Ньютона

plot(1:iters,roots,'-*',1:itern,rootn,'-p');

 

Рис.11. Сравнение скоростей сходимости метода
секущих и Ньютона

 


Дата добавления: 2022-01-22; просмотров: 31; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!