DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

ЧИСЕЛЬНЕ РОЗВ’ЯЗУВАННЯ НЕЛІНІЙНИХ РІВНЯНЬ

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

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

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

Рік:
2015
Тип роботи:
Звіт
Предмет:
Інші
Група:
ПМ-31

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ Національний Університет „Львівська Політехніка” Звіт до лабораторної роботи №2 на тему: „ЧИСЕЛЬНЕ РОЗВ’ЯЗУВАННЯ НЕЛІНІЙНИХ РІВНЯНЬ” Варіант 21п f (x) =  = 0. Завдання: Графічно відокремити корені рівняння, побудувавши графік функції y = f(x) за допомогою ЕОМ (наприклад, використати пакет програм Maple). Використовуючи будь-яку з відомих Вам мов програмування, розв’язати задачу на ЕОМ з точністю ε = 0.001 методом ділення навпіл. Уточнити одержаний результат з точністю ε = 0.00001 за допомогою методу послідовних наближень. Перевірити умови застосування вибраного чисельного методу. Розв’язання: 1. Графічно відокремлюю корені рівняння, будуючи графік функції y = f(x) за допомогою ЕОМ, використовуючи пакет програм Maple. 2. Використовуючи мову програмування С++, розв’язую задачу на ЕОМ з точністю ε = 0.001 методом ділення навпіл. З результатів, отриманих з попередньої частини завдання очевидно, що розв’язок рівняння єдиний і лежить в інтервалі [0..1]. Ці межі використовую як вхідні дані для другої частини завдання. В основі методу лежить перевірка добутку значень функції на краях інтервалу: якщо він <0, то на цьому інтервалі є корінь і навпаки – якщо >0, то немає. Щоразу зменшуючи довжину інтервалу вдвічі в результаті прийдемо до такої довжини інтервалу, яка буде < ε і тоді припинемо роботу. Число x, що лежатиме посередині останнього інтервалу і буде шуканим. Уточнюю одержаний результат з точністю ε = 0.00001 за допомогою методу послідовних наближень. Він полягає у заміні рівняння f(x)=0 на еквівалентне: x = φ (x), де φ (x) = x + ρ (x)*f (x), а ρ (x) – довільна функція, що не має коренів в інтервалі [0..1], зокрема ρ (x) ≡ 1. Метод простої ітерації визначається формулою: xn+1= φ (xn), n = 0,1,2,..., де n – номер ітерації, x0 – початкове наближення. Перевіряю умови застосування вибраного чисельного методу: Як видно з графіка функції, зробленого на Maple, розв’язок рівняння єдиний і лежить в межах (0,4; 0,7). Потрібно вибрати таку функцію φ (x), щоб вона задовольняла умови збіжності методу простих ітерацій ( |φ΄(x)| < 1, φ (x) є [a,b]  x є [a,b]). Такою функцією є φ (x) = e-x, що отримана з функції f (x) =  = 0 наступним шляхом: ; e-x = x. xn+1 = . Справді, |(e-x)΄| = |(-e-x)| = e-x < 1, x є [0,4;0,7], оскільки функція спадна і невід’ємна, а отже максимальне її значення при x = 0,4 і дорівнює ≈ 0,67. Мінімальне – при x = 0,7 і дорівнює ≈ 0,49. Отже, φ (x) є [0,4;0,7] x є [0,4;0,7]. На основі цієї формули і проводитимо розв’язання методом простої ітерації. Код програми на мові С++: #include <fstream.h> #include <math.h> float a,b,xmiddle,e1,e2,f,max; int lichylnyk; float function(float); // функція f(x)=0; float function (float x) { return exp(-x/2)-sqrt(x); } void main() { lichylnyk=0; cout<<"Vvedit tochnist:"<<'\n'; cin>>e1; a=0; b=1; do { // lichylnyk++; // xmiddle=(b+a)/2; // метод половинного if (function(a)*function(xmiddle)<0) // ділення b=xmiddle; // else a=xmiddle; // } // while (fabs(b-a)>e1); // f=function((b+a)/2); cout<<"Rezultat metodu dilennja navpil:"<<'\n'; // вивід результатів cout<<"X = "<<(b+a)/2<<'\n'; cout<<"F = "<<f<<'\n'; cout<<"Kilkist iteracij: "<<lichylnyk<<'\n'; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// cout<<"Vvedit tochnist:"<<'\n'; cin>>e2; cout<<"Vvedit livu mezhu:"<<'\n'; cin>>a; while (a<=0) { cout<<"Nekorektna mezha. Vvedit shche raz!"<<'\n'; cin>>a; } cout<<"Vvedit pravu mezhu:"<<'\n'; cin>>b; while (b<=a) { cout<<"Nekorektna mezha. Vvedit shche raz!"<<'\n'; cin>>b; } while((exp(-a)>=1) || (exp(-a)>b) || (exp(-b)<a)) // перевірка умов збіжності { cout<<"!!!V cykh mezhax metod prostoji iteracii ne vykonujetsja!!!"<<'\n'; cout<<"Vvedit livu mezhu:"<<'\n'; cin>>a; while (a<=0) { cout<<"Nekorektna mezha. Vvedit shche raz!"<<'\n'; cin>>a; } cout<<"Vvedit pravu mezhu:"<<'\n'; cin>>b; while (b<=a) { cout<<"Nekorektna mezha. Vvedit shche raz!"<<'\n'; cin>>b; } } a=(b+a)/2; lichylnyk=0; do // { // lichylnyk++; // метод простих b=exp(-a); // ітерацій f=exp(-b); // max=fabs(b-a); // a=b; // } // while ((max>e2) && (fabs(f)>e2)); // cout<<"Rezultat metodu prostykh iteracij:"<<'\n'; cout<<"X = "<<b<<'\n'; cout<<"F = "<<f<<'\n'; cout<<"Kilkist iteracij: "<<lichylnyk<<'\n'; } Результат: Висновок: лабораторна робота складалася з трьох частин: спершу я намалював графік за допомогою Maple (корінь рівняння виявився єдиним, тому відокремлювати корені не довелось); в другій частині я уточнив корінь (ε = 0.001) за допомогою методу ділення навпіл (цей метод не дуже ефективний, бо має повільну збіжність); в третій частині я ще більше уточнив корінь (ε = 0.00001) за допомогою методу послідовних наближень, перевіривши спершу умови застосування цього методу. СПИСОК ЛІТЕРАТУРИ Бахвалов Н.С., Жидков Н.П., Кобельков Г.М.. Численные методы.-М.:Наука, 1987. Гаврилюк І.П., Макаров В.Л. Методи обчислень. –К.:Вища школа, 1995, ч.1, ч.2. Данилович В., Кутнів М. Чисельні методи.-Львів:Кальварія, 1998. Калиткин Н.Н. Численные методы.-М.:Наука, 1978. Самарский А.А., Гулин А.В. Численные методы. - М.:Наука, 1989. Трифонов Н.П., Пасхин Е.Н. Практикум работы на ЭВМ.-М.: Наука, 1982.
Антиботан аватар за замовчуванням

2015

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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