DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Метод Штурма відокремлення коренів

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

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

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

Рік:
2015
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Чисельні методи
Група:
КН-11
Коротко про документ

Про що ця робота

У звіті наведено результати виконання лабораторної роботи з чисельних методів щодо відокремлення коренів многочленів методом Штурма. Розроблено програму мовою C++ для визначення проміжків дійсних коренів рівняння.

У роботі розглядаються

  • Чисельні методи
  • Метод Штурма
  • Відокремлення коренів
  • Многочлени
  • Програмування на C++
  • Обчислювальні алгоритми

Зміст і розділи

  1. Мета роботи
  2. Порядок роботи
  3. Завдання
  4. Програмний код
  5. Приклад виконання програми
  6. Висновок
Для кого:Студенти технічних спеціальностей та виші, що вивчають дисципліну Чисельні методи.
Викладачі:Не вказано

Ключові поняття

метод Штурмавідокремлення коренівмногочленчисельні методидійслий коренькомплексний кореньпрограмний кодC++інтервалалгоритм

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ „ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра АСУ Звіт до лабораторної роботи №4 «Метод Штурма відокремлення коренів» з дисципліни: «Чисельні методи» Варіант №9 Мета роботи: вивчити і засвоїти методи відокремлення коренів. Порядок роботи: Створити проект для виконання індивідуального завдання. Оформити звіт для захисту лабораторної роботи за зразком: назва роботи; мета роботи; порядок роботи; короткі теоретичні відомості; алгоритм побудови розв’язку задачі; тексти відповідних модулів проекту; аналіз отриманих результатів та висновки. Завдання: Відокремити кожен з коренів рівняння f(x)=0, використовуючи метод Штурма з точністю не менше . 9)  Програмний код: #include <iostream> using namespace std; class C{ double ms[40][7]; public: double F (double x) {return x*x*x*x*x-x*x*x-3*x+10;} double F0 (double x) {return 5*x*x*x*x-3*x*x-3;} double F1 (double x) {return x*x*x-x+25;} double F2 (double x) {return -8*x*x+125*x-3;} double F3 (double x) {return x-19750.0/15665.0;} double F4 (double x) {return 1;} void show (); double anAbs (double a){ if (a>0) return -a; else return a; } }; void main () { setlocale (LC_ALL, ""); C obj; obj.show(); cin.get(); } void C::show () { double buf; cout.width(2);cout<<"x"; cout.width(10);cout<<"f"; cout.width(10);cout<<"f0"; cout.width(10);cout<<"f1"; cout.width(10);cout<<"f2"; cout.width(10);cout<<"f3"; cout.width(10);cout<<"f4"<<endl<<endl; cout.precision(2); for (int ii=0; ii<30; ii++) { double i=anAbs((double)ii-10)/10.0; cout.width(2); cout<<i; cout.width(10); buf=F (i); cout<<buf; if (buf>=0) ms[ii][0]=1; else ms[ii][0]=0; cout.width(10); buf=F0 (i); cout<<buf; if (buf>=0) ms[ii][1]=1; else ms[ii][1]=0; cout.width(10); buf=F1 (i); cout<<buf; if (buf>=0) ms[ii][2]=1; else ms[ii][2]=0; cout.width(10); buf=F2 (i); cout<<buf; if (buf>=0) ms[ii][3]=1; else ms[ii][3]=0; cout.width(10); buf=F3 (i); cout<<buf; if (buf>=0) ms[ii][4]=1; else ms[ii][4]=0; cout.width(10); buf=F4 (i); cout<<buf; if (buf>=0) ms[ii][5]=1; else ms[ii][5]=0; buf=0; for (int j=0; j<6; j++) if ( ms[ii][j]==0) buf++; ms[ii][6]=buf; cout<<endl; } cout<<endl<<endl; cout.width(2);cout<<"x"; cout.width(10);cout<<"f"; cout.width(10);cout<<"f0"; cout.width(10);cout<<"f1"; cout.width(10);cout<<"f2"; cout.width(10);cout<<"f3"; cout.width(10);cout<<"f4"<<endl<<endl; for (int i=0; i<40; i++){ cout.width(2); cout<<-((double)i/10-1); for (int j=0; j<6; j++){ cout.width(10); if (ms[(int)(i)][j]==0) cout<<"-"; else cout<<"+"; } cout<<endl; } cout<<endl<<endl; cout<<"Дiйснi коренi знаходяться у промiжках:"<<endl; for (int ii=0; ii<30; ii++){ double i=anAbs((double)ii-10)/10.0; if ( ms[ii+1][6]!=ms[ii][6]) cout<<i<<" < x < "<<i-0.1<<endl; } } Приклад виконання програми / Висновок: навчився визначати проміжки, які містять дійсні корені для многочленів високих степенів і програмно реалізував пошук таких проміжків за допомогою методу (алгоритму) Штурма. Ме́тод Шту́рма використовується для відокремлення дійсних коренів многочленів, тобто знаходження інтервалів, що містять рівно по одному кореню. Надалі отримана інформація про розміщення коренів може бути використана для їх знаходження чисельними методами. Даний метод (Штурма) дає можливість визначити кількіст дійсних і комплексних коренів для многочлена і визначити відрізки на яких знаходяться дійсні корені, для подальшого їх знаходження. Подальше їх знаходження виконується іншими методами. Згідно з результатами програмної реалізації даного методу, для заданого многочлена були отримані три проміжки, а отже наявні три дійсних корені у цих заданих проміжках. Оскільки многочлен має п’ять коренів, то два інших кореня являються комплексними числами. Дана програма демонструє значення у контрольних точках кожного відрізка, для кожної досліджуваної функції, а також демонструє знаки на відрізках для кожної функції, як зображено на вище наведеному прикладі виконання програми. Ці проміжки визначаються за аналізом зміни знаку між двома виділеними значеннями, такі зміни можна спостерігати на наведеному прикладі виконання програми.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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