- •Методичні рекомендації до вивчення дисціпліни "Комп’ютерне моделювання електронних схем, конструкцій та технологій електронних апаратів"
- •1.Загальні питання
- •2.Визначення полюсів схемних функцій
- •2.1.Метод дихотомії
- •2.2.Метод хорд
- •2.3.Метод дотичних
- •2.4.Пошук комплексних коренів нелінійних рівнянь
- •3.Визначення коефіціентів чутливості
- •3.1.Розрахунок перших частинних похідних функції
- •3.1.1.Схема 2т чисельного диференціювання
- •3.1.2.Схема 3т чисельного диференціювання
- •3.2.Розрахунок власних частинних похідних другого порядку
- •3.3.Розрахунок взаємних похідних другого порядку
- •4.Визначення міри відповідності характеристик реа
- •4.1.Метод прямокутників
- •4.2.Метод трапецій
- •4.3.Метод Симпсона
- •5.Модедювання радіоелектронних апаратів системами рівнянь
- •5.1.Метод Гауса
- •5.1.1.Розв’язання систем алгебраїчних рівнянь методом Гауса
- •5.1.2.Обчислення визначника матриці методом Гауса
- •5.1.3.Обернення матриці методом Гауса
- •5.2.Метод Жордана
- •5.2.1.Обернення матриці методом Жордана
- •5.3.Метод lu-факторизації
- •5.4.Метод опорного елементу
- •6.Ітераційні методи розвяЗувАння систем лінійних рівнянь
- •6.1.Метод Якобі
- •6.2.Метод Гауса-Зейделя
- •6.3.Метод послідовної верхньої релаксації
- •7.Моделюванні статичного режиму радіоелектронних засобів
- •7.1.Метод простої ітерації
- •7.2.Метод Ньютона
- •2.3 Метод продовження параметру
- •8.Інтерполяція та наближення кривими
- •8.1.Метод невизначених коефіціентів
- •8.2.Регресійний аналіз. Метод найменших квадратів
- •8.2.1.Лінійна регресія
- •8.2.2.Квадратична регресія
- •9.Розв’язання звичайних диференційних рівнянь
- •9.1.Постановка задачі
- •9.2.Метод Ейлера
- •9.3.Метод Ейлера-Коші
- •9.4.Метод Рунге-Кутта
- •Перелік літератури
2.3.Метод дотичних
Метод дотичних (Ньютона) [2, 3] є одним із найбільш ефективних методів пошуку кореня нелінійних рівнянь. Він забезпечує квадратичну зходимість до кореня поблизу нього.
Нехай корінь функції знаходиться на інтервалі [a,b], тобто f(a)f(b)<0.
Початкова точка пошуку вибирається за умови: якщо f(а)f"(а)>0, то покласти х(0)= а; якщо f(а)f"(а)>0, то х(0)= b. Черговим наближенням кореня вважається точка перетину дотичної функції та осі ОХ, що розраховується за формулою
.
Кількаразове використання отриманого значення дозволяє уточнити корінь до потрібноє точності.
Алгоритм пошуку кореня нелінійного рівняння за методом дотичних включає кроки:
вибрати початкову точку пошуку; якщо f(а)f"(а)>0, то покласти х(0)= а; якщо f(а)f"(а)>0, то х(0)= b;
покласти k=0;
для відомого х(k) розрахувати поточнi значення функції f(х), що досліджується, та її похідної f'(х);
покласти k= k+1;
розрахувати чергове значення аргумента за формулою
х(k)= х(k-1) -f(х(k-1))/f'(х(k-1));
якщо х(k)-х(k-1)>, то перейти до п.2;
вивести результат та припинити обчислення.
Примітка. Якщо важко обчислити похідну аналітично, користуються методом кінцевих прирощень, у відповідності до якого f' f/x при x=0,0001.
Задача 2.3. Знайти методом дотичних корінь функції f(x)=x2-1 на інтервалі [0, 2] з точністю 0.01.
Розвязок. Чи існує корінь на інтервалі [0, 2]? Існує, бо f(0)f(2)=(‑1)3<0.
Вибір початкової точки: f'=2x; f"=2>0; x0=b=2, бо f(b)f"=3*2>0. Наступні результати розвязання задачі відповідно до описаного алгоритму метода Ньютона наведені в таблиці:
k |
x |
x-xt |
fx |
f' |
x |
0 |
2 |
1 |
3 |
4 |
-3/4 |
1 |
5/4= 1.25 |
0.25 |
9/16=0.5625 |
5/2= 2.5 |
-9/40= 0.225 |
2 |
1.025 |
0.025 |
0.05062 |
41/20=2.05 |
-0.0247 |
3 |
1.0003 |
0.0003 |
0.0006 |
2.0006 |
-0.0002997 |
4 |
1.0000003 |
0.0000003 |
|
|
|
Таким чином, за 3 ітерації знайдено корінь рівняння з похибкою, що не перевищує 0,001. Для поточної задачі метод забезпечив лінійний збіг з коефіцієнтом .
Програма Root_Newton, що реалізує метод Ньютона для пошуку кореня функції f(x)=x2-1 з точністю = 0.001 в інтервалі [0, 3] наведена нижче:
Program Root_Newton;{ пошук кореня методом дотичних }
uses CRT;
const e= 0.001; { критерiй зупину }
k: integer= 0; { номер iтерацii }
ko:integer=0; { кiлькiсть розрахункiв функцii }
a:real=0; { лiва межа iнтервалу з коренем }
b:real=3; { права межа iнтервалу з коренем }
var x, xo, { поточне та попереднс значення кореня }
fx, f1x, { значення функцii та похiдноi у точках }
dx: real; { величина уточнення кореня }
Function F(x:real):real;
Begin inc(ko); f:=x*x-1
End;
Function F1(x:real):real;
Begin f1:=2*x
End;
Function F11(x:real):real;
Begin f11:=2 End;
BEGin
ClrScr;
writeln('Пошук кореня нелiнiйного рiвняння методом дотичних');
writeln(' Значення критерiю зупину: ',e:5:3);
if f(a)*f11(a)>0 then x:=a else
if f(b)*f11(b)>0 then x:=b else halt;
writeln(' k x fx dx');
repeat
xo:=x;
fx:=f(x);
write(k:2,x:9:4,fx:12:6);
f1x:=f1(x);
x:=x-fx/f1x;
dx:=abs(xo-x);
writeln(dx:10:4);
inc(k);
until dx<e;
writeln; writeln;
writeln('Розрахункiв функцii ',ko:2,'. Xm=',x:6:4,' f(Xm)=',f(x):10:6);
write('Натисни "Enter": '); readln
END.
Результат виконання програми Root_Newton наведено в таблиці:
Пошук кореня нелiнiйного рiвняння методом дотичних
Значення критерiю зупину: 0.001
k x fx dx
0 3.0000 8.000000 1.3333
1 1.6667 1.777778 0.5333
2 1.1333 0.284444 0.1255
3 1.0078 0.015748 0.0078
4 1.0000 0.000061 0.0000
Розрахункiв функцii 7. Xm=1.0000 f(Xm)= 0.000000
Натисни "Enter":
Таким чином, корінь з точністю 0.001 знайдено за 4 ітерації, на що потрібно лише 7 розрахунків функції.