Смекни!
smekni.com

Розробка математичної програми в середовищі С++ (стр. 2 из 3)

З формул (2), (3) видно, що

і
. Тому
, а отже шуканий корінь
знаходиться на проміжку
. При цьому має місце оцінка збіжності

. (5)

Звідси випливає, що кількість ітерацій. які необхідно провести для знаходження наближеного кореня рівняння (1) з заданою точністю e задовольняє співвідношенню

. (6)

де [c] - ціла частина числа c.

Серед переваг даного методу слід відзначити простоту реалізації та надійність. Послідовність {xn} збігається до кореня

для довільних неперервних функцій f(x). До недоліків можна віднести невисоку швидкість збіжності методу та неможливість безпосереднього узагальнення систем нелінійних рівнянь.

Метод простої ітерації

Метод простої ітерації застосовується до розв’язування нелінійного рівняння виду

. (7)

Перейти від рівняння (1) до рівняння(7) можна багатьма способами, наприклад, вибравши

, (8)

де

- довільна неперервна функція.

Вибравши нульове наближення x0, наступні наближення знаходяться за формулою

. (9)

Наведемо достатні умови збіжності методу простої ітерації.

Теорема 1. Нехай для вибраного початкового наближення x0 на проміжку

(10)

функція j(x) задовольняє умові Лівшиця

(11)

де 0<q<1, і виконується нерівність

. (12)

Тоді рівняння (7) має на проміжку S єдиний корінь

, до якого збігається послідовність (9), причому швидкість збіжності визначається нерівністю

. (13)

Зауваження: якщо функція j(x) має на проміжку S неперервну похідну

, яка задовольняє умові

, (14)

то функція j(x) буде задовольняти умові (11) теореми 1.

З (13) можна отримати оцінку кількості ітерацій. які потрібно провести для знаходження розв’язку задачі (7) з наперед заданою точністю e:


. (15)

Наведемо ще одну оцінку. що характеризує збіжність методу простої ітерації:

. (16)

Метод релаксації

Для збіжності ітераційного процесу (9) суттєве значення має вибір функції j(x). Зокрема, якщо в (8) вибрати

, то отримаємо метод релаксації.

, (17)

який збігається при

. (18)

Якщо в деякому околі кореня виконуються умови

, (19)

то метод релаксації збігаються при

. Збіжність буде найкращою при

. (20)

При такому виборі t для похибки

буде мати місце оцінка

, (21)

де

.

Кількість ітерацій, які потрібно провести для знаходження розв’язку з точністю e визначається нерівністю

. (22)

Зауваження: якщо виконується умова

, то ітераційний метод (17) потрібно записати у вигляді
.

Метод Ньютона

Метод Ньютона застосовується до розв’язування задачі (1), де f(x) є неперервно-диференційованою функцією. На початку обчислень вибирається початкове наближення x0. Наступні наближення обчислюються за формулою

. (23)

З геометричної точки зору xn+1 є значенням абсциси точки перетину дотичної до кривої y=f(x) в точці (xn, f(xn)) з віссю абсцис. Тому метод Ньютона називають також методом дотичних.

Теорема 2. Якщо

не змінює знака на [a, b], то виходячи з початкового наближення
, що задовольняє умові
, можна обчислити методом Ньютона єдиний корінь
рівняння (1) з будь-якою степінню точності.

Теорема 3. Нехай

- простий дійсний корінь рівняння (1) і
, де
,

, (24)

причому

. (25)

Тоді для

метод Ньютона збігається, причому для похибки справедлива оцінка

. (26)

З оцінки (26) видно, що метод Ньютона має квадратичну збіжність, тобто похибка на (n+1) – й ітерації пропорційна квадрату похибки на n-й ітерації.

Модифікований метод Ньютона

(27)

дозволяє не обчислювати похідну

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

Кількість ітерацій, які потрібно провести для знаходження розв’язку задачі (1) з точністю e задовольняє нерівності

. (28)

1.1 Розробка методу виконання основного завдання

Проміжок який перетинає функція, вводим через [a; b]. «eps» похибка розв’язку.

Записуєм з клавіатури проміжок та похибку. Користуючись рекурентною формулою складаєм процедуру уточнення кореня методом хорд. Якщо f(x) двічі неперервно диференційна функція і знак fnk2 (x) зберігається на розглядуваному відрізку, то отримані наближення будуть сходитись до кореня монотонно. Якщо корінь x рівняння f(x)=0 знаходяться на відрізку [a; b], виробничі fnk(x) і fnk2 (x) на цьому відрізку неперервні і зберігають постійні знаки і fnk(a)*fnk2 (a)>0, то можна доказати, що похибка наближеного розв’язку прямує до нуля n->∞, то метод сходиться і має при цьому лінійну швидкість схожості. (Подібне до швидкості геометричної прогресії). Обчислюємо значення f(x) в середині відрізка [a; b], тобто в точці x1=x-fnk(x)/fnk1 (x). Залежно від значення f (x-fnk(x)/fnk1 (x)) вибираємо ту частину інтервалу [a; b], де знаки функції f(x) є різними. Отже, інтервал, у якому є корінь, змінився. Продовживши процес, ми звужуємо інтервал до такої величини, поки його розмір (який дорівнює абсолютній похибці) не стане меншим від потрібної нам величини.

1.2 Структура даних і функцій

Моя програма складається з 6 модулів і головної функції main(). Характеристика кожного з модулів:

Основний, файл KURSAK.cpp в ньому знаходиться послідовність дій програми, тобто в даному модулі програма викликає інші під модулі які виконуюсь якусь функцію:

MODULE.cpp

HORD.cpp

SHOW.cpp

TITULKA.cpp

GRAFIK.cpp

AUTOR.cpp

Програма спочатку запускає електронну титульну сторінку курсової роботи, потім будує графік функції, корені якої нам потрібно знайти, використовуючи метод хорд знаходить корінь на вказаному з клавіатури проміжку з вказаною точністю, демонструє метод дихотомії графічно та зрештою виводить головне меню на екран. Всі ці дії, крім виводу головного меню на екран, виконуються лише запуском відповідних функцій з додаткових модулів. Крім того, функція void main() ініціалізує графічний режим, підключаючи BGI драйвер EGAVGA.BGI.