Ім'я файлу: ДОСЛІДЖЕННЯ ЧИСЕЛЬНИХ МЕТОДІВ ВИРІШЕННЯ НЕЛІНІЙНИХ РІВНЯНЬ МЕТОД Розширення: docx Розмір: 384кб. Дата: 23.01.2023 скачати Пов'язані файли: Лабораторна робота .docx урок 20.doc Реферат Міжнародна Економіка Швейцарія.docx Климець Роман.pdf Педагогіка партнерства у Німеччині.pptx практична робота1.docx лекція порох.docx 21-22.pptx Вінницький національний технічний університет Кафедра комп’ютерних наук Факультет ІТКІ КУРСОВА РОБОТА з дисципліни «Чисельні методи» на тему: «Дослідження чисельних методів вирішення нелінійних рівнянь» Студента 2 курсу групи 2КН-16б, спеціальності: 122 Комп’ютерні науки Іванова І. І. _______________________ Керівник: к.т.н., доц. Богач І. В._______________ Національна шкала ________________ Кількість балів: ___ Оцінка: ECTS ___ Члени комісії: ___________________________ ___________________________ м. Вінниця – 2018 рік Міністерство освіти і науки України Вінницький національний технічний університет Факультет інформаційних технологій та комп’ютерної інженерії ЗАТВЕРДЖУЮ Зав.кафедри КН, проф., д.т.н. _______________ А.А.Яровий (підпис) «___» ______________ 2018 р. ІНДИВІДУАЛЬНЕ ЗАВДАННЯ на курсову роботу з дисципліни «Чисельні методи» студенту групи 2КН-16б ДОСЛІДЖЕННЯ ЧИСЕЛЬНИХ МЕТОДІВ ВИРІШЕННЯ НЕЛІНІЙНИХ РІВНЯНЬ Постановка задачі: Дослідити чисельні методи вирішення нелінійних рівнянь. Розробити програмне забезпечення для розв’язання нелінійних рівнянь заданими методами (кожен метод реалізувати окремою функцією) Протестувати програму Вирішити задане нелінійне рівняння, проаналізувати отримані результати, розрахувати похибки Вхідні дані: задане нелінійне рівняння: методи для вирішення нелінійного рівняння: Ньютона, січних та простої ітерації задана похибка: 0.01 Зміст пояснювальної записки до курсової роботи: Індивідуальне завдання Вступ Короткі теоретичні відомості Алгоритми методів Розробка програмного забезпечення (вибір мови програмування; вхідні/вихідні дані; структура програми; інструкція користувачеві) Тестування програмного забезпечення Аналіз отриманих результатів Висновки Перелік посилань Додатки (схема програми; лістинг програми та додаткові, за необхідності) Дата видачі «___» __________ 2018 р. Керівник ___________ І.В.Богач (підпис) Завдання отримав ___________ І.І.Іванов (підпис) АНОТАЦІЯ В даній курсовій роботі розглянуто методи розв’язку нелінійних рівнянь. Особливу увагу приділено методам Ньютона, січних та простої ітерації. Складено схеми алгоритмів та написано програмне забезпечення, за допомогою якого розв’язується задане рівняння. Проведено аналіз швидкодії заданих методів. ANNOTATION In this course work, methods of solving nonlinear equations were considered. Particular attention was paid to Newton's methods, to the cut and simple iteration. The schemes of algorithms were made and the software was written, by which the given equation was solved. The analysis of the speed of given methods was carried out. ЗМІСТВСТУП 4 1 КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ 5 1.1 Метод половинного ділення 5 1.2 Метод хибного положення (хорд) 6 1.3 Метод Ньютона 7 1.4 Метод січних 9 1.5 Метод простої ітерації 10 2 АЛГОРИТМИ МЕТОДІВ 12 3 РОЗРОБКА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ 15 3.1 Вибір мови програмування 15 3.2 Вхідні та вихідні дані 15 3.3 Структура програмного забезпечення 16 3.4 Інструкція користувачеві 16 4 ТЕСТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ 18 4.1 Тестування програми. Тест №1 18 4.2 Тестування програми. Тест №2 20 5 АНАЛІЗ ОТРИМАНИХ РЕЗУЛЬТАТІВ 23 ВИСНОВКИ 25 ПЕРЕЛІК ПОСИЛАНЬ 26 ДОДАТКИ 27 ДОДАТОК А Схема програми 28 ДОДАТОК Б Лістинг програми 29 ВСТУПВ наш час, коли надзвичайно швидкими темпами розвивається наука і техніка, людина освоює все нові і нові галузі, все більше проникає як в надра землі так і за її межі, з’являється багато нових і досить складних задач, рішення яких потребує нових методів і нових підходів. Зокрема надзвичайно велика кількість задач електроніки, електротехніки, механіки, кібернетики та ряду інших галузей науки вимагають від вчених інженерів вирішення досить складних математичних задач які вимагають певного аналізу та нестандартного підходу до вирішення. З’являються задачі які не можна розв’язати за допомогою класичної математики і отримати точний розв’язок, і в загалі досить часто про отримання точного розв’язку не доводиться говорити, оскільки отримати його при існуючих умовах просто неможливо. Тож ставляться задачі отримати приблизні розв’язки, але якомога близькі до точних. Тому в таких задачах використовуються різні наближені методи рішення тієї чи іншої задачі. Сучасний світ неможливо уявити без використання комп’ютерних технологій. Зараз комп’ютер використовується у багатьох сферах людського життя. Зараз обчислення залишаються одним із основних видів застосування ЕОМ. Хоча комп’ютер дуже швидко виконує прості арифметичні дії, без спеціальних програм він не в змозі проводити складні обчислення. Тому постає задача алгоритмізувати поставлене завдання, тобто перевести його в зрозумілу для ЕОМ форму. В даній курсовій роботі досліджено чисельні методи вирішення нелінійних рівнянь, особливу увагу було приділено методам Ньютона, січних та простої ітерації, складено схеми алгоритмів та розроблено програмне забезпечення і вирішено задане нелінійне рівняння. 1 КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІУ задачах, що пов'язані з ідентифікацією,аналізом,оцінкою якості, моделюванням різноманітних пристроїв автоматики, інформаційно-вимірювальної техніки, радіоелектроніки, виникає потреба у обчисленні нелінійних рівнянь. Існує ряд методів для вирішення нелінійних рівнянь. Відомо багато чисельних методів для розв’язання нелінійного рівняння, але розглянемо найпопулярніші, а серед них задані на індивідуальне завдання: метод половинного ділення; метод хибного положення(хорд); наступні - задані на індивідуальне завдання: метод січних; метод простої ітерацїї; метод Ньютона (дотичних). 1.1 Метод половинного діленняВ цьому методі спочатку обчислюється значення функції в точках, що розташовані через рівні інтервали на осі х. Коли f(xn) i f(xn+1) мають протилежні знаки, знаходять , f(xcp). Якщо знак f(xcp) збігається зі знаком f(xn), то надалі замість хn використовується хср . Якщо ж f(xcp) має знак, протилежний f(xn), тобто збігається зі знаком f(xn+1), то на хср замінюється xn+1 . За умову припинення ітераційного процесу доцільно брати умову | xn+1 – xn| < , де - задана похибка. Похибка розвязку Δ через n ітерацій знаходиться в межах: Δ< . (1.1) Метод має малу швидкість збіжності, оскільки інтервал, де знаходиться корінь, з кожним кроком зменшується не більше ніж в два рази. Рисунок 1.1 - Метод половинного ділення 1.2 Метод хибного положення (хорд)Цей метод полягає в тому, що визначаються значення функції в точках, що розташовані на осі через рівні інтервали. Це робиться поки кінці інтервалів xn+1 , хn не будуть мати різні знаки. Пряма, що проведена через ці дві точки, перетинає вісь у точці . (1.2) Після цього визначають f(xn+1) і порівнюють його з f(xn). Надалі користуються xn+1 замість того значення, з яким воно збіглося за знаком. Якщо | xn+1 – xn| < , то вся процедура повторюється спочатку. Треба також враховувати, що в алгоритмі обчислень за цим методом контроль похибки ведеться за тим кінцем інтервалу, що рухається. Похибка розв'язку оцінюється за формулою: , (1.3) де М1, m1 – відповідно, найбільше та найменше значення модуля першої похідної на відрізку. Рисунок 1.2 - Метод хорд 1.3 Метод НьютонаМетод Ньютона полягає в побудові дотичної до графіка функції в обраній точці. Наступне наближення знаходиться як точка перетину дотичної з віссю ОХ.В основі цього методу лежить розкладання функції в ряд Тейлора: (1.4) Члени що містять h у другому і більших степенях відкидаються і в результаті отримується наближена формула для оцінки Хn+1: хn+1 = хn – , (1.5) але оскільки цей метод є наближеним, то логічно буде якщо для нього задавати певну похибку і тоді наближене значення кореня буде визначатися з виконання наступної умови: < Δ, де дельта певна задана похибка. Швидкість збіжності цього алгоритму значною мірою залежить від вірного вибору початкової точки. Коли в процесі обчислень кут нахилу дотичної f’(x)перетворюється на нуль, застосування цього методу ускладнюється. Можна також показати, що у випадку дуже великих значень f ’’(x) чи кратних коренів метод Ньютона стає неефективним. Початкове наближення слід вибирати з умови: (1.6) Грубо оцінити похибку для методу можна так: , (1.7) де М2 – найбільше за модулем значення другої похідної на інтервалі [xn, xn+1]. Рисунок 1.2 - Метод Ньютона 1.4 Метод січнихОднією з головних проблем при застосуванні методу Ньютона є необхідність аналітичного опису похідної. Якщо це складно чи неможливо, то можна застосувати її наближену оцінку. Тоді замість методу дотичних застосовується метод січних, за яким (1.8) де - наближена оцінка похідної, що розглядається як січна, а не як доти- чна, і може бути оцінена за формулою , (1.9) чи (1.10) де h — деякий невеликий крок. Алгоритм цього методу подібний методу Ньютона, але з іншою ітераційною формулою. Рисунок 1.3 - Метод січних 1.5 Метод простої ітераціїЦей метод можна використовувати лише якщо доведена збіжність ітераційного алгоритму. В цьому методі процес розв’язання потрібно починати з пошуку інтервалу збіжності. Умовою збіжності є те що максимальне значення І-ї похідної правої частини рівняння Х=g(x) (1) (до такого вигляду потрібно привести вихідне рівняння f(x)=0 ) повинна бути менша за 1. Якщо умова не виконується, то алгоритм не збіжний. Коли в інтервалі збіжності немає коренів, треба застосовувати інші методи або приходити до рівняння (1) через інші способи. Похибка ж методу на n – ій ітерації обчислюється так: Δ< (1.11) Рисунок 1.4 - Метод простої ітерації 2 АЛГОРИТМИ МЕТОДІВУ цьому розділі розглянуто схеми алгоритмів таких методів: Ньютона, січних та простої ітерації. Рисунок 2.1 – Схема алгоритму методу Ньютона Рисунок 2.2 – Схема алгоритму методу січних Рисунок 2.3 – Схема алгоритму методу простої ітерації 3 РОЗРОБКА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ3.1 Вибір мови програмуванняДля вирішення цієї задачі було обрано середовище програмування С++, так як воно має ряд вагомих переваг перед іншими середовищами і мовами програмування. Зокрема такими перевагами є те, що: - не вимагає великих затрат як апаратної частини комп’ютера так і програмної; - дозволяє досить просто реалізовувати поставлені задачі; - є дуже візуальним і наглядним що робить його зручним інструментом в користуванні; - ця мова є досить гнучка і дозволяє використовувати технології об’єктно-орієнтованого програмування. Обрана мова програмування цілком підходить для розв’язання поставленого завдання. 3.2 Вхідні та вихідні даніВхідні дані: нелінійне рівняння: , похідна від нього, початкове наближення, де х0 (-1.68; -0,067; 2.31), допустима похибка Δ, вхідне рівняння для методу ітерації. Вихідні дані: знайдені корені х, які задовольняють умову: < Δ, кількість кроків для отримання розв’язку із заданою похибкою, кількість ітерацій. 3.3 Структура програмного забезпеченняПрограмний продукт складається з наступних функцій: - int main() - головна функція програми - double findNewton(double x, double eps) - функція обрахунку методом Ньютона. - double findSecant(double x, double eps) - функція обрахунку методом січних - double findSimpleIteration(double x, double eps) - функція обрахунку методом простої ітерації Схему програми наведено у додатку А, лістинг у додатку Б. 3.4 Інструкція користувачевіУ користуванні програмне забезпечення методів дуже просте та зручне. Для завантаження програми необхідно лише запустити програмний файл, який має назву відповідного методу і формат exe, а саме: «Solution of a equation.EXE». При цьому з’явиться відповідне вікно з результатами розрахунків. Програма видасть результат значень х та кількість ітерацій методами одразу, без зайвих введень. Для виходу з програм необхідно натиснути будь-яку клавішу. Як виглядає вікно програми, можна побачити, глянувши на «Рисунок 3.4». Для вирішення іншого нелінійного рівняння методами Ньютона, січних та простої ітерації або змінити умови вхідних даних необхідно внести відповідні зміни в коді програми. Рисунок 3.4 – Вікно роботи програми 4 ТЕСТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯДля тестування програми, яка призначена для вирішення нелінійних рівнянь методами Ньютона, січних і простої ітерації розглянемо 2 приклади випадкових нелінійних рівнянь і, перевіримо чи співпадатимуть результати розрахунків вручну з результатами розрахунків за допомогою програми. //У таблицях тесту№1 не всі розв’язання є правдивими, деякі з них є лише правдоподібними.(зробіть стрічки цього кометару пустими, вони не для друку!)// 4.1 Тестування програми. Тест №1Нехай дано нелінійне рівняння ex2+x-4 = 0, яке необхідно розв’язати в інтервалі [-1;1]. Для його розв’язання побудовано графік (Рисунок 4.1). Рисунок 4.1 – Графік рівняння ex2+x-4 = 0 Із графіку видно, що наше рівняння має один корінь . Обчислимо нелінійне рівняння, яке дано, вручну і представимо результати обчислень в таблицях. Таблиця 4.1 – Обчислення нелінійного рівняння вручну методом Ньютона
Продовження таблиці 4.1
Таблиця 4.2 – Обчислення нелінійного рівняння вручну методом січних
Таблиця 4.3 – Обчислення нелінійного рівняння вручну методом простої ітерації
Продовження таблиці 4.3
Далі представлено результати розв’язку нелінійного рівняння методами Ньютона, січних та простої ітерації у програмі (Рисунок 4.1). Рисунок 4.1 – Обчислення програмою 4.2 Тестування програми. Тест №2Нехай дано нелінійне рівняння ex2+3x-4 = 0. Для його розв’язання побудовано графік (Рисунок 4.2). Із графіку видно, що наше рівняння має один корінь, який знайдемо в інтервалі [0.4;0.6]. Рисунок 4.2 – Графік рівняння ex2+3x-4 = 0 Обчислимо нелінійне рівняння, яке дано, вручну і представимо результати обчислень в таблицях. Таблиця 4.1 – Обчислення нелінійного рівняння вручну методом Ньютона
Таблиця 4.2 – Обчислення нелінійного рівняння вручну методом січних
Таблиця 4.3 – Обчислення нелінійного рівняння вручну методом простої ітерації
Далі представлено результати розв’язку нелінійного рівняння методами Ньютона, січних та простої ітерації у програмі (Рисунок 4.2). Рисунок 4.2 – Обчислення програмою З обрахунків видно, що результати роботи програми та обчислені власноруч збігаються, тому можна зробити висновок, що програма справна та правильно обчислює нелінійні рівняння. 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 – Результати обрахунків //дані в таблиці максимольно правдоподібні (коментар не для друку!)
//Текст на наступному рядку не в повному обсязі правдивий (зробіть цю стрічку пустою, вона не для друку!) Для розрахунку кожного з трьох коренів задані інтервали:[-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-го посилання не існує(зробіть цю стрічку пустою, вона не для друку!) ДОДАТКИ ДОДАТОК А |