Файл: ДОСЛІДЖЕННЯ ЧИСЕЛЬНИХ МЕТОДІВ ВИРІШЕННЯ НЕЛІНІЙНИХ РІВНЯНЬ МЕТОДАМИ НЬЮТОНА, СІЧНИХ ТА ПРОСТОЇ ІТЕРАЦІЇ.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 30.03.2019
Просмотров: 1234
Скачиваний: 1
5 АНАЛІЗ ОТРИМАНИХ РЕЗУЛЬТАТІВ
В даній курсовій роботі необхідно розв’язати нелінійне рівняння (5.1)
(5.1)
методами Ньютона, січних і простої ітерації, Для того, щоб розв’язати це рівняння, необхідно визначити початкове приблизне наближення. Це можна зробити за допомогою графіка, який було побудовано для цього рівняння (Рисунок 5.1).
Рисунок
5.1 - Графік
рівняння

Дане рівняння має п’ять коренів, а саме три дійсних і два комплексних. З графіку оберемо приблизні значення початкових наближення:
x1 = -1,68;
x2 = -0,067;
x3 = 2.31.
Дійсно
ці значення задовольняють необхідну
умову
.
При значенні х0=-0,067
(f
’(x0))2=99,9,
a
добуток f’’(x0)f(x0)=5*10-10
, що є меншим за значення першої похідної,
піднесеної до квадрату. При значеннях
х0=
-1,68
; х0=2,31
також виконуються дані співвідношення.
Для того, щоб розв’язати нелінійне рівняння методом простої ітерації, було знайдено значення λ = 0.00354 та приведено наше рівняння до прийнятного вигляду:
x-0.0035*(x5-x4-3*sin(x)2-15*x-1) = 0 (5.2)
Комплексні корені рівняння (5.1) через сприяння синуса такі:
x1=x2=3,1415926 (5.3),
тобто дорівнюють одне одному і рівні числу π.
Після проведення розрахунку по знаходженню коренів нелінійного рівняння за методами Ньютона січних та простої ітерації маємо такі результати:
//У таблиці останній рядок не є правдивим, а лише правдоподібним.(зробіть цю стрічку пустою, вона не для друку!)
Таблиця 5.1 – Результати обрахунків //дані в таблиці максимольно правдоподібні (коментар не для друку!)
|
Методи |
№ кореня |
Значення кореня |
Кількість ітерацій |
|
Ньютона |
x1 |
-1.680366 |
4 |
|
x2 |
-0.067054 |
3 |
|
|
x3 |
2.310381 |
5 |
|
|
Січних |
x1 |
-1.680366 |
8 |
|
x2 |
-0.067035 |
6 |
|
|
x3 |
2.310325 |
10 |
|
|
Простої ітерації |
x1 |
-1.680136 |
5 |
|
x2 |
-0.673026 |
4 |
|
|
x3 |
2.316536 |
9 |
//Текст на наступному рядку не в повному обсязі правдивий (зробіть цю стрічку пустою, вона не для друку!)
Для розрахунку кожного з трьох коренів задані інтервали:[-2;-1], [-1;0], [2;3].
Отже, очевидно метод Ньютона найшвидше вирішує рівняння, метод ітерацій трохи не такий швидкий, але повільнішим за нього є метод січних.
ВИСНОВКИ
В даній курсовій роботі було проаналізовано розв’язок нелінійних рівнянь методами Ньютона, січних та простої ітерації. В результаті роботи було досліджено існуючі методи для розв’язання таких рівнянь, а більш детально розглянуті вище згадані методи. Для цих методів було складено схему, а також написано програму на мові програмування С++. В результаті роботи за допомогою складеної програми було отримано певні корені заданого рівняння. Також було доведено, що метод Ньютона має значно вищу швидкість збіжності і для знаходження коренів потрібно значно менше ітерацій.
ПЕРЕЛІК ПОСИЛАНЬ
-
Квєтний Р. Н. Методи комп’ютерних обчислень: Навчальний посібник. Вінниця.: ВДТУ, 2001. – С. 35.
-
Вержбицький В. М. Основы численных методов. – М.: Высшая школа, 2002. – С. 43.
-
Лященко М.Я., Головань М.С. Чисельні методи : Підручник. – К.: Либідь, 1996. – С. 144.
-
Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы. – М.: Наука, 1987. – С. 83.
-
posibnyky.vntu.edu.ua Лекція №4. Чисельні методи розв'язання нелінійних рівнянь[Електронний ресурс] / posibnyky.vntu.edu.ua. - Режим доступу: http://posibnyky.vntu.edu.ua/met/lek9.htm
-
Chaos Методи нелінійних рівнянь (рос) [Електронний ресурс] / Chaos. – Режим доступу: http://chaos.sgu.ru/K24/MND/algoritms/algoritms.html
-
BR.com.ua Нелінійні рівняння [Електронний ресурс] / BR.com.ua. – Режим доступу: https://www.br.com.ua/kurs/Mathematic/10852-1.html
//6-го і 7-го посилання не існує(зробіть цю стрічку пустою, вона не для друку!)
ДОДАТКИ
ДОДАТОК
А
Схема програми
Рисунок А.1 – Схема програми
Наведені модулі програми відповідають схемам алгоритмів, наведеним у розділі 2.
ДОДАТОК
Б
Лістинг програми
#define _USE_MATH_DEFINES
#include <iostream>
#include <cmath>
using namespace std;
double findNewton(double x, double eps)
{
double f, df; int iter = 0;
cout << "Newton's method:" << endl;
cout << "x0= " << x << "," << endl;
do {
f = (x*x*x*x*x)-(x*x*x*x)-3*sin(x*x)-14*x-1;
df =5*x*x*x*x-4*x*x*x-6*sin(x)*cos(x)-14;
x = x - f / df;
iter++;
} while (fabs(f) > eps && iter<20000);
cout << iter << " iterations," << endl;
cout << "epsilon = " << eps << endl;
cout << "result: ";
return x;
}
double findSecant(double x0, double x1, double eps)
{
double rez = x1, f0, f;
int iter = 0;
cout << "Secant method:" << endl;
cout << "epsilon = " << eps << "," << endl;
cout << "x0= " << x0 << " x1= " << x1 << "," << endl;
do {
f = (rez*rez*rez*rez*rez)-(rez*rez*rez*rez)-3*sin(rez*rez)-14*rez-1;
f0 = (x0*x0*x0*x0*x0)-(x0*x0*x0*x0)-3*sin(x0*x0)-14*x0-1;
rez = rez - f / (f - f0)*(rez - x0);
iter++;
} while (fabs(f) > eps && iter<20000);
cout << iter << " iterations"<< "," << endl;
cout << "result: ";
return rez;
}
double findSimpleIteration(double x, double eps)
{
double rez; int iter = 0;
cout << "Simple iteration method:" << endl;
cout << "epsilon = " << eps << "," << endl;
cout << "x0= " << x << " ";
do {
rez = x;
x = x-0.0035*(x*x*x*x*x-x*x*x*x-3*sin(x*x)-14*x-1);
iter++;
} while (fabs(rez - x) > eps && iter<20000);
cout << iter << " iterations" << "," << endl;
cout << "result: ";
return x;
}
int main()
{
cout << findNewton(-2, 0.01) << endl;
cout << findSecant(-2.0, 3.0, 0.01) << endl;
cout << findSimpleIteration(-2, 0.01);
cin.get(); return 0;
}
// (Перед друком видаліть цей коментар).
Увага! У даній курсовій роботі необхідні деякі технічні поправлення але лише в деяких місцях (наприклад може бути на певних сторінках, а не на всіх, але їх дуже мало, приблизно 2), і відсутні повні розв’язання для індивідуального завдання (Такі розв’язання, як зазвичай пишуть в зошиті. Саме повні розв’язання, а не одразу результати. Це мав би бути додаток В окрім додатків А і Б) тому вона розрахована максимум на оцінку 4 , враховуючи максимальний захист.
Якщо бажаєте досконало зробити курсову роботу, я рекомендую вам часто просити допомоги у викладачів, які викладають у вас цей предмет або інших викладачів, які читають лекції або приймають лабораторні роботи(це й такі, які не у вас викладають) у вашому університеті. Вони вам допоможуть швидко збутися курсача.
Корисні посилання:
Посилання на сайт з кодами програм для розв’язання нелінійного рівняння методами Ньютона (дотичних), січних (хорд), простої ітерації та половинного ділення (дихотомії):
http://prog-cpp.ru/digital-find/
Посилання на калькулятор, з допомогою якого були виконані обчислення і побудовані графіки і цієї курсової роботи:
https://math.semestr.ru/optim/newton.php
Також цим калькулятором можна створювати exel таблиці для розрахунків і відображення результатів розрахунків.
Посилання на зручний, універсальний компілятор, який був використаний для написання і перевірки кодів програми цієї курсової роботи:
https://www.onlinegdb.com/online_c++_compiler
Ще корисні посилання:
-
http://eco.sutd.ru/mathcad/docs/nle/examples.htm http://eco.sutd.ru/mathcad/docs/nle/examples.htm
-
https://www.intuit.ru/studies/courses/3479/721/lecture/25556?page=6
-
http://static.krasurao.ru/krasurao.ru/bvv/matlabcalc/lecture3/lecture3.htm