Особливості машинної арифметики, точність обчислень на ЕОМ
ВСТУП
Цикл лабораторних робіт призначений для студентів другого курсу (четвертий семестр), які вивчають дисципліну "Обчислювальна математика" та працюють у комп'ютерних класах на базі ЕОМ типу IBM PC AT-286 та вище, з компілятором мови С (С++). Перші дві роботи циклу присвячені особливостям машинної арифметики, точності обчислень на ЕОМ та обумовленості обчислювального завдання. Вони є практичною ілюстрацією вступної частини теоретичного курсу дисципліни. Кожна з наступних робіт ставить за мету вивчення або конкретного чисельного методу, або набору чисельних процедур (схем, формул), що дозволяють реалізувати виконання однієї з класичних задач обчислювальної математики: розв'язання нелінійних рівнянь, інтерполювання функцій, чисельне інтегрування, розв'язання систем лінійних рівнянь алгебри. Порядок розташування лабораторних робіт у методичних вказівках відповідає послідовності викладу лекційного матеріалу. Для поглибленого вивчення перерахованих вище завдань та методів їх вирішення доцільно скористатися літературою [1-10], наведеною у списку.
Виконання кожної лабораторної роботи слід здійснювати поетапно у такому порядку:
- підготовка до вирішення завдання на персональній ЕОМ (ПЕОМ);
- Проведення обчислювального експерименту на ПЕОМ;
- аналіз результатів обчислень; оформлення звіту.
Підготовка до вирішення завдання на ПЕОМ проводиться як поза комп'ютерним класом, так і безпосередньо на ПЕОМ. Вона включає:
- ознайомлення з описом роботи та завданням для виконання;
- складання програмних модулів, що містять певні завдання та персональний варіант обчислювальної процедури, та/або введення вихідних даних;
-компіляцію розроблених програмних модулів, їх налагодження та поєднання з наявними для більшості робіт програмами-функціями, що реалізують конкретні чисельні методи;
- планування обчислювального експерименту на ПЕОМ у межах виконуваного завдання.
Програми - функції, призначені для застосування у процесі обчислень, представлені як бібліотеки модулів мовою програмування З++. Це визначає орієнтацію циклу робіт на студентів, які володіють даною мовою та навичками програмування у необхідному обсязі.
Проведення обчислювального експерименту на ПЕОМ здійснюється відповідно до порядку виконання роботи та завданням на дослідження зазначених залежностей та обумовленості досліджуваного методу.
Аналіз результатів обчислень полягає у побудові досліджуваних залежностей та порівняльній оцінці методу (обчислювальної процедури) за характерними для даної групи методами параметрами, наприклад, швидкості збіжності, ступеня обумовленості, досяжної точності тощо.
Аналіз результатів та оформлення звіту проводиться поза комп'ютерним класом.
Звіт повинен містити:
- Тексти розроблених програм;
- Розгорнуті висновки щодо лабораторної роботи.
p align="justify"> У методичних вказівках наведено також завдання на курсову роботу, яка орієнтована на дослідження чотирьох методів вирішення нелінійних рівнянь.
Загальні відомості
Нехай задана безперервна функція речового аргументу x і потрібно чисельним способом вирішити рівняння, тобто. знайти наближення x * до речовинного кореня цього рівняння. Якщо рівняння має кілька речових коренів, то спочатку виробляють їхнє відділення (ізоляцію), а потім уточнюють положення окремого кореня. Вважається, що відділення кореня зроблено,якщо виділений такий інтервал [a0, b0] області визначення функції , на кінцях якого значення функції (a0) і (b0) мають різні знаки і всередині якого є один корінь рівняння . Для уточнення методу використовують ітераційні методи, такі як метод бісекції (половинного поділу), метод хорд (січе або хибного становища), метод Ньютона (дотичних), метод ітерацій (послідовних наближень). У зазначених методах обчислюються або послідовність значень меж інтервалів, що звужуються a0, b0, a1, b1, . . ., an, bn, . . ., містять корінь, чи послідовність наближень до кореня x0, x1, x2, . . ., xn, . . . [2,7,8,11].
У першому випадку ітераційний процес закінчується, як тільки довжина поточного інтервалу стає досить малою (наприклад, bn-an 0 .
Якщо потрібно знайти корінь з точністю e, то поділ навпіл триває доти, доки довжина відрізка стане менше 2e. Тоді координата середини відрізка є значенням кореня з необхідною точністю e.
Метод бісекції є простим і надійним методом пошуку простого кореня рівняння (простим називається корінь x=c функції, що диференціюється , якщо (с) і (с)¹0). Цей метод сходиться для будь-яких безперервних функцій, у тому числі недиференційованих. Швидкість його збіжності невисока. Для досягнення точності e необхідно здійснити N»log2(b-a)/e ітерацій. Це означає, що для отримання кожних трьох вірних десяткових знаків необхідно здійснити близько десяти ітерацій.
У лабораторній роботі №3 пропонується, використовуючи програми - функції BISECT і Round із файлу methods.cpp (файл заголовків metods.h, директорія LIBR1), знайти корінь рівняння методом бісекції із заданою точністю Eps, дослідити залежність числа ітерацій від точності Eps при зміні Eps від 0.1 до 0.000001,дослідити обумовленість методу (чутливість до помилок у вихідних даних).
Виконання роботи здійснюється за індивідуальними варіантами завдань (нелінійних рівнянь), наведеними у підрозділі 3.6. Номер варіанта кожного студента визначається викладачем.
Порядок виконання роботи має бути наступним:
1) Графічно чи аналітично відокремити корінь рівняння (тобто знайти відрізки [Left, Right], у яких функція задовольняє умовам теореми Коші).
2) Скласти підпрограму обчислення функції.
3) Скласти головну програму, що містить звернення до підпрограми f(x), BISECT, Round та індикацію результатів.
4) Провести обчислення за програмою. Побудувати графік залежності кількості ітерацій від Eps.
5) Дослідити чутливість методу до помилок у вихідних даних. Помилки у вихідних даних моделювати з використанням програми Round, що округляє значення функції із заданою точністю Delta.
Текст програми-функції BISECT, призначеної на вирішення рівняння методом бісекції, представлений у підрозділі 3.7.
Метод хорд
(Лабораторна робота №4)
Нехай знайдено відрізок [a, b], у якому функція змінює знак. Для визначеності покладемо (a) 0, (b) 0.
5) Провести обчислення за програмою. Дослідити швидкість збіжності методу та чутливість методу до помилок у вихідних даних.
Для наближеного обчислення коренів рівняння методом Ньютона призначено програму - функція NEWTON, текст якої представлений у підрозділі 3.7.
Метод простих ітерацій
(Лабораторна робота №6)
Метод простих ітерацій розв'язання рівняння полягає у заміні вихідного рівняння еквівалентним йому рівнянням x=j(x) та побудові послідовностіxn+1=j(xn), що сходить при n®¥ до точного рішення. Достатні умови збіжності методу простих ітерацій формулюються теоремою, наведеною [1,2,7].
Розглянемо один крок ітераційного процесу. Виходячи зі знайденого на попередньому етапі значення xn-1, обчислюється y= j(xn-1). Якщо , то потрібно xn=y і виконується чергова ітерація. Якщо ж , то обчислення закінчуються і наближене значення кореня приймається величина xn=y. Похибка результату обчислень залежить від знака похідної: при 0 похибка визначення кореня становить qe/1-q, а при 0, то послідовні наближення будуть сходитися до кореня c монотонно. Слід пам'ятати, що швидкість збіжності послідовності n> до кореня c функції тим вище, що вище число q.
У лабораторній роботі № 6 пропонується, використовуючи програми-функції ITER та Round із файлу methods.cpp (файл заголовків methods.h, директорія LIBR1), знайти корінь рівняння із заданою точністю Eps методом ітерацій, дослідити швидкість збіжності та обумовленість методу.
Для цієї роботи вид функції задається індивідуально кожному студенту викладачем у складі варіантів, наведених у підрозділі 3.6.
Порядок виконання лабораторної роботи №6 має бути наступним.
1) Графічно або аналітично відокремити корінь рівняння.
2) Перетворити рівняння до виду так, щоб у деякій околиці [Left, Right] похідна кореня задовольняла умові ½ ½£q