МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІКТА, кафедра “Захист інформації”
Звіт
з ЛАБОРАТОРНої РОБОТи № 5
З КУРСУ “ Комп’ютерні методи дослідження інформаційних процесів та систем ”
НА ТЕМУ: “ МЕТОД НЬЮТОНА ДЛЯ РОЗВ’ЯЗУВАННЯ СИСТЕМ НЕЛІНІЙНИХ РІВНЯНЬ“
Варіант 19
виконав: ст. гр. ІБ-2
Львів – 2007
Мета роботи-ознайомлення з найпоширенішим ітераційним методом розв’язування систем нелінійних рівнянь – методом Ньютона
Короткі теоретичні відомості
Стандартний метод Ньютона
Метод Ньютона базується на лінеаризації задачі і заміні розв'язування нелінійної системи (2) на послідовність розв'язувань лінійних систем (найчастіше прямими методами).
Будемо вважати, що система рівнянь (2) має розв'язок; позначимо його через вектор EMBED Equation.3 і розкладемо кожну функцію в ряд Тейлора в околі розв'язку
EMBED Equation.3
де EMBED Equation.3 - члени другого і вищих порядків.
Вважаючи, що EMBED Equation.3 дуже близьке до EMBED Equation.3 , знехтуємо членами вищих порядків і запишемо систему рівнянь в лінеаризованій формі:
EMBED Equation.3 (3)
або в іншому вигляді
EMBED Equation.3 (4)
де
EMBED Equation.3 – матриця Якобі (якобіан) системи (1)
Враховуючи, що EMBED Equation.3 є розв'язком системи, згідно з (2) можемо записати:
EMBED Equation.3
Звідси випливає, що і праву частину (4) також можна прирівняти до нуля:
EMBED Equation.3 (5)
Розв'язком системи (5) є нове значення вектора X, яке не точно дорівнює значенню вектора EMBED Equation.3 (оскільки знехтували членами другого і вищих порядків). Використовуючи верхні індекси для позначення послідовності ітерацій, можна записати
EMBED Equation.3 (6)
Звідси
EMBED Equation.3 (7)
де EMBED Equation.3 - обернена матриця Якобі; EMBED Equation.3 .
У достатньо широкому околі розв'язку EMBED Equation.3 ітераційний процес (7) збігається, якщо EMBED Equation.3 .
Ітераційний процес закінчується при виконанні умови
EMBED Equation.3 (8)
де Σ - задана гранична похибка уточнень коренів системи (1).
Таким чином, алгоритм стандартного методу Ньютона можна розбити, на декілька кроків.
Крок 1. Вибір вектора початкових уточнень
EMBED Equation.3 .
Крок 2. Обчислення елементів матриці Якобі.
Крок 3. Обчислення елементів оберненої матриці Якобі.
Крок 4. Перемноження значень функції (див. формулу (7))
EMBED Equation.3
Крок 5. Одержаний на кроці 4 вектор віднімається від вектора EMBED Equation.3 , у результаті чого одержується покращений вектор розв'язку EMBED Equation.3 .
Крок 6. Перевірка умови закінчення ітерацій (8). Якщо вона не виконується, то за вектор початкових уточнень приймається вектор EMBED Equation.3 і проводиться наступна ітерація, починаючи з кроку 2.
При використанні стандартного методу Ньютона слід мати на увазі наступне.
1. Стандартний метод Ньютона надзвичайно ефективний.
2. Збіжність на початку ітераційного процесу, як правило, лінійна.
3. Починаючи з деякого кроку ( уточнити його попередньо неможливо), збіжність різко прискорюється і стає квадратичною.
4. Бувають випадки, коли метод розбігається або спостерігається зациклювання ітерацій. Тому необхідно обмежувати максимальну кількість ітерацій деяким попередньо заданим числом.
Основний недолік методу полягає в повторних обчисленнях на кожному кроці вектора EMBED Equation.3 , матриці Якобі EMBED Equation.3 , оберненої матриці Якобі EMBED Equation.3 . Тому на практиці досить часто з метою зменшення витрат машинного часу використовують стандартний метод Ньютона без обертання матриці Якобі.
Позначаючи
EMBED Equation.3 (9)
перепишемо (6) у вигляді
EMBED Equation.3 (10)
Таким чином, задача зводиться до пошуку вектора поправок (приростів) EMBED Equation.3 із системи лінійних алгебраїчних рівнянь (10), у якій матрицею коефіцієнтів при невідомих EMBED Equation.3 є матриця Якобі EMBED Equation.3 , а вектором-стовпцем вільних членів служить вектор значень функції – EMBED Equation.3 . Розв'язуючи цю систему одним із відомих методів (як правило, це представники групи прямих методів – метод Гаусса з вибором головних елементів, метод LU – факторизації та ін.) , знаходимо EMBED Equation.3 . Значення EMBED Equation.3 визначаємо із виразу
EMBED Equation.3 (11)
ЗАВДАННЯ ДО ЛАБОРАТОРНОЇ РОБОТИ
Розв’яжіть систему нелінійних рівнянь одним із методів, вказаних викладачем, вибираючи за початкові наближення EMBED Equation.3 . Ітерації проводити до збігу двох послідовних наближень з похибкою EMBED Equation.3 .
EMBED Equation.3 EMBED Equation.3
Таблиця ідентифікаторів констант, змінних, функцій, використаних у програмі, та їх пояснення:
Текст програми мовою С
#include<stdio.h>
#include<math.h>
#include<conio.h>
double f1(double x, double y) // persha funkcia
{
return x-cos(y)-1;
}
double f2(double x, double y) // druga funkcia
{
return y-sin(y)-1;
}
///Znachenia chastkovyh pohydnyh////
double df1dx(double x, double y)
{
return 1;
}
double df1dy(double x, double y)
{
return sin(y);
}
double df2dx(double x, double y)
{
return 0;
}
double df2dy(double x, double y)
{
return 1-cos(y);
}
double Xo,Yo,h,delX,delY,poh;
////////Osnovna programa/////////
void main(void)
{
clrscr();
printf("pochatkove nablyghennya Xo="); scanf("%lf",&Xo);
printf("pochatkove nablyghennya Yo="); scanf("%lf",&Yo);
printf("h="); scanf("%lf",&h);
if ((df1dx(Xo,Yo)*df2dy(Xo,Yo)-df1dy(Xo,Yo)*df2dx(Xo,Yo))!=0)
{
do
{
delX=df1dy(Xo,Yo)*f2(Xo,Yo)-df2dy(Xo,Yo)*f1(Xo,Yo);
delY=df2dx(Xo,Yo)*f1(Xo,Yo)-df1dx(Xo,Yo)*f2(Xo,Yo);
poh=delX/Xo;
Xo+=delX;
Yo+=delY;
}
while (fabs(poh)>h);
}
else printf("Vyznachnyk Jakobiana = 0");
printf("X=%4.4lf\nY=%4.4lf",Xo,Yo);
getch();
}
Результат роботи програми:
pochatkove nablyghennya Xo=-0.9
pochatkove nablyghennya Yo=-1.4
h=0.00001
X=0.6442
Y=1.9346
Висновок: на цій лабораторній роботі я ознайомився з найпоширенішим ітераційним методом розв’язування систем нелінійних рівнянь – методом Ньютона