Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MM_Metodichka_2013.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.52 Mб
Скачать

3.2 Уточнення коренів

Розглянемо два чисельних методи уточнення коренів рівнянь: метод простих ітерацій та метод половинного ділення (вихідні дані – результат методу відділення).

3.2.1 Метод простих ітерацій

Маємо рівняння вигляду

. (3.2)

Беремо із інтервалу, отриманого на попередньому етапі, деяке . Розглянемо числову послідовність ..., що задається рекурентною формулою

, (3.3)

Якщо така послідовність має кінцеву границю, то ця границя буде коренем рівняння (3.2). Із вищої математики (за визначенням неперервної функції) відомо, що границя неперервної функції (при відповідному прямуванні аргументу) дорівнює значенню функції в точці:

. (3.4)

Доведено, що послідовність збігається, якщо виконується так звана умова стискання:

, (3.5),

при будь-яких , , що належать області визначення функції , коефіцієнт стискання.

Приклад 3.4. Функція , задовольняє умову стискання. Справді,

, тобто .

Таким чином, на основі вищенаведеного може бути побудований алгоритмічний метод, що дозволяє визначити корінь рівняння (3.2) з будь-якою наперед заданою точністю. Такий алгоритм відомий як метод простих ітерацій (рисунок 3.3).

Рисунок 3.3 – Алгоритм методу простих ітерацій

Фрагмент Basic-програми (Процедура - підпрограма методу ітерацій)

Вхідні параметри: x0 – початкове наближення розв’язку,

eps- точність обчислення розв’язання.

Результат роботи: c – значення кореня рівняння.

SUB Simpleiteration (c AS DOUBLE)

DIM x AS DOUBLE

DIM a AS DOUBLE

a …

eps = …

x = a

WHILE (ABS(x - f(x)) >= eps)

x = f(x)

WEND

c = x

END SUB

Процедура - функція f(x) для методу ітерацій

FUNCTION f (x)

f = (1 / 2) * SIN(x)

END FUNCTION

3.2.2. Метод половинного ділення

Нагадаємо, що вихідні дані для цього методу є результат методу відділення коренів. Тоді функція має один (і лише один) корінь на деякому сегменті (Рисунок 3.4,а).

а) б) в)

Рисунок 3.4

Р озділимо цей сегмент навпіл і отримаємо два сегменти. Далі розглянемо той із отриманих сегментів, на якому лежить корінь функції (рисунок 3.4,б), та розділимо знову цей сегмент навпіл – отримаємо два сегменти. Після чого встановимо, на якому з останніх сегментів лежить корінь (рисунок 3.4,в). Будемо продовжувати цю процедуру ділення сегментів до тих пір, поки довжина чергового сегмента, на якому лежить корінь, не стане менше заданої точності .

Рисунок 3.6Схема алгоритму методу половинного ділення

Алгоритм методу:

Нехай відомо, що функція на кінцях інтервалу має значення різних знаків.

1) розділимо на дві рівні частини та визначимо значення функції у точці ;

2) якщо f(t) = 0, то t — корінь рівняння; виведемо його значення (рисунок 3.5, вид 3). Інакше перейти до підп. 3;

3) аналізуємо знак добутку f(a) * f(t);

4) якщо цей добуток має від’ємне значення, то вважаємо b = t. Корінь буде на ділянці [a, t] (рисунок 3.5, вид 1);

5) якщо цей добуток має додатне значення, то вважаємо а = t. Корінь буде на ділянці [t, b] (рисунок 3.5, вид 2);

6) аналізуємо виконання умови b-a < E, де E — точність уточнення кореня, і якщо вона виконується , то закінчуємо алгоритм, у протилежному випадку повертаємось до підп.1.

Схема алгоритму методу половинного ділення наведена на рисунку 3.6.

Фрагмент Basic-програми (Процедура - підпрограма методу половинного ділення)

Вхідні параметри: a, b – початкове та кінцеве значення інтервалу пошуку розв’язку, eps – точність обчислення розв’язку.

Результат роботи: c – значення кореня рівняння.

SUB Dihotom (c AS DOUBLE)

DIM t AS DOUBLE, a AS DOUBLE, b AS DOUBLE

a = …

b = …

eps = …

DO

t = (a + b) / 2

IF g(a) * g(t) > 0 THEN

a = t

ELSE

b = t

END IF

LOOP UNTIL b - a < eps

c = (a + b) / 2

END SUB

Процедура - функція f(x) для методу половинного ділення

FUNCTION g (x AS DOUBLE)

g = x-(1 / 2) * SIN(x)

END FUNCTION

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]