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

Автор работы: Пользователь скрыл имя, 28 Ноября 2013 в 19:40, курсовая работа

Краткое описание

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

Содержание

Введение 3
§1.Численные методы решения
нелинейных уравнений
5
1.1. Постановка задачи 6
§2.Этапы приближенного решения нелинейных уравнений.
7
2.1 Определение корней 8
2.2 Уточнение корней 12
§3.Основные методы решения нелинейных уравнений
13
3.1 Метод половинного деления 14
3.2 Метод касательных (Ньютона) 16
3.3 Метод секущих (хорд) 23
3.4 Метод простой итерации 28
Заключение 33
Список используемой литературы 34

Прикрепленные файлы: 1 файл

Численные методы.docx

— 277.57 Кб (Скачать документ)

Геометрический смысл метода касательных  состоит в замене дуги y = f (x) касательной, одной к одной из крайних точек . Начальное приближение x 0=a или    x0 = b брать таким, чтобы вся последовательность приближения х k принадлежала интервалу (a;b). В случае существования производных f ’, f ”, сохраняющих свои знаки в интервале, за х0 берется тот конец отрезка [a;b], для которого выполняется условие  f ’(х0) * f (х0) > 0. Для оценки приближения используется общая формула :

|c-x k-1 | £ | f (x k+1)/m| , где m = min f ’(x) на отрезке [a;b] .

На практике проще пользоваться другим правилом :

Если на отрезке [a;b] выполняется условие 0 < m <  | f (x)|  и e - заданная точность решения, то неравенство | x k+1-x k| £ e влечет выполнение неравенства       |c-x k-1| £ e .

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

|c-x k-1| £ e .

Пример 1. Определим корни уравнения х3 + 0,1х2 + 0,4х – 1,2 = 0 аналитически. Находим: f  (x) =  х3 + 0,1х2 + 0,4х – 1,2

f ‘ (x) =  3х2 + 0,1х + 0,4

f (–1)   = –2,5 < 0  f (0)   = –1,2 < 0  f (+1)   = 0,3 > 0

x

- ¥

-1

0

+1

+ ¥

sign f (x)

-

-

-

+

+


Следовательно, уравнение имеет  действительный корень, лежащий в  промежутке [0; +1].

Приведем уравнение к виду x =  j (x), так, чтобы |j ‘ (x)|<1 при 0 £ x £ +1.

Так как max | f ’(x) | = f ’(+1) = 3 + 0,1 + 0,4 = 3,5 то можно взять R = 2.

Тогда j (x) = x – ( f (x) / R) = x – 0,5 х3 – 0,05 х2 – 0,2 х + 0,6 = – 0,5 х3 – 0,05 х2 + 0,8 х + 0,6.

Пусть х0 = 0 , тогда х n+1 = j (х n).

Вычисления расположим в таблице.     

n

хn

х2n

х3n

j (хn).

f (x)

1

1

1

1

0,85

-0,17363

2

0,85

0,7225

0,614125

0,9368125

0,08465

3

0,9368125

0,87761766

0,822163194

0,89448752

-0,04651

4

0,89448752

0,800107923

0,715686552

0,917741344

0,024288

5

0,917741344

0,842249174

0,772966889

0,905597172

-0,01306

6

0,905597172

0,820106238

0,74268589

0,912129481

0,006923

7

0,912129481

0,83198019

0,758873659

0,908667746

-0,0037

8

0,908667746

0,825677072

0,750266124

0,910517281

0,001968

9

0,910517281

0,829041719

0,754856812

0,909533333

-0,00105

10

0,909533333

0,827250884

0,752412253

0,910057995

0,000559

11

0,910057995

0,828205555

0,753715087

0,909778575

-0,0003

12

0,909778575

0,827697055

0,753021048

0,909927483

0,000159

13

0,909927483

0,827968025

0,753390861

0,909848155

-8,5E-05

14

0,909848155

0,827823665

0,753193834

0,909890424

4,5E-05

15

0,909890424

0,827900583

0,753298812

0,909867904

-2,4E-05

16

0,909867904

0,827859602

0,753242881

0,909879902

1,28E-05

17

0,909879902

0,827881437

0,753272681

0,90987351

-6,8E-06

18

0,90987351

0,827869803

0,753256804

0,909876916

3,63E-06

19

0,909876916

0,827876002

0,753265263

0,909875101

-1,9E-06

20

0,909875101

0,827872699

0,753260756

0,909876068

1,03E-06


 

График функции  y =  х3 + 0,1х2 + 0,4х – 1,2

 

 

 

 


Блок-схема  программы

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Программа на языке Paskal

program metod_kasatel;

var  xn,xn1,a,b,c,mx,y0,x0:real;

function f1(x1:Real): Real;

begin

  f1 := x1*x1*x1*(-0.5)-0.05*x1*x1+0.8*x1+0.6;

 end;

function f2(x4:Real): Real; {Производная от основной функции}

 begin

  f2 := x4*x4*x4+0.5*x4*x4+0.1*x4*x4+0.4*x4–1.2;

 end;

begin  

a:=0;b:=1;c:=0.00000001;

 Writeln(' От A=',a,' до B=',b);

Writeln(' Погрешность с=',c);

Readln;

xn:=b;

xn1:= f1(xn);

 y0:=f2(b);

while ABS(y0)>c do {Проверка по точности вычисления корня}

 begin   xn:=xn1;

  xn1:=f1(xn);

  y0:= f2(xn1);

   {Печать  промежуточного результата}

   Writeln('xn=',xn,' xn+1=',xn1,' f(xn+1)=',y0);

  Readln;

end;

Writeln('Конечные значения'); {Печать полученного результата}

Writeln(' xn+1=',xn1,' f(xn+1)=',y0);

end.

 

Результат выполнения программы

От A= 0.0000000000E+00 до B= 1.0000000000E+00

 Погрешность с= 1.0000000000E-08

От A= 0.0000000000E+00 до B= 1.0000000000E+00

 Погрешность с= 1.0000000000E-08

 

xn= 8.5000000000E-01 xn+1= 9.3681250000E-01 f(xn+1)= 8.4649960270E-02

xn= 9.3681250000E-01 xn+1= 8.9448751986E-01 f(xn+1)=-4.6507647892E-02

xn= 8.9448751986E-01 xn+1= 9.1774134381E-01 f(xn+1)= 2.4288343840E-02

xn= 9.1774134381E-01 xn+1= 9.0559717189E-01 f(xn+1)=-1.3064617920E-02

xn= 9.0559717189E-01 xn+1= 9.1212948085E-01 f(xn+1)= 6.9234699658E-03

xn= 9.1212948085E-01 xn+1= 9.0866774587E-01 f(xn+1)=-3.6990702320E-03

xn= 9.0866774587E-01 xn+1= 9.1051728099E-01 f(xn+1)= 1.9678960780E-03

xn= 9.1051728099E-01 xn+1= 9.0953333295E-01 f(xn+1)=-1.0493249720E-03

xn= 9.0953333295E-01 xn+1= 9.1005799543E-01 f(xn+1)= 5.5884091853E-04

xn= 9.1005799543E-01 xn+1= 9.0977857497E-01 f(xn+1)=-2.9781681224E-04

xn= 9.0977857497E-01 xn+1= 9.0992748338E-01 f(xn+1)= 1.5865717614E-04

xn= 9.0992748338E-01 xn+1= 9.0984815480E-01 f(xn+1)=-8.4537703515E-05

xn= 9.0984815480E-01 xn+1= 9.0989042365E-01 f(xn+1)= 4.5040009354E-05

xn= 9.0989042365E-01 xn+1= 9.0986790364E-01 f(xn+1)=-2.3997676180E-05

xn= 9.0986790364E-01 xn+1= 9.0987990248E-01 f(xn+1)= 1.2785800209E-05

xn= 9.0987990248E-01 xn+1= 9.0987350958E-01 f(xn+1)=-6.8122881203E-06

xn= 9.0987350958E-01 xn+1= 9.0987691573E-01 f(xn+1)= 3.6295678001E-06

xn= 9.0987691573E-01 xn+1= 9.0987510095E-01 f(xn+1)=-1.9338276616E-06

xn= 9.0987510095E-01 xn+1= 9.0987606786E-01 f(xn+1)= 1.0303429008E-06

xn= 9.0987606786E-01 xn+1= 9.0987555269E-01 f(xn+1)=-5.4896190704E-07

xn= 9.0987555269E-01 xn+1= 9.0987582717E-01 f(xn+1)= 2.9248803912E-07

xn= 9.0987582717E-01 xn+1= 9.0987568093E-01 f(xn+1)=-1.5583464119E-07

xn= 9.0987568093E-01 xn+1= 9.0987575885E-01 f(xn+1)= 8.3031409304E-08

xn= 9.0987575885E-01 xn+1= 9.0987571733E-01 f(xn+1)=-4.4236003305E-08

xn= 9.0987571733E-01 xn+1= 9.0987573945E-01 f(xn+1)= 2.3572283681E-08

xn= 9.0987573945E-01 xn+1= 9.0987572766E-01 f(xn+1)=-1.2558302842E-08

xn= 9.0987572766E-01 xn+1= 9.0987573394E-01 f(xn+1)= 6.6920620156E-09

Конечные значения

xn+1= 9.0987573394E-01 f(xn+1)= 6.6920620156E-09

Метод хорд.

Пусть на отрезке [a;b] функция непрерывна, принимает на концах отрезка значение разных знаков, а производная f '(x) сохраняет знак. В зависимости от знака второй производной возможны следующие случаи расположения кривых (рис. 1).

 
 

Рис. 1. Возможные случаи расположения кривых.

Алгоритм приближенного вычисления корня методом хорд. 
Исходные данные: f (x) – функция; ε – требуемая точность; x0 – начальное приближение. 
Результат: xпр – приближенный корень уравнения f (x) = 0.

Метод решения: 

Рис. 2. Геометрическая интерпретация  метода хорд для случая f '(x) f ''(x)>0.

Рассмотрим случай, когда f '(x)  и f ''(x)  имеют одинаковые знаки (рис. 2).

График функции проходит через  точки A0(a,f(a)) и B0(b,f(b)). Искомый корень уравнения (точка x*) нам неизвестен, вместо него возьмет точку х1 пересечения хорды А0В0 с осью абсцисс. Это и будет приближенное значение корня. 
В аналитической геометрии выводится формула, задающая уравнение прямой, проходящей через две точки с координатами (х1; у1) и (х2; у2): . 
Тогда уравнение хорды А0В0 запишется в виде: . 
Найдем значение х = х1, для которого у = 0:  . Теперь корень находится на отрезке [x1;b]. Применим метод хорд к этому отрезку. Проведем хорду, соединяющую точки A1(x1,f(x1)) и B0(b,f(b)), и найдем х2 - точку пересечения хорды А1В0 с осью Ох: x2=x1
Продолжая этот процесс, находим: x3=x2. Получаем рекуррентную формулу вычисления приближений к корню xn+1=xn
В этом случае конец b отрезка [a;b]  остается неподвижным, а конец a перемещается. 
Таким образом, получаем расчетные формулы метода хорд:

xn+1=xn;         x0=a.                                     (4)

Вычисления очередных приближений  к точному корню уравнения  продолжается до тех пор, пока не достигнем  заданной точности, т.е. должно выполняться  условие: |xn+1-xn|<, где - заданная точность. 
Теперь рассмотрим случай, когда первая и вторая производные имеют разные знаки, т.е. f '(x) f ''(x)<0. (рис. 3).

 
Рис. 3. Геометрическая интерпретация метода хорд для случая f '(x) f ''(x)<0.

Соединим точки A0(a,f(a)) и B0(b,f(b))  хордой А0В0. Точку пересечения хорды с осью Ох будем считать первым приближение корня. В этом случае неподвижным концом отрезка будет являться конец а. 
Уравнение хорды А0В0:. Отсюда найдем x1, полагая y = 0: x1=b. Теперь корень уравнения x[a;x1]. Применяя метод хорд к этому отрезку, получим x2=x1. Продолжая и т.д., получим xn+1=xn
Расчетные формулы метода:

xn+1=xn, x0=0 .                                                           (5) 
Условие окончания вычислений: |xn+1-xn|<. Тогда хпр = xn+1 с точностью Итак, если f '(x) f ''(x)>0 приближенное значение корня находят по формуле (4), если f '(x) f ''(x)<0, то по формуле (5).

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

Пример. Проиллюстрировать действие этого правила на уравнении

(x-1)ln(x)-1=0, если отрезок изоляции корня [2;3].

Решение. Здесь f(x)=(x-1)ln(x)-1.

f '(x)=ln(x)+;

 f ''(x)=.

Вторая производная в этом примере  положительна на отрезке изоляции корня [2;3]: f ''(x)>0, f(3)>0, т.е. f(b) f''(x)>0. Таким образом, при решении данного уравнения методом хорд для уточнения корня выбираем формулы (4).

 

 

program horda; 
var e,c,a,b,y,ya,yb,yn,x,x1,x2,xn,f1,f2:real; 
begin e:=0.0001; 
writeln('vvedi nachalo otrezka'); 
readln(a); 
writeln('vvedi konec otrezka'); 
readln(b); 
x:=a; 
y:=((x-1)*ln(x))-1; 
ya:=y; x:=b; 
y:=((x-1)*ln(x))-1; 
yb:=y; c:=(a+b)/2; x:=c; 
y:=((x-1)*ln(x))-1; 
f1:=ln(x) + (x-1)/x ; 
f2:= 1/x + 1/(x*x);

if (ya*yb < 0) and (f1*f2 > 0) 
then begin x1:=a; while abs(x2 - x) > e do 
begin x:=x1; y:=((x-1)*ln(x))-1; yn:=y; 
x2:=x1 - (yn*(b-x1))/(yb - yn); 
x1:=x2; end; 
writeln('koren uravneniya xn = ', x2) 
end elsebegin x1:=b; 
while abs(x2 - x) > e do 
begin x:=x1; y:=((x-1)*ln(x))-1; yn:=y; 
x2:=x1 - (yn*(x1- a))/(yn - ya); 
x1:=x2; end; 
writeln('koren uravneniya xn = ', x2); 
end; 
end. 

 

 

Метод простых  итераций.

Рассмотрим  уравнение f(x)=0  (1) с отделенным корнем X[a, b]. Для решения уравнения (1) методом простой итерации приведем его к равносильному виду: x=φ(x).  (2)

Это всегда можно  сделать, причем многими способами. Например:

x=g(x) · f(x) + x ≡ φ(x), где g(x) - произвольная непрерывная функция, не имеющая корней на отрезке [a,b].

Пусть x(0) - полученное каким-либо способом приближение к корню x (в простейшем случае x(0)=(a+b)/2). Метод простой итерации заключается в последовательном вычислении членов итерационной последовательности:

x(k+1)=φ(x(k)), k=0, 1, 2, ... (3)

начиная с приближения x(0).

УТВЕРЖДЕНИЕ: 1 Если последовательность {x(k)} метода простой итерации сходится и функция φ непрерывна, то предел последовательности является корнем уравнения x=φ(x)

ДОКАЗАТЕЛЬСТВО: Пусть . (4)

Перейдем  к пределу в равенстве x(k+1)=φ(x(k)) Получим с одной стороны по (4), что а с другой стороны в силу непрерывности функции φ и (4) .

В результате получаем x*=φ(x*). Следовательно, x* - корень уравнения (2), т.е. X=x*.

Чтобы пользоваться этим утверждением нужна сходимость последовательности {x(k)}. Достаточное условие сходимости дает:

ТЕОРЕМА 1: (о сходимости) Пусть уравнение x=φ(x) имеет единственный корень на отрезке [a,b] и выполнены условия:

1) φ(x) C1[a,b];

2) φ(x) [a,b] " x [a,b];

 

3) существует константа q > 0: | φ '(x) | ≤ q < 1 x [a,b]. Tогда итерационная последовательность {x(k)}, заданная формулой x(k+1) = φ(x(k)), k=0, 1, ... сходится при любом начальном приближении x(0) [a,b].

ДОКАЗАТЕЛЬСТВО: Рассмотрим два соседних члена последовательности {x(k)}: x(k) = φ(x(k-1)) и x(k+1) = φ(x(k)) Tак как по условию 2) x(k) и x(k+1) лежат внутри отрезка [a,b], то используя теорему Лагранжа о средних значениях получаем:

x (k+1) - x (k) = φ(x (k)) - φ(x (k-1)) = φ '(c k )(x (k) - x (k-1)), где c k (x (k-1), x (k)).

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

| x (k+1) - x (k) | = | φ '(c k ) | · | x (k) - x (k-1) | ≤ q | x (k) - x (k-1)| ≤

≤ q ( q | x (k-1) - x (k-2) | ) = q 2 | x (k-1) - x (k-2) | ≤ ... ≤ q k | x (1) - x (0) |. (5)

Рассмотрим  ряд S = x (0) + ( x (1) - x (0) ) + ... + ( x (k+1) - x (k) ) + ... . (6)

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

Sk = x (0) + ( x (1) - x (0) ) + ... + ( x (k) - x (k-1) ).

Но нетрудно вычислить, что

Sk = x (k)). (7)

Следовательно, мы тем самым докажем и сходимость итерационной последовательности {x(k)}.

Для доказательства сходимости pяда (6) сравним его почленно (без первого слагаемого x(0)) с рядом

q 0 | x (1) - x (0) | + q 1 |x (1) - x (0)| + ... + |x (1) - x (0)| + ...,  (8)

который сходится как бесконечно убывающая геометрическая прогрессия (так как по условию q < 1). В силу неравенства (5) абсолютные величины ряда (6) не превосходят соответствующих членов сходящегося ряда (8) (то есть ряд (8) мажорирует ряд (6). Следовательно ряд (6) также сходится. Tем самым сходится последовательность {x(0)}.

Получим формулу, дающую способ оценки погрешности |X - x (k+1)|

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

Имеем

X - x(k+1) = X - Sk+1 = S - Sk+1 = (x(k+2) - (k+1) ) + (x(k+3) - x(k+2) ) + ... .

Следовательно

|X - x(k+1)| ≤ |x(k+2) - (k+1) | + |x(k+3) - x(k+2) | + ... ≤ qk+1 |x(1) - x(0) | + qk+2 |x(1) - x(0) | + ... = qk+1|x(1) - x(0) | / (1-q).

В результате получаем формулу

|X - x(k+1)| ≤ qk+1|x(1) - x(0) | / (1-q).   (9)

Взяв за x(0) значение x(k), за x(1) - значение x(k+1) (так как при выполнении условий теоремы такой выбор возможен) и учитывая, что при имеет место неравенство qk+1 ≤ q выводим:

|X - x(k+1)| ≤ qk+1|x(k+1) - x(k) | / (1-q) ≤ q|x(k+1) - x(k) | / (1-q).

Итак, окончательно получаем:

|X - x(k+1)| ≤ q|x(k+1) - x(k) | / (1-q).   (10)

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

|X - x(k+1)| ≤ ε.

С учетом (10) получаем, что точность ε будет достигнута, если выполнено неравенство

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