Численные методы решения нелинейных уравнений, используемые в прикладных задачах

Автор работы: Пользователь скрыл имя, 18 Апреля 2015 в 15:07, курсовая работа

Описание работы

Уравнение типа F(x)=0 или x=f(x) называется нелинейным. Решить уравнение - это значит найти такое x, при котором уравнение превращается в тождество. В общем случае уравнение может иметь 0; 1; 2;...∞ корней. Рассмотренные ниже численные методы решения нелинейных уравнений позволяют находить один корень на заданном интервале [a,b]. Сразу оговоримся, что любой метод является приближенным, и по сути дела лишь уточняющим значение корня. Однако уточняющим до любой точности, заданной Нами.

Содержание работы

Введение
. Теоретическая часть
.1 Метод половинного деления
.2 Метод хорд
. Постановка и решение задачи
.1 Формулировка задачи
.2 Решение уравнения методом половинного деления
.3 Решение уравнения методом хорд
. Программная реализация
.1 Блок-схемы
.2 Тексты программ
.3 Тестовый пример
.4 Решение задачи с помощью ЭВМ
Заключение
Список литературы

Файлы: 1 файл

Нахождение корня уравнения методом дихотомии и методом хорд.rtf

— 7.01 Мб (Скачать файл)

.25 > 0.01 - да

Полученная погрешность больше, следовательно, возвращаемся к началу цикла F(a)*F(c) <= 0. Затем выполняем цикл решения до тех пор, пока полученная погрешность не удовлетворит условию задачи.

3-й Шаг. Вычисление середины отрезка

с = (-2 + (-1.5))/2 = -1.75

F(a) = -12(c) = -3.734375

.8125 <= 0 - нет= c = -1.75

[-1.75;-1.5]

4-й Шаг. Вычисление погрешности

d = (-1.5 + 1.75)/2 = 0.125

.125 > 0.01 - да

5-й Шаг. Вычисление середины отрезка

c = (-1.75 + (-1.5))/2 = -1.625

F(a) = -3.734375

F(c) = -0.134766(a)*F(c) = -3.734375*(-0.134766) = 0.5032654

.5032654 <= 0 - нет= c = -1.625

[-1.625;-1.5]

6-й Шаг. Вычисление погрешности

d = (-1.5 + 1.625)/2 = 0.0625

.0625 > 0.01 - да

7-й Шаг. Вычисление середины отрезка

c = (-1.625 + (-1.5))/2 = -1.5625(a) = -0.134766(c) = 1.5368652(a)*F(c) = -0.134766*1.5368652 = -0.207117

.207117 <= 0 - да = c = -1.5625

[-1.625;-1.5625]

8-й Шаг. Вычисление погрешности

d = (-1.5625 + 1.625)/2 = 0.03125

.03125 > 0.01 - да

9-й Шаг. Вычисление середины отрезка

c = (-1.625 + (-1.5625))/2 = -1.59375(a) = -0.134766(c) = 0.7115784(a)*F(c) = -0.134766*0.7115784 = -0.095897

.095897 <= 0 - да = c = -1.59375

[-1.625;-1.59375]

10-й Шаг. Вычисление погрешности

d = (-1.59375 + 1.625)/2 = 0.015625

.015625 > 0.01 - да

11-й Шаг. Вычисление середины отрезка

c = (-1.625 + (-1.59375))/2 = -1.609375(a) = -0.134766(c) = 0.29105(a)*F(c) = -0.134766*0.29105 = -0.039224

.039224 <= 0 - да = c = -1.5625

[-1.625;-1.609375]

12-й Шаг. Вычисление погрешности

d = (-1.609375 + 1.625)/2 = 0.0078125

.0078125 > 0.01 - нет

x = (b + a)/2 = (-1.625 + (-1.609375))/2 = -1.6271875

Ответ: Значение корня x = -1.6271875 с погрешностью d = 0.0078125

 

2.3 Решение уравнения методом хорд

 

Нахождение корня уравнения методом хорд на примере уравнения на промежутке [-2;-1], с погрешностью ε =0.01.

1-й Шаг. Проверка условия

F(a)*F ̋ (a) >= 0

Для этого вычислим вторую производную

F ̋ (a) = 6*x - 12 = 6*(-2) - 12 = -12 - 12 = -24

F(a) = = -8 - 6*4 + 20 = -8 - 24 + 20 = -8 - 4 = -12

F(a)*F ̋ (a) = -12*(-24) = 288

Для нахождения минимума, вычислим первые производные промежутка [-2;-1], то есть найдем F΄(a) и F΄(b).

F΄(a) = = = 12 + 24 = 36

F΄(b) =

В данном случае минимум будет являться F΄(b), min = 15.

Проверим ранее полученное условие F(a)*F ̋ (a) >= 0.

Если 288 >= 0, то

c:= a = -2

x = -1

2-й Шаг.

Вычисляем значение у по формуле итерационной последовательности

y = (c*F(x) - x*F(c))/(F(x) - F(c))

 

-й Шаг. Вычисление погрешности

 

d = ²F(x)²/m

d = ²13²/15 = 0.8666

 

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

d >= ε

.8666 >= 0.01 - да

x:= y = -1.52

4-й Шаг.

.625792

5-й Шаг. Вычисление погрешности

d = ²2.625792²/15 = 0,1750528

.1750528 >= 0.01 - да

x:= y = -1.606175

6-й Шаг.

y = (-2*0.377604 - (-1.606175)*(-12))/(0.377604 - (-12)) = (-0.755208 - (19.2741))/12.377604 =-1.628189

7-й Шаг. Вычисление погрешности

d = ²0.377604²/15 = 0.0251736

.0251736 >= 0.01 - да

x:= y = -1.628189

8-й Шаг.

y = (-2*0.0515006 - (-1.618189)*(-12))/(0.0505006 - (-12)) = (12.763357 - 19.418268)/12.0505006 = -0.552252

9-й Шаг. Вычисление погрешности

d = ²0.0505006²/15 = 0.003667

.0033667 >= 0.01 - нет

x = -1.628189

d = 0.0033667

Ответ: Значение корня x = -1.628189 с погрешностью d = 0.0033667

 

3.  
Программная реализация

 

.1 Блок-схемы

корень уравнение дихотомия хорда

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

 

 

Метод хорд

 

3.2 Тексты программ

 

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

Программа реализована для нахождения корня уравнения , методом половинного деления, корни которого находятся на промежутке [-2;1], с погрешностью ε=0.01.

 

unit Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls;= class(TForm): TEdit;: TEdit;: TLabel;: TLabel;: TLabel;: TEdit;: TButton;: TEdit;Button1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm1;

{$R *.dfm}TForm1.Button1Click(Sender: TObject);,x1,y,e:real; k:integer;F(c:real):real;:=c*c*c-6*c*c+c+20;;:=strtofloat(edit1.Text);:=strtofloat(edit2.Text);:=strtofloat(edit3.Text);:=(x1+x0)/2;f(x0)*f(x1)<0 then x1:=y else begin x0:=y end(x1-x0)<e;.text:='Ответ:'+floattostrf(y,ffFixed, 20,6);;

end.

 

Метод хорд

Программа реализована для нахождения корня уравнения , методом половинного деления, корни которого находятся на промежутке [-2;1], с погрешностью ε=0.01.

 

unit Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls;= class(TForm): TEdit;: TEdit;: TLabel;: TLabel;: TLabel;: TEdit;: TButton;: TEdit;Button1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm1;

{$R *.dfm}TForm1.Button1Click(Sender: TObject);,x1,y,e,g:real; k:integer;F(c:real):real;:=c*c*c-6*c*c+c+20;;:=strtofloat(edit1.Text);:=strtofloat(edit2.Text);:=strtofloat(edit3.Text);:=y;:=(x0*f(x1)-x1*f(x0))/(f(x1)-f(x0));f(x0)*f(y)<0 then x1:=y else x0:=y(abs(g-y))<e;.text:='Ответ:'+floattostrf(y,ffFixed, 20,6);

end;.

 

.3 Тестовый пример

 

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

В качестве тестового примера возьмем уравнение x² - 1 = 0 на промежутке [0; 5] с точностью =0.0001

 

Рисунок 5. Результат работы программы (Метод половинного деления)

 

Метод хорд

В качестве тестового примера возьмем уравнение x² - 1 = 0 на промежутке [0; 5] с точностью =0.0001

 

Рисунок 6. Результат работы программы (Метод хорд)

 

Значения, полученные в результате решения аналитически и программно - верны

3.4 Решение задачи с помощью ЭВМ

 

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

При решении заданного уравнения на языке программирования Delphi 7 мы получаем следующие результаты, показанные на рисунке 6.

 

Рисунок 7. Результат работы программы (метод половинного деления)

 

Метод хорд

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

 

Рисунок 8. Результат работы программы (Метод хорд)

 

 

Заключение

 

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

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

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

 

 

Список литературы

 

1. Каханер Д., Моулер К., Нэш С. Численные методы и программное обеспечение (пер. с англ.). М.: Мир, 2001, 575 c.

2. Самарский А. А., Гулин А. В. Численные методы: Учеб. пособие для вузов. - М.: Наука. Гл. ред. физмат. лит., 1989. - 432 с.

3. Турчак Л.И. Основы численных методов. -М.: Наука, 1987.

4. http://www.osnpas.com/file23.html


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