МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
МЕТОДИ УТОЧНЕННЯ КОРЕНІВ
НЕЛІНІЙНИХ РІВНЯНЬ
Лабораторна робота № 1
з курсу
"Комп’ютерні методи дослідження інформаційних процесів та систем"
Виконав:
Студент гр. ІБ-1
Львів – 2007
Мета роботи – ознайомлення з методами уточнення коренів нелінійних рівнянь з одним невідомим.
1. Короткі теоретичні відомості.
Метод простої ітерації
Рис.6.
У цьому методі рівняння заміняється еквівалентним йому рівнянням
(13)
Наприклад, рівняння зводимо до виду .
Виберемо за початкове наближення кореня значення і підставимов праву частину рівняння (1). Одержимо деяке число
(14)
Підставляючи в праву частину рівності (2) замість значення одержимо нове число
Повторюючи процес, будемо мати наступну послідовність
(15)
Якщо ця послідовність збіжна, то границя цієї послідовності – корінь рівняння і може бути обчислений з будь-якою точністю.
Достатня умова збіжності методу простої ітерації формулюється наступним чином: якщо для всіх виконується нерівність
(16)
то на проміжку рівняння має єдиний корінь і процес ітерації збігається до цього кореня незалежно від вибору початкового наближення .
Таким чином при практичному знаходженні кореня за методом ітерації при переході від рівняння до (13) необхідно зобразити так, щоб похідна за абсолютною величиною була якомога менша одиниці.
Для зведення рівняння до вигляду (13) може бути застосований загальний метод, котрий забезпечує виконання нерівності (16).
Нехай , при , де m1 – найменше значення похідної , ;
М1 – найбільше значення похідної на відрізку [a, b],
Якщо похідна – від’ємна, то замість рівняння розглянемо рівняння – .
Замінимо це рівняння еквівалентним йому рівнянням і виберемо сталу λ так, щоб забезпечити виконання умови (16)
.
1)
Розкриваємо нерівність
Візьмемо праву нерівність , з неї випливає, що тобто оскільки
З лівої нерівності випливає, що Отже, значення коефіцієнта λ знаходиться в межах .
Як правило за λ приймають значення де М1 – максимальне значення похідної на проміжку .
Відповідно, ітераційна формула буде мати вигляд
2) Якщо то можна довести, що
(17)
І відповідний ітераційний процес має вигляд
(18)
Алгоритм методу простої ітерації
Метод Стефенсона
Ітераційна формула методу:
(20)
Зберігає квадратичну збіжність методу Ньютона в околі кореня без необхідності обчислення похідної .
.2.ЗАВДАННЯ ДО ЛАБОРАТОРНОЇ РОБОТИ
Знайти корінь рівняння з граничною абсолютною похибкою Е = 10–4, відокремлений на відрізку [a, b]. Методи чисельного розв’язування задаються викладачем
Варіант
Рівняння
Відрізок
1,1
ех + х = 0
[-1;0] -0.5671432904
2,2
ех + lnx = 0
[0.1;2] 0.2698741376
3,3
sin x – 1/x = 0
[1;1.5] 1.114157141
4,4
cos x – 1/(x + 2) = 0
[–1;0] -0.6964405997
5,5
cos x + 1/(x + 2) = 0
[1;2] 1.834627945
6,6
x3 + x – 3 = 0
[1;2] 1.213411663
7,7
x3 + x2 – 3 = 0
[1;2] 1.174559410
8,8
e–х – х = 0
[0;1]0 .5671432904
9,1
cos x + 1/(x – 2) = 0
[0;1]0 .6964405997
10,2
cos x – 1/(x – 2) = 0
[–2;–1] -1.834627945
11,3
x3 – x2 + 3 = 0
[–2;–1] -1.174559410
12,4
lnx + x = 0
[0.4;1] 0.5671432904
13,5
x3 + x + 3 = 0
[–2;–1] -1.213411663
14,6
lgx + x = 0
[0.2;1]0 .5671432904
15,7
x2 – cos x = 0
[–0.8;–0.7]0 .8241323123!
16,8
x3 + 3x2 – 3 = 0
[–3;–2.2] -2.532088886
17,1
x2 – cos x = 0
[0.7;0.8] 0.8241323123!
18,2
x3 – 3x – 1 = 0
[–2;–1] -1.532088886
19,3
cos(x – 1.1) – 3x + 2 = 0
[0.9;1.1] 0.9982768880
20,4
x2 + sin2x – 2 = 0
[–1.5;–1.4] -1.478009152
21,5
x3 + 6x2 + 9x + 1 = 0
[–1;0] -0.1206147584
22,6
4x2 – cos x – 4= 0
[1;1.2] 1.059408769
23,7
2x3 + 2x – 1 = 0
[0;1]0 .4238537991
24,8
x3 – 3x2 + 1 = 0
[–1;0] -0.5320888862
25,1
x3 + x2 + 3 = 0
[–2;–1] -1.863706528
3. Блок-схема алгоритму програми.
4. Список ідентифікаторів констант, змінних, процедур і функцій, використаних в програмі, та їх пояснення.
a,b,c-змінні яким присвоюється значення інтервалу та похибки відповідно.
fx,fxx- змінні яким присвоюється значення функцій.
xn,x-аргументи функцій.
Writeln, readln-процедури вводу/виводу.
5. Остаточно відлагоджений текст програми.
program KMDIP_7v_metod_stefensona;
var a,b,c,fx,d,fxx,xn,x:real;
begin
writeln('a=,b=,c=');
readln(a,b,c);
x:=a;
repeat
begin
fx:=x*x*x+x*x-3;
fxx:=(x+fx)*(x+fx)*(x+fx)+sqr(x+fx)-3;
xn:=x-fx*fx/(fxx-fx);
d:=xn-x;
x:=xn;
end;
until(abs(d)<c);
writeln('x=',xn);
readln;
end.
6.Результати роботи програми.
Turbo Pascal Version 7.1 Copyright (c) 1983,97 Borland International
a=,b=,c=
1
2
0.0001
x= 1.1745594278E+00