Розробка програми розв’язання нелінійних рівнянь методом Ньютона

Виконання "ручного" розв'язування рівняння методом Ньоютона. Розробка програми на мові С#, яка реалізує введення вихідних даних, розв'язання заданого рівняння, виведення результатів у зручній формі на екран. Визначення початкового наближення кореня.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык украинский
Дата добавления 19.01.2022
Размер файла 120,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ

„КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ”

Факультет електроенерготехніки та автоматизації

Лабораторна робота № 1

З дисципліни «Обчислювальні методи та алгоритмізація»

Тема: «Розробка програми розв'язання нелінійних рівнянь методом Ньютона»

Виконав: ст.гр. ЕК-зп11

1 курс ФЕА Грицай Олександр Юрійович

Перевірив: Труніна Г.О.

Київ 2021

План

1. Завдання

2. Короткі теоретичні відомості

3. Хід виконання роботи

3.1 Розв'язання рівняння методом Ньютона

3.2 Алгоритм розв'язання

3.3 Програма на мові С#

3.4 Розв'язання за допомогою програми з точністю до е=0.01, порівняння результатів програмного і «ручного» розв'язку

4. Контрольні питання

5. Висновки

6. Список використаної літератури

1. Завдання

Виконати «ручне» розв'язання заданого рівняння методом Ньютона, скласти докладний алгоритм, скласти і відлагодити програму на мові С#, яка реалізує введення вихідних даних, розв'язання заданого рівняння, виведення результатів у зручній формі на екран. Розв'язати задане рівняння за допомогою розробленої програми з точністю е =0.01. Порівняти отримані результати із результатами «ручних» розрахунків.

Рівняння згідно варіанту

2. Короткі теоретичні відомості

Необхідність розв'язку нелінійних рівнянь, які не можуть бути вирішені аналітично, привела до розвитку чисельних методів. Один з найбільш часто використовуваних чисельних методів називається методом Ньютона або методом Ньютона-Рафсона. Ідея даного методу відносно проста. Припустимо, що розглядається нелінійне рівняння виду f(x)=0, де f(x)- функція неперевна на відрізку [a;b] і має на даному відрізку, відмінні від нуля, похідні першого і другого порядків. Тоді, ідея методу Ньютона полягає в тому, що на кожній ітерації графік функції f(x) замінюється дотичною (звідки інша назва цього методу - метод дотичних) і точку перетину кожної з цих дотичних з віссю абсцис приймають за чергове наближення до шуканого кореня. Зазначимо, що перша дотична проводиться через точку K0 (x0;y0) кінець відрізка, для якого виконується умова.

f(x0)*f”(x0)>0

В результаті вона перетне вісь OX в деякій точці x1. Далі, обчислюється значення функції f(x1) і в знайденій точці знову виконується побудова дотичної. Продовжуючи даний процес далі, отримують послідовність значень x0,x1,x2…xn, яка збігається до точного рішення рівняння f(x0)=0.

У загальному випадку формула методу дотичних матє вигляд:

xn+1=xn-f(xn)/f'(xn)

Ітераційний процес методу дотичних необхідно продовжувати до тих пір поки модуль різниці між наступним і попереднім наближенням не стане меншим як завгодно малого наперед заданого числа

|xn+1-xn|< е

3. Хід виконання роботи

3.1 Розв'язання рівняння методом Ньютона «вручну» для е=0,01

x2-x=6

x2-x-6=0

f'(x)=2x-1

f”(x)=2

якщо x0=-3 початкове наближення

f(x0)*f”(x0)>0

((-3)2-(-3)-6)*2>0

(9+3-6)*2>0

12>0

Виконаємо першу ітерацію

x1= x0-f(x0)/f'(x0)

x1=(-3)-((9+3-6)/-7)

x1=-2,142

|x1-x0|=0,85>е

f(x1)=(-2,142)2-(-2,142)-6=0,73

Друга ітерація

x2= x1-f(x1)/f'(x1)

x2=-2,142-(0,73/ -5,284)

x2=-2,003

|x2-x1|=0,139>е

f(x2)=4,012+2,003-6=0,015

Третя ітерація

x3= x2-f(x2)/f'(x2)

x3=-2,003-(0,015/-5,006)

x3=-2,001

|x3-x2|=0,002<е

Як корінь рівняння із точністю е=0,01 беремо значення x3=-2,001

3.2 Алгоритм розв'язання програмним методом

Размещено на http://www.allbest.ru/

1. Введення значень х - наближеного значення кореня та е точності обчислення наближення.

2. Обчислення значення функції в точці х, першої та другої похідних.

3. Перевірка наявності коренів рівняння в околі точки х.

4. Цикл с післяумовою do..while для обчислення значення наближення, і перевіркою на задану точність.

5. Виведення отриманого значення наближення з заданою точністю, та кількість ітерацій, які були необхідні для цього.

3.3 Програма на С#

Для пошуку конкретного значення:

double x, e, r, xp, xn,f,f2;

int k;

do

{

Console.WriteLine("Введiть значення х ");

x = double.Parse(Console.ReadLine());

f = Math.Pow(x,2) -1*x - 6;

f2 = 2;

} while (f * f2 < 0);

Console.WriteLine("Точнiсть наближення е ");

e = double.Parse(Console.ReadLine());

xp = x;

do

{

k = 0;

xn = xp - (xp*xp - xp - 6) / (2 * xp - 1);

r = Math.Abs(xn - xp);

xp = xn;

k++;

} while (r > e);

Console.WriteLine($"Значення кореня х={xp:f2}\n з точнiстю е={e} \n Kiлькiсть iтерацiй к={k}", xp, e, k);

Console.ReadKey();

Для пошуку значень на проміжку:

double x, e, r, xp, xn,f,f2;

int k,n,j,l,z,i;

Console.WriteLine("Виберiть обчислення: \n для одного значення натиснiть 1 " +

"\n для промiжку натиснiть 2");

n = int.Parse(Console.ReadLine());

switch (n)

{

case 1:

do

{

Console.WriteLine("Введiть значення х ");

x = double.Parse(Console.ReadLine());

f = Math.Pow(x, 2) - 1 * x - 6;

f2 = 2;

} while (f * f2 < 0);

Console.WriteLine("Точнiсть наближення е ");

e = double.Parse(Console.ReadLine());

xp = x;

do

{

k = 1;

xn = xp - (xp * xp - xp - 6) / (2 * xp - 1);

r = Math.Abs(xn - xp);

xp = xn;

k++;

} while (r >= e);

Console.WriteLine($"Значення кореня х={xp:f2}\n з точнiстю е={e} \n

Кiлькiсть iтерацiй к={k}", xp, e, k);

Console.ReadKey();

break;

case 2:

Console.WriteLine("Введiть параметри промiжку \n вiд ");

j = int.Parse(Console.ReadLine());

Console.WriteLine("до");

l = int.Parse(Console.ReadLine());

if (j < 0)

z = Math.Abs(j) + Math.Abs(l) + 1;

else z = l - j+1;

Console.WriteLine("Точнiсть наближення е ");

e = double.Parse(Console.ReadLine());

int[] a=new int[z];

for ( i = 0; i <z ; i++)

{ a[i] = j + i; }

double[] d = new double[z];

for (i = 0; i < z; i++)

{

xp = a[i];

do

{

xn = xp - (xp * xp - xp - 6) / (2 * xp - 1);

r = Math.Abs(xn - xp);

xp = xn;

} while (r >= e);

d[i] = xp;

}

for (i = 0; i < z; i++)

{

Console.WriteLine($"Значення[{i}] = {Math.Round(d[i],6)}", i, d[i]);

}

Console.ReadKey();

break;

3.4 Розв'язання за допомогою програми з точністю до е=0.01, порівняння результатів програмного і «ручного» розв'язку

Як видно з отриманих результатів програмного обчислення, дане рівняння має лише два корені для точності е=0,01, але при вищій точності в програмі можна отримати інші результати.

Контрольні запитання

1. Що таке корінь рівняння? Значення, при якому функція наближається до нуля.

2. Кількість коренів нелінійного рівняння. Залежить від степеня рівняння

3. Графічне пояснення коренів рівняння. Точки перетину графіка функції з вісю абсцис

4. Що таке нев'язка рівняння? Наближене значення кореня рівняння, яке задовольняє умовам заданої точності

5. Що таке ітерація? Поступове наближення до шуканого значення кореня за умовами точності

6. Суть методу Ньютона. Суть полягає у заміні кривої графіка функції у заданій точці на дотичну, через це метод ще називають методом дотичних

7. Способи визначення початкового наближення кореня. Графічним методом, методом підбору, для рівнянь 2-го степеня за теоремою Вієта чи обчисленням дискримінанту, якщо задовольняється умова f(x)*f”(x)>0

8. Рекурентна формула методу Ньютона.

розв'язування рівняння ньютон програма

xn+1=xn-f(xn)/f'(xn)

9. Графічна ілюстрація методу Ньютона.

Полягає в пошуці перетину дотичної з віссю абсцис

10. Вхідні дані при програмній реалізації ітераційного методу.

Задаються початкові значення точок проведення дотичних та точність наближення

11. Алгоритм методу Ньютона

Вибираємо наближене значення кореня, обчислюємо за формулою точку перетину дотичної з віссю ОХ, отримане значення приймаємо за чергове наближення кореня, повторюємо обчислення точки перетину, перевіряємо чи задовольняє отримане значення умовам точності

11. Контроль завершення ітераційного процесу.

Модуль різниці суміжних наближень або величина нев'язки повинні бути меньші або рівні заданій точності

12. Вплив заданої точності на кількість ітерацій.

Чим вища точність кількість ітерацій збільшується, але для методу дотичних це значення не суттєве

Висновки

В даній лабораторній роботі я навчився реалізовувати програмно метод розв'язку нелінійних рівнянь, а саме методом Ньютона. Досвід отриманий в ході роботи показав, що використовуючи даний алгоритм, набагато простіше отримати результати для будь-якого нелінійного рівняння, в порівнянні з «ручним» способом. Також в програмі було реалізовано пошук коренів на проміжку, що наглядно показало точність пошуку розв'язків рівняння даним методом. Вважаю мету роботи досягнутою.

Список використаної літератури

1. Демидович Б.П., Марон И.А. Основы вычислительной математики. М.: Наука, 1966.

2. Мак-Кракен Д., Дорн У. Численные методы и программирование на Фортране. М.: Мир, 1977.

3. Дьяконов В.П. Справочник по алгоритмам и программам на языке Бейсик для персональных ЭВМ. М.: Наука, 1989. 240 с.

4. Пискунов Н.С. Дифференциальное и интегральное исчисления. Т.2. М.: Наука, 1972. 576 с.

5. Рихтер Д. CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C#. П.: Питер, 2018. 896 с.

6. Хейлсберг А., Торгерсен М., Вилтамут С., Голд П. Язык программирования C#. Классика Computers Science. П.: Питер, 2011. 784 с.

Размещено на Allbest.ru


Подобные документы

  • Розв’язання нелінійних алгебраїчних рівнянь методом хорд. Опис структури програмного проекту та алгоритмів розв’язання задачі. Розробка та виконання тестового прикладу. Інші математичні способи знаходження коренів рівнянь, та опис виконаної програми.

    курсовая работа [4,1 M], добавлен 28.09.2010

  • Розв’язання нелінійних алгебраїчних рівнянь методом дихотомії. Вирішення задачі знаходження коренів рівняння. Розробка алгоритму розв’язання задачі і тестового прикладу. Блок-схеми алгоритмів основних функцій. Інструкція користувача програмою мовою С++.

    курсовая работа [2,0 M], добавлен 24.09.2010

  • Розв’язання системи рівняння методом Гауса за схемою з частковим вибором головного елементу. Рішення задачі Коші методом Рунге-Кутта. Знаходження моментів кубічних сплайнів методом прогонки. Розв’язування системи нелінійних рівнянь методом Ньютона.

    контрольная работа [252,3 K], добавлен 04.06.2010

  • Графічне зображення методу половинного ділення. Вибір методу інструментальних засобів вирішення задач. Розробка логічної частини програми для розв’язання нелінійного рівняння методами половинного ділення та січних. Особливість кодування на мові Паскаль.

    курсовая работа [135,5 K], добавлен 30.11.2009

  • В роботі розглянуто наближені методи розв'язку нелінійних рівнянь для методів Ньютона та хорд, складено блок-схеми та написано програму, за допомогою якої розв'язується задане рівняння. Аналіз рівняння, методів його розв'язання і результатів обрахунку.

    курсовая работа [380,9 K], добавлен 30.11.2009

  • Визначення і розв’язання задачі Коші для звичайних диференціальних рівнянь першого порядку методом Ейлера, алгоритм розв’язання, похибка при вирішенні. Складання блок-схеми. Реалізація алгоритму у середовищі Borland Pascal. Результат роботи програми.

    курсовая работа [264,0 K], добавлен 20.08.2010

  • В роботі розглянуто наближені методи розв’язку нелінійних рівнянь. Для вказаних методів складено блок-схеми та написано програму, за якою розв’язується задане рівняння. Аналіз як самого рівняння і методів його розв’язання так і результатів обрахунку.

    курсовая работа [302,8 K], добавлен 03.12.2009

  • Види рівнянь та методи їх розв’язань. Чисельні методи уточнення коренів, постановка задачі. Рішення нелінійного рівняння методом простих та дотичних ітерацій. Використання програмних засобів. Алгоритми розв’язку задач. Програми мовою С++, їх тестування.

    курсовая работа [232,2 K], добавлен 12.02.2013

  • Розробка програми для розв’язання квадратних рівнянь з текстовим та графічним інтерфейсами користувача без дублювання їх коду. Алгоритм розв’язання квадратного рівняння у програмах з будь-яким інтерфейсом користувача, а саме: "консольний" та "форма".

    лабораторная работа [14,9 K], добавлен 14.05.2011

  • Розв’язання системи лінійних та нелінійних рівнянь у програмі MathCAD. Матричний метод розв'язання системи рівнянь. Користування панеллю інструментів Математика (Math) для реалізації розрахунків в системі MathCAD. Обчислення ітераційним методом.

    контрольная работа [1023,4 K], добавлен 08.04.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.