- •Інформація та інформаційні процеси Поняття інформації.
- •Одиниці вимірювання інформації.
- •Подання інформації та типи комп'ютерів.
- •Способи пересилання інформації.
- •Будова комп'ютера
- •Пристрої введення-виведення інформації.
- •Процесор
- •Принципи функціонування комп'ютера Фізичні принципи
- •Програмний принцип
- •Поняття про середовища програмування
- •Загальна характеристика мови паскаль
- •Поняття інтегрованого середовища
- •Команда New
- •Команда Open
- •Основи алгоритмізації Алгоритми та їх властивості
- •Блок-схеми
- •Загальна характеристика Паскаль-програми
- •Структура Паскаль-програми
- •Елементи мови Паскаль
- •Прості типи даних
- •Стандартні типи даних
- •Дійсний тип
- •Логічний тип
- •Символьний тип
- •Конструйовані типи
- •Перелічуваний тип
- •Оператори надання значень змінним Оператор присвоєння
- •Уведення-виведення
- •Порядок виконання операцій
- •Складений оператор
- •Стиль запису програми
- •Структури керування
- •Структура послідовного виконання
- •Структура розгалуження
- •Умовний оператор
- •Оператор варіанта
- •Оператор безумовного переходу
- •Структура повторення
- •Цикл з параметром
- •Цикл з передумовою
- •Цикл з післяумовою
- •Ітераційні цикли
- •Обчислення суми знакозмінного ряду із заданою точністю
- •Процедури і функції
- •Процедури з параметрами. Параметри-значення
- •Одномірні масиви
- •Поняття масиву. Одномірний масив та його опис в програмі
- •Обчислення скалярного добутку двох векторів
- •Знаходження найбільшого (найменшого) значень серед елементів масиву
- •Обчислення суми та добутку елементів масиву
- •Перетворення масиву по заданому закону
- •Впорядкування одномірних масивів
- •Впорядкування шляхом вибору
- •Впорядкування обмінами
- •Впорядкування вставками
- •Зливання впорядкованих масивів
- •Двомірні масиви Поняття двомірного масиву та його опис у програмі
- •Ввід та вивід значень елементів двомірного масиву Ввід значень елементів двомірного масиву
- •Вивід значень елементів двомірного масиву a[m,n]
- •Рядковий тип (string)
- •Комбіновані типи Організація комбінованих типів у Паскалі
- •Оператор приєднання
- •Множинні типи Організація множин
- •Файлові типи Організація файлів
- •Підготовчі та завершальні операції
- •Операції уведення-виведення
- •Стандартні файли input і output
- •Модулі Модуль і його структура
- •Стандартні модулі
- •Наближене знаходження коренів рівнянь Дослідження рівняння. Відокремлення коренів
- •Метод поділу проміжку пополам
- •Метод хорд
- •Метод дотичних
- •Чисельне інтегрування
- •Квадратурні формули прямокутників
- •Загальні формули прямокутників
- •Квадратурна формула трапецій
- •Практичні оцінки точності квадратурних формул. Вибір кроку інтегрування
- •Список літератури
Наближене знаходження коренів рівнянь Дослідження рівняння. Відокремлення коренів
Нехай задано неперервну функцію y=f(x) і потрібно знайти деякі або всі корені рівняння
f(x) = 0. (1)
Здебільшого, як відомо, корені рівняння (1) можна знайти лише наближено. Для знаходження наближених значень коренів даного рівняння з потрібною точністю доводиться розв'язувати такі задачі: 1) досліджувати кількість коренів та їх розміщення; 2) знаходити наближені значення коренів; 3) обчислювати потрібні корені з необхідною точністю.
Перші дві задачі розв'язують аналітичними і графічними методами. Наприклад, складають таблицю функції f(х), і якщо в двох сусідніх вузлах таблиці функція має різні знаки, то між ними лежить принаймні один корінь. Для відокремлення коренів інколи вдається використати властивості функції f(х), її графік тощо.
Розглянемо графічний метод. Для наближеного розв'язання рівняння f(х)=0 будують графік функції у = f(х). Абсциси точок перетину цього графіка з віссю абсцис і є коренями рівняння f(х)=0.
Оскільки, практично графік функції у=f(х) точно побудувати неможливо, то цим методом можна визначити лише наближені значення коренів рівняння f(х) = 0.
Графічний метод не дає можливості знайти корінь рівняння з наперед заданою точністю, і тому найчастіше його використовують для знаходження початкового, наближеного розв'язку та для визначення меж, в яких міститься розв'язок.
Наближені значення кореня уточнюють різними ітераційними методами. Розглянемо деякі з них.
Метод поділу проміжку пополам
Н ехай на проміжку [а; b] функція f(х) неперервна і набуває на кінцях проміжку значень різних знаків, тобто f(а)•f(b) < 0. Це означає, що на [а; b] рівняння (1) має принаймні один корінь. Цей корінь можна визначити з наперед заданою точністю методом поділу проміжку пополам.
Суть методу полягає в тому, що проміжок, на якому міститься корінь, поступово звужують, зменшуючи його щоразу вдвоє, поки не досягнуть потрібної точності визначення кореня.
Позначимо лівий кінець проміжку, на якому міститься корінь, буквою u, правий – буквою v і знайдемо середину цього проміжку: х = (u+v)/2. Оскільки (за умовою) f(u)f(v)<0, то f(x)f(a)>0, або f (х) f (а)< 0
Якщо f(x) = 0, то корінь х* = х.
Зрозуміло, що у випадку f(х)f(а)>0 корінь міститься на проміжку [x; v].
У випадку f(х)f(а)<0 корінь міститься на проміжку [u; х]. Якщо довжина проміжку, на якому міститься корінь, не перевищує заданої величини , то це означає, що х* знайдено з точністю до , бо |х - х*| x-u. Якщо заданої точності ще не досягнуто, то, позначивши х через u у випадку f(х) f(а) > 0 або через v у випадку f(х)f(а)<0, знову знаходимо середину проміжку [u; v] і повторюємо обчислення.
Переконатися в тому, що потрібна точність при обчисленні кореня х* уже досягнута, можна й іншим способом. Якщо на деякому проміжку [u; v] функція f(х) диференційовна і 0 < m |f(х)| (у цьому випадку на [u; v] міститься єдиний корінь рівняння f(х) = 0) і якщо
то можна вважати, що х — наближене значення кореня х* з точністю до .
Приклад.
Методом поділу проміжку пополам знайти з точністю до 0,005 корінь рівняння x3+1,76439x2+2,21584x – 3,31344 = 0, що лежить на проміжку [0;1].
Розв’язання.
Як бачимо, проміжок локалізації кореня рівняння нам задано: [0;1], тобто залишилось скласти програму для даної задачі. Оскільки точність наближеного визначення кореня буде визначати момент закінчення циклу, то, очевидно, доцільно скористатись в даному випадку циклом з умовою. Той факт, що проміжок локалізації кореня значно перевищує точність, то наперед можна сказати, що як мінімум один раз тіло циклу буде виконуватись, а отже ми можемо використовувати як цикл з передумовою, так і цикл з післяумовою без будь-яких обмежень. Один з варіантів програми реалізації поставленої задачі може виглядати так:
program Podil;
const e = 0.005;
var a, b, c, d, y1, у2: real;
begin
writeln (’ввести значення кінців проміжка локалізації кореня’);
readln (a, b);
repeat
c:=(a+b)/2;
y1:=a*a*a+1.76439*a*a+2.21584*a – 3.31344;
y2:=c*c*c+1.76439*c*c+2.21584*c – 3.31344;
if y1*y2<0 then b:=c else a:=c;
d:=b-a;
until d >= e;
writeln (‘x*=’,c,’+-e’);
end.
Результатом розв’язку даної задачі буде х*=0,785 0,005;