МІНІСТЕРСТВО НАУКИ І ОСВІТИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
ЛАБОРАТОРНА РОБОТА
з курсу
"Алгоритмізація і програмування"
для студентів базового напряму 6.0905
"Енергетика"
Львів Львівська політехніка 2007
Укладачі: З.Теплюх, д.т.н., І.Ділай - кандидат техн. наук.
Відповідальний за випуск: Є.Пістун, д.т.н., професор.
Рецензенти: Г.Крих, І.Стасюк - кандидати техн. наук.
Мета роботи: засвоєння алгоритмів розв'язування нелінійних рівнянь різними числовими методами. Одержання навиків програмування і роботи на комп'ютері, зокрема в середовищах Turbo C++ і MATLAB.
Для успішного виконання лабораторної роботи необхідно:
- знати різні методи розв'язування нелінійного рівняння;
- вміти записувати алгоритми у вигляді блок-схем;
- вміти програмувати мовою С/С++ і в середовищі MATLAB;
- вміти працювати в середовищі Turbo C++ і MATLAB.
Основні відомості про методи розв'язування нелінійних рівнянь
Розв'язування нелінійних рівнянь виду є однією із важливих задач, яка зустрічається в різних областях техніки. В переважній більшості в інженерній практиці приходиться мати справу з нелінійними об'єктами, які відповідно часто описуються нелінійними рівняннями. Сучасні засоби обчислювальної техніки в поєднанні із розробленими методами знаходження розв'язку нелінійних рівнянь дозволяють ефективно і з необхідною точністю вирішувати поставлену задачу.
Нелінійні рівняння з однією змінною можна розділити на два класи - алгебраїчні та трансцендентні. Алгебраїчними називають рівняння, що містять лише алгебраїчні функції (цілі, раціональні, ірраціональні). Рівняння, що містять інші функції (тригонометричні, показникові, логарифмічні та інші), називаються трансцендентними.
Методи розв'язування нелінійних рівнянь поділяють на прямі та ітераційні. Прямі методи дозволяють записати розв'язок (корені) рівняння у вигляді кінцевої формули.
Однак рівняння, які зустрічаються в інженерній практиці в переважній більшості не вдається розв'язати такими простими методами. Тому для розв'язування таких рівнянь використовують ітераційні методи, тобто методи послідовних наближень.
Ітераційний процес полягає в послідовному уточненні початкового наближення розв'язку . Кожен такий крок називається ітерацією. В результаті ітераційного процесу знаходиться послідовність наближених значень кореня . Якщо ці значення із зростанням наближаються до дійсного значення кореня, то вважають, що такий ітераційний процес збігається.
Нелінійні рівняння розв'язують в два етапи: перший - виділення коренів і другий - уточнення кореня до заданої похибки .
Виділити корені - це значить знайти інтервали (інтервал ), в кожному з яких знаходиться один дійсний корінь.
Корені виділяють наступними способами: табулюванням функції , шляхом побудови графіка , числовим і аналітичним.
Умовою наявності кореня в інтервалі є: .
Для уточнення кореня найчастіше застосовують наступні методи: половинного ділення, простих ітерацій, хорд, дотичних і комбінований.
Метод половинного ділення
Формула методу: ;
;
;
;
;
якщо ;
;
;
якщо .
Умова виходу з ітераційного процесу: або .
Метод простих ітерацій
Умова застосування методу: і - неперервні функції на інтервалі .
Метод вимагає перетворення рівняння до виду , але довільний перехід не завжди забезпечує збіжність методу.
Формула методу: ;
Нульове наближення є довільним з інтервалу , доцільно - .
Умова збіжності: , де .
Умова виходу з ітераційного процесу: .
Спосіб переходу від рівняння до , що забезпечує збіжність методу: ; де ; ; .
Метод хорд
Умови застосування методу: , і - неперервні функції на інтервалі , причому і .
Формула методу: ;
і ,
якщо або ;
і ,
якщо або ;
В іншому варіанті формула методу має вигляд:
;
;
;
- довільне, наприклад, ;
і ,
якщо ;
і ,
якщо .
Умова виходу з ітераційного процесу: ,
де , а .
Метод дотичних
Умови застосування методу ті ж, що і методу хорд.
Формула методу: ; ,
причому нульове наближення вибирають з умови:
,
якщо ,
або ,
якщо .
Умова виходу з ітераційного процесу: ,
де , а .
Комбінований метод
У комбінованому методі довжину інтервалу на кожній ітерації скорочують за допомогою формул методів хорд і дотичних (а деколи ще і половинного ділення).
Порядок виконання роботи
1. Виділити корінь заданого рівняння і перевірити умови застосування різних методів уточнення кореня.
2. Скласти блок-схеми алгоритмів уточнення кореня різними методами і обліку кількості ітерацій.
3. Після перевірки блок-схеми викладачем розробити програми мовою С/С++ і в середовищі MATLAB.
4. За допомогою перевірених викладачем програм в середовищах Turbo C++ і MATLAB одержати для різних ступенів точності корені рівняння і відповідні кількості ітерацій.
5. Оформити звіт з лабораторної роботи (див. Додаток).
Література
Заварыкин В.М. и др. Численные методы. - М.: Просвещение, 1990.
Брановицкая С.В. Вычислительная математика в химии и химической технологии. - К.: Высшая школа, 1986.
Гаврилюк М.А .и др. Прикладные программы и лабораторный практикум для персонального компьютера. - К.: УМК ВО, 1988.
Потемкин В.Г. Система MATLAB. Справочное пособие. М.: ДИАЛОГ-МИФИ, 1997.
Додаток
Завдання на самостійну роботу
Розв'язати нелінійне рівняння:
№
ч/ч
варіант № 1
№
ч/ч
варіант № 2
Додаток
Схема оформлення звіту
1. Тема роботи.
2. Завдання до лабораторної роботи.
3. Виділення кореня: табулювання ;
- побудова графіка мовою С/С++ і в середовищі MATLAB;
- вибір інтервалу.
4. Уточнення кореня.
Для кожного методу подати:
- перевірку умов застосування;
- блок-схему алгоритму;
- програми мовою С/С++ і в середовищі MATLAB;
- результати.
5. Порівняльна таблиця результатів обчислень у наступній формі:
Метод уточнення кореня
Задана похибка, (
Значення кореня
Кількість ітерацій
10-4
0,67243
17
Половинного ділення
10-5
0,672436
19
10-6
0,6724358
13
(
6. Висновки і пропозиції.
Приклад оформлення звіту
Лабораторна робота №15
Алгоритмізація та програмування методів розв'язування нелінійного рівняння
Завдання: знайти (уточнити) розв’язок нелінійного рівняння ; () наступними числовими методами:
а) половинного ділення; б) простих ітерацій; в) хорд; г) дотичних.
Розв'язання
Таблиця 1
Результати табулювання функції (мовою С)
x
y
-1.5
-4.7
-1.0
-3.4
-0.5
-2.1
0.0
-1.0
0.5
-0.1
1.0
0.3
1.5
0.0
Виділимо корінь (знайдемо інтервал( в якому знаходиться корінь) заданого рівняння шляхом: табулювання ;
Результати табулювання функції в середовищі MATLAB, після введення в командну стрічку імені файлу divlab1a.m
» divlab1a
Таблиця 2
Результати табулювання функції ) в середовищі MATLAB
x
-1.5000
-1.0000
-0.5000
0
0.5000
1.0000
1.5000
y
-4.7231
-3.3679
-2.1065
-1.0000
-0.1487
0.2817
0.0183
Як видно із таблиці 2( корінь рівняння знаходиться на проміжку [-1.5; 1.5].
Побудова в середовищі MATLAB
Із рис.5 також видно, що корінь рівняння знаходиться на інтервалі [-1.5; 1.5]. Отже, приймаємо інтервал( в якому міститься корінь даного рівняння [-1.5; 1.5].
Метод половинного ділення
Результати виконання програм:
Таблиця 3
№ ч/ч
x0 (C++)
k (C++)
x0 (Matlab)
k (Matlab)
(
0.61904
15
0.61903
15
10-4
0.619060
19
0.6190595
19
10-5
0.6190610
22
0.6190613
22
10-6