Файл: ДОСЛІДЖЕННЯ ЧИСЕЛЬНИХ МЕТОДІВ ВИРІШЕННЯ НЕЛІНІЙНИХ РІВНЯНЬ МЕТОДАМИ НЬЮТОНА, СІЧНИХ ТА ПРОСТОЇ ІТЕРАЦІЇ.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].

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

ВИСНОВКИ

В даній курсовій роботі було проаналізовано розв’язок нелінійних рівнянь методами Ньютона, січних та простої ітерації. В результаті роботи було досліджено існуючі методи для розв’язання таких рівнянь, а більш детально розглянуті вище згадані методи. Для цих методів було складено схему, а також написано програму на мові програмування С++. В результаті роботи за допомогою складеної програми було отримано певні корені заданого рівняння. Також було доведено, що метод Ньютона має значно вищу швидкість збіжності і для знаходження коренів потрібно значно менше ітерацій.


ПЕРЕЛІК ПОСИЛАНЬ

  1. Квєтний Р. Н. Методи комп’ютерних обчислень: Навчальний посібник. Вінниця.: ВДТУ, 2001. С. 35.

  2. Вержбицький В. М. Основы численных методов. – М.: Высшая школа, 2002. – С. 43.

  3. Лященко М.Я., Головань М.С. Чисельні методи : Підручник. – К.: Либідь, 1996. – С. 144.

  4. Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы. – М.: Наука, 1987. – С. 83.

  5. posibnyky.vntu.edu.ua Лекція №4. Чисельні методи розв'язання нелінійних рівнянь[Електронний ресурс] / posibnyky.vntu.edu.ua. - Режим доступу: http://posibnyky.vntu.edu.ua/met/lek9.htm

  6. Chaos Методи нелінійних рівнянь (рос) [Електронний ресурс] / Chaos. – Режим доступу: http://chaos.sgu.ru/K24/MND/algoritms/algoritms.html

  7. 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

Ще корисні посилання:

  1. http://eco.sutd.ru/mathcad/docs/nle/examples.htm http://eco.sutd.ru/mathcad/docs/nle/examples.htm

  2. https://www.intuit.ru/studies/courses/3479/721/lecture/25556?page=6

  3. http://static.krasurao.ru/krasurao.ru/bvv/matlabcalc/lecture3/lecture3.htm

  4. https://posibnyky.vntu.edu.ua/k_m/t1/316..htm

  5. http://reshit.ru/Reshenie-nelineynyh-uravneniy

  6. http://dssp.petrsu.ru/p/tutorial/meth_calc/files/10.shtml