Методи уточнення коренів нелінійних рівнянь

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2012
Тип роботи:
Лабораторна робота
Предмет:
Комп’ютерні методи дослідження інформаційних процесів та систем
Варіант:
9

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА кафедра ЗІ  З В І Т до лабораторної роботи №1 з курсу: «Комп'ютерні методи дослідження інформаційних процесів і систем» на тему: «Методи уточнення коренів нелінійних рівнянь» Варіант №9 Львів – 2012 ТЕКСТ ПРОГРАМИ using System; using System.Collections.Generic; using System.Text; namespace kmd_lab1 { class Program { static void Main(string[] args) { Console.WriteLine(" КМД, Лабораторна робота №1 \"Методи уточнення коренiв нелiнiйних рiвнянь\""); Main p = new Main(); p.input(); p.comb(); Console.Write("Press <Enter> to exit..."); Console.ReadKey(); } } class Main { // перелік усіх змінних типу double: public double a, b, e, xnt, xntl, xntlpo, fxntl, fsxntl, fxnt, fxntlpo, xntpo; public void input() // метод введення і присвоєння змінних { Console.WriteLine(" Введiть промiжок [a, b] та абсолютну похибку E:"); try { Console.Write(" Введiть 'a'= "); a = Convert.ToDouble(Console.ReadLine()); Console.Write(" Введiть 'b'= "); b = Convert.ToDouble(Console.ReadLine()); Console.Write(" Введiть 'E'= "); e = Convert.ToDouble(Console.ReadLine()); } catch (Exception) { Console.WriteLine(" Виникла помилка!"); input(); } Console.WriteLine(" Ви ввели промiжок ["+a+","+b+"] та E= "+e+";\n"); xnt = a; xntl = b; } public void func() // метод обчислення функцій { // x n-те (Ньютона) fxntl = Math.Cos(xntl)+(1/(xntl-2)); // f (xntl) fsxntl = (-1)*(Math.Sin(xntl))-(1/Math.Pow((xntl-2), 2)); // f'(xntl) xntlpo = xntl-(fxntl/fsxntl); // xntlpo Console.WriteLine(" f(b) = "+fxntl); Console.WriteLine(" f'(b) = "+fsxntl); Console.WriteLine(" xntlpo = "+xntlpo); // x n-те fxnt = Math.Cos(xnt)+(1/(xnt-2)); // f (xnt) fxntlpo = Math.Cos(xntlpo)+(1/(xntlpo-2)); // f (xntlpo) xntpo = xnt-((fxnt*(xntlpo-xnt))/(fxntlpo-fxnt)); // xntpo Console.WriteLine(" f(a) = "+fxnt); Console.WriteLine(" f(xntlpo)= "+fxntlpo); Console.WriteLine(" xntpo = "+xntpo); } public void comb() { double tf; int iter=1; do { if (iter != 1) { xntl = xntlpo; xnt = xntpo; } func(); Console.WriteLine(" Iтерацiя "+iter+" - завершено!\n"); iter++; tf = Math.Abs(xntpo-xntlpo); // |xntpo-xntlpo| } while(tf>e); double xz = 0.5*(xnt+xntl); Console.WriteLine(" Корiнь X* = "+xz+"\n"); } } } БЛОК-СХЕМА  Мета роботи – ознайомлення з методами уточнення коренів нелінійних рівнянь з одним невідомим. КОРОТКІ ТЕОРИТИЧНІ ВІДОМОСТІ: Комбінований метод хорд та дотичних: Метод хорд та дотичних дають наближення кореня з різних сторін (менше і більше від істинного значення). Тому доцільно використати обидва способи одночасно, завдяки чому уточнене значення кореня одержується швидше. Нехай – початкове наближення кореня за методом хорд, а – за методом дотичних (див.рис.1). Тоді провівши хорду та дотичну, одержимо відповідні наближення за методом хорд  і за методом дотичних  Або в загальному випадку    (рис. 1) Якщо припустима абсолютна похибка E заздалегідь задана, то процес наближення припиняється, доки не буде виявлено, що  Після закінчення процесу за значення кореня х* краще взяти середнє арифметичне одержаних останніх значень  Кращий результат дає наступний порядок обчислень: Знаходиться наближене значення кореня за методом Ньютона. При цьому початкове наближення має бути обране так, щоб виконувалась умова . Отже якщо в точці x=b умова  не виконується, на етапі введення початкових даних в поданому нижче прикладі алгоритму необхідно ввести ; Знаходиться наближене значення кореня за методом хорд, використовуючи замість  значення , знайдене за методом Ньютона, і процес повторюється до одержання бажаної похибки обчислень. ; .  ЗАВДАННЯ: Знайти корінь рівняння з граничною абсолютною похибкою Е = 10–4, відокремлений на відрізку [a, b]. Методи чисельного розв’язування задаються викладачем. Варіант Рівняння Відрізок  9. cos x + 1/(x – 2) = 0 [0;1]   СПИСОК ІДЕНТИФІКАТОРІВ КОНСТАНТ, ЗМІННИХ, ФУНКЦІЙ, ВИКОРИСТАНИХ У БЛОК-СХЕМІ АЛГОРИТМУ І ПРОГРАМІ, ТА ЇХ ПОЯСНЕННЯ Console.ReadLine() – зчитування стрічки з консолі; Covert.ToDouble() – конвертування текстової змінної в число типу Double; Console.WriteLine – метод виведення на екран; Math.Cos(x) – математичний метод обчислення синуса x; Math.Sin(x) – математичний метод обчислення косинуса x; public void func()– метод обчислення функцій
Антиботан аватар за замовчуванням

28.05.2013 18:05-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!