Расчетно-графическая работа

§1. ЧИСЛЕННОЕ РЕШЕНИЕ НЕЛИНЕЙНЫХ УРАВНЕНИЙ.

1п. Общий вид нелинейного уравнения

F(x)=0

Нелинейные уравнения могут быть двух видов:

Алгебраические 
anxn + an-1xn-1 +… + a0 = 0

Трансцендентные- это уравнения в которых х является аргументом тригонометрической, логарифмической или показательной функции.


Значение х0 при котором существует равенство f(x0)=0 называется корнем уравнения.

В общем случае для произвольной F(x) не существует аналитических формул определения корней уравнения. Поэтому большое значение имеют методы, которые позволяют определить значение корня с заданной точностью. Процесс отыскания корней делиться на два этапа:

Отделение корней, т.е. определение отрезка содержащего один корень.

Уточнение корня с заданной точностью.

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

Второй этап, уточнение корня выполняется различными итерационными методами, суть которых в том, что строится числовая последовательность xi сходящихся к корню x0

Выходом из итерационного процесса являются условия:

		│f(xn)│≤ε

		│xn-xn-1│≤ε

рассмотрим наиболее употребляемые на практике методы: дихотомии, итерации и касательных.





2 п. Метод половинного деления.

Дана монотонная, непрерывная функция f(x), которая содержит корень на отрезке [a,b], где b>a. Определить корень с точностью ε, если известно, что f(a)*f(b)<0



Суть метода

Данный отрезок [a,b]  делится пополам, т.е. определяется x0=(a+b)/2, получается два отрезка [a,x0] и [x0,b], далее выполняется проверка знака на концах, полученных отрезков для отрезка, имеющего условия f(a)*f(x0)≤0 или f(x0)*f(b)≤0 снова проводится деление пополам координатой х, снова   выделение нового отрезка и так продолжается процесс до тех пор                   пока │xn-xn-1│≤ε

















Приведем ГСА для данного метода





Уточнить a,b



Начало

Ввод а,b,ε

F1=f(a); F2=f(b)

F1*F2>0

да

нет

Конец

X=(a+b)/2

F3=f(x)

│F3│ ≤ ε

нет

нет

да

да

F1* F3<0

да

нет

b=x1

a=x1

│b-a│>ε

Вывод x,F3

Конец




































































































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

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



Суть метода

Дано f(x)=0 (1)

Заменим уравнение (1) равносильным уравнением x=φ(x) (2). Выберем грубое, приближенное значение x0 , принадлежащее[a,b], подставим его в правую часть уравнения (2), получим:

x1= φ(x0)  (3) , далее подставим х1 в правую часть уравнения (3) получим: 
x2= φ(x1)  (4)
x3= φ(x2)  (5)

		Проделаем данный процесс n раз получим  xn=φ(xn-1)

		Если эта последовательность является сходящейся т.е. существует предел 

		x* =lim xn , то данный алгоритм позволяет определить искомый корень.

		Выражение (5) запишем как x*= φ(x*)  (6) 
Выражение (6) является решением выражения (2), теперь необходимо рассмотреть в каких случаях последовательность х1…хn является сходящейся.
Условием сходимости является если во всех токах x принадлежит [a,b] выполняется условие:  



Приведем ГСА для метода итерации:



x0=x1

Начало

Ввод x0,ε

x1=φ(x0)

│x1│-│x0│>ε

нет

да

Вывод x1

Конец



		

		

		

		

		

		

		

		

		

		

		

		

		

		

		

		

		

		

		

		

		

		

		

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

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



Суть метода

Выбираем грубое приближение корня х0 (либо точку a, либо b)

Наити значение функции точке х0 и провести касательную до пересечения с осью абсцисс, получим значение х1

Определить значение функции в точке х1, через эту точку провести касательную получим точку х2

Повторим процесс n раз




Начало

Ввод x0,ε

x1=x0-F/F1

│x1-x0│<ε

нет

да

Вывод x1

Конец

x0=x1

│f(x)│>ε

да

нетЕсли процесс сходящийся то xn  можно принять за искомое значение корня
Условиями сходимости  являются:

│f(xn)│≤ε

│xn-xn-1│≤ε



Приведем ГСА метода касательных:





































5п. Задание для РГР

Вычислить корень уравнения 



На отрезке [2,3] с точностью ε=10-4 методами половинного деления, итерации, касательных.

6 п. Сравнение методов

Эффективность численных методов определяется их универсальностью, простотой вычислительного процесса, скоростью сходимости.

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

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



























































НАЧАЛО



 Метод не сходится

Уточнить a,b

ВВОД x0 ,ε

F=f(x0), F1=f`(x0), F2=f``(x0)

Φ(x0)=FI, FI1=φ`(x0)

FI1(x0)≥1

нет

Процедура метода итерации

Ввод х0

Fx*Fx``<0

да

да

нет

Процедура метода касательных

КОНЕЦ



Ввод а,b,ε

F1 , F2

F1 *F2>0



Конец

Метод половинного деления

да

нет



 ГСА головной программы, методы оформлены подпрограммами.



		



























































































Программа по методам половинного деления, итерации и метода Ньютона.



CLS                                                                           

a = 2: b = 3: E = .0001                                                       

DEF FNZ (l) = 3 * SIN(SQR(l)) + .35 * l - 3.8                                 

F1 = FNZ(a): F2 = FNZ(b)                                                      

IF F1 * F2 > 0 THEN PRINT "УТОЧНИТЬ КОРНИ": END                               

GOSUB 1                                                                       

x0 = a                                                                        

IF ABS((-3 * COS(SQR(x))) / (.7 * SQR(x))) > 1 THEN PRINT "НЕ СХОДИТСЯ"       

DEF FNF (K) = -(3 * SIN(SQR(x)) - 3.8) / .35                                  

GOSUB 2                                                                       

x0 = b                                                                        

F = FNZ(x0)                                                                   

DEF FND (N) = (3 * COS(SQR(N)) / (2 * SQR(N))) + .35                          _
IF F * (-4.285 * (-SQR(x0) * SIN(SQR(x)) - COS(SQR(x))) / (2 * x * SQR(x))) < then print “не сходится”:end

GOSUB 3                                                                       

END                                                                           

'=========Метод половинного деления========                                   

1 x = (a + b) / 2: T = T + 1                                                  

F3 = FNZ(x)                                                                   

IF ABS(F3) < E THEN 5                                                        

IF F1 * F3 < 0 THEN b = x ELSE a = x                                         

IF ABS(b - a) > E THEN 1                                                      

5 PRINT "X="; x, "T="; T                                                      

RETURN                                                                        

'=========Метод итерации==========                                            

2 x0 = a                                                                      

12 X2 = FNF(x0): S = S + 1                                                    

IF ABS(X2 - x0) > E THEN x0 = X2: GOTO 12                                    

PRINT "X="; X2, "S="; S                                                       

RETURN                                                                        

'========Метод касательных=======                                             

3 x0 = b                                                                      

23 D = D + 1                                                                  
F = FNZ(x0): F1 = FND(x0)                                                     

X3 = x0 - F / F1                                                              

IF ABS(X3 - x0) < E THEN 100                                                  

IF ABS(F) > E THEN x0 = X3: GOTO 23                                           

100 PRINT "X="; X3, "D="; D                                                   

RETURN     

Ответ
x= 2,29834  T=11
x=2,29566   S=2
x=2,29754   D=2
где T,S,D-число итерации для метода половинного деления, итерации, касательных соответственно.