Звіт до лабораторної роботи №1 з курсу: "Комп’ютерні методи дослідження інформаційних процесів та систем" на тему: «Методи уточнення коренів нелінійних рівнянь»
Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ
"ЛЬВІВСЬКА ПОЛІТЕХНІКА"
Звіт
до лабораторної роботи №1
з курсу: "Комп’ютерні методи дослідження інформаційних процесів та систем"
на тему: «Методи уточнення коренів нелінійних рівнянь»
Мета роботи – ознайомлення з методами уточнення коренів нелінійних рівнянь з одним невідомим.
Завдання
Знайти корінь рівняння з граничною абсолютною похибкою Е = 10–4, відокремлений на відрізку [a, b]. Методи чисельного розв’язування задаються викладачем.
2
ех + lnx = 0
[0.1;2]
Короткі теоретичні відомості
Метод забезпечує швидшу збіжність, ніж метод поділу навпіл. Ідея методу в тому, що на проміжку дугу кривої заміняють хордою, яка її стягує. За наближене значення кореня приймають точку перетину хорди з віссю абсцис (точка А на Рис.2)
Рис.2
Рівняння прямої, яка проходить через точки і :
Точка А є наближеним коренем , яка була знайдена з рівняння прямої, якщо покласти , :
Далі застосовуємо метод хорд до відрізку :
Таким чином, ітераційна формула методу хорд має вигляд:
(4)
За наведеними формулами обчислюють корені також і тоді, коли ; ; ; . Тобто коли - застосовують (4).
У випадку, коли перша і друга похідні мають різні знаки, тобто , ітераційна формула має інший вигляд:
(5)
Метод хорд – це метод одностороннього наближення. Один край відрізку фіксується, а інший змінюється. Зауважимо, що формули (4) та (5) тотожні. Узагальнити їх можна так. Якщо виконується співвідношення (6):
, (6)
фіксується точка а: . В іншому випадку фіксується точка b: . При цьому ітераційна формула методу хорд має вигляд:
, (7)
де початкове значення - край відрізка , протилежний до обраного
Обчислення виконуються доти, доки різниця між черговими i не стане меншою за задану граничну абсолютну похибку Е:
Блок-схема алгоритму
Текст програми
using System; class Program { static void Main(string[] args) { double x_prew=0.1; double x_curr=2; double E=0.0001; double x_next=0; double tmp; if (Math.Abs(x_next-x_curr)>E) { tmp=x_next; x_next=x_curr-f(x_curr)*(x_prew-x_curr)/(f(x_prew)-f(x_curr)); x_prew=x_curr; x_curr=tmp; } Console.WriteLine(x_next); Console.ReadLine(); } public static double f(double x) { return Math.Pow(Math.E, x) + Math.Log(x); } }
Результат роботи
/
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!