Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
!!!Лабораторный практикум ПМ.doc
Скачиваний:
7
Добавлен:
21.08.2019
Размер:
4.97 Mб
Скачать

Метод бісекції

Нехай [a,b] - відрізок локалізації. Припустимо, що функція f(x) безперервна на [a,b] і на кінцях приймає значення різних знаків .

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

Критерій закінчення ітераційного процесу: якщо довжина відрізка локалізації менше , то ітерації припиняють і як значення кореня з заданою точністю приймають середину відрізка. 

Приклад 2.3. Рішення рівняння методом бісекції. Для цього необхідно виконати наступну послідовність операцій:

function ex2 % Розв’язати рівняння f(x)=0, де f(x)= x^3 - cos(x) + 1 методом бісекції

% Введемо функцію f(x) f = inline('x.^3 - cos(x) + 1'); root1 = bisec(f, -0.6, -0.4) root2 = bisec(f, -0.2, 0.2)

% Метод бісекції function center = bisec(f, left, right) % Класичний метод бісекції з наближенням 2 eps while right - left > eps * 2 center = (right - left) / 2 + left; if f(center) * f(left) > 0 left = center; else right = center; end end

>> root1 = -0.4901

root2 = -1.0537e-008

Метод Ньютона (метод дотичних)

Розрахункова формула методу Ньютона має вигляд:

.

Геометрично метод Ньютона означає, що наступне наближення до кореня є точка перетинання з віссю ОХ дотичної, проведеної до графіка функції в точці ( .  

Критерій закінчення ітераційного процесу. При заданій точності обчислення варто вести доти поки не виявиться виконаним нерівність .

Приклад 2.4. Розв’язати рівняння методом Ньютона.

function ex3 % Розв’язати рівнянняf(x)=0, где где f(x)= x^3 - cos(x) + 1 методом Ньютона

% Введемо функцію f(x) f = inline('x.^3 - cos(x) + 1'); % Її похідна df = inline('3*x.^2 + sin(x)'); root1 = newton(f, df, -0.5); % Перевіримо корні f(root1) root2 = newton(f, df, -0.1); f(root2)

% Метод Ньютона function root = newton(f, df, x0) root = x0 - f(x0) / df(x0); old_root = x0; while abs(old_root - root) > 2 * eps t = old_root; old_root = root; root = t - f(t) / df(t); end

>> ans = -9.5740e-005

ans = 8.3665e-004

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

Метод простої ітерації (метод послідовних повторень)

Для застосування методу простої ітерації слід вихідне рівняння перетворити до виду, зручному для ітерації . Це перетворення можна виконати різними способами. Функція називається ітераційною функцією. Розрахункова формула методу простої ітерації має вигляд: .

Теорема про збіжність методу простої ітерації. Нехай у якійсь - околиці кореня функцію можна диференціювати і вона задовольняє нерівності , де - постійна . Тоді незалежно від вибору початкового наближення з зазначеної - околиці ітераційна послідовність не виходить з цієї околиці, метод сходиться зі швидкістю геометричної послідовності і справедлива оцінка погрішності: , .

  Критерій закінчення ітераційного процесу. При заданій точності обчислення слід вести доти поки не виявиться виконаним нерівність . Якщо величина , то можна використовувати більш простий критерій закінчення ітерацій: .

Ключовий момент у застосуванні методу простої ітерації складається в еквівалентному перетворенні рівняння . Спосіб, при якому виконана умова збіжності методу простої ітерації, полягає в наступному: вихідне рівняння приводиться до виду . Припустимо додатково, що похідна знакопостоянна і на відрізку [a,b]. Тоді при виборі ітераційного параметра метод сходиться і значення .

Приклад 2.5. Розв’язати рівняння методом ітерацій.

function ex5 % Розв’язати рівняння f(x)=0, где где f(x)= x^2 - 3*x + 3.25 - 5*cos(x) методом простої їітераці

% Введемо функцію f(x) f = inline('x.^2 - 3*x +3.25 - 5*cos(x)'); % Побудуємо графік функції на відрізку [-1,1] x = linspace(-1,1,100); % Вісі з градуіровкою figure('Name', '[-1,1]'); axes('NextPlot', 'Add'); grid on plot(x, f(x));

% Призведемо рівняння к вигляду g(x)=x g = inline('(x.^2 - 5 * cos(x) + 3.25) / 3'); % Початкове наближення x0 = -0.4; % Виконаємо 100 шагів методу for i = 1:100 x0 = g(x0); end f(x0)

>> ans = 5.7730e-007

У разі виконання цієї програми отримаємо графік, який представлений на рис. 2.5.

Рис. 2.5. Графічний аналіз отриманих результатів

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