- •Курсова робота
- •Анотація
- •1 Короткі теоретичні відомості
- •1.1 Метод половинного ділення
- •1.2 Метод хибного положення (хорд)
- •1.3 Метод Ньютона
- •1.4 Метод січних
- •1.5 Метод простої ітерації
- •2 Алгоритми методів
- •3 Розробка програмного забезпечення
- •3.1 Вибір мови програмування
- •3.3 Структура програмного забезпечення
- •3.4 Інструкція користувачеві
- •4 Тестування програмного забезпечення
- •4.1 Тестування програми. Тест №1
- •4.2 Тестування програми. Тест №2
- •5 Аналіз отриманих результатів
- •Висновки
- •Перелік посилань
- •Додатки додаток а Схема програми
- •Додаток б Лістинг програми
Висновки
В даній курсовій роботі було проаналізовано розв’язок нелінійних рівнянь методами Ньютона, січних та простої ітерації. В результаті роботи було досліджено існуючі методи для розв’язання таких рівнянь, а більш детально розглянуті вище згадані методи. Для цих методів було складено схему, а також написано програму на мові програмування С++. В результаті роботи за допомогою складеної програми було отримано певні корені заданого рівняння. Також було доведено, що метод Ньютона має значно вищу швидкість збіжності і для знаходження коренів потрібно значно менше ітерацій.
Перелік посилань
Квєтний Р. Н. Методи комп’ютерних обчислень: Навчальний посібник. Вінниця.: ВДТУ, 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
https://posibnyky.vntu.edu.ua/k_m/t1/316..htm
http://reshit.ru/Reshenie-nelineynyh-uravneniy
http://dssp.petrsu.ru/p/tutorial/meth_calc/files/10.shtml