Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КМСхКТ_мет_2012.doc
Скачиваний:
6
Добавлен:
19.11.2019
Размер:
1.81 Mб
Скачать

2.Визначення полюсів схемних функцій

Схемні функції - нелінійні рівняння комплексної частоти р=j. Загалом нелінійні рівняння задаються у вигляді f(x)= 0, де x а, b. Нелінійні рівняння поділяють на:

  • алгебраїчні (поліноми деякої змінної);

  • трансцендентні, що використовують тригонометричні (sinx), логарифмічні (logx, lnx), оберненотригонометричні (arсsinx) та інші нелінійні функції.

Поліноми можна привести до канонічного вигляду (канонічної форми):

P = anxn + an-1xn-1 + … + a1x + a0.

Два рівняння f(x) і g(x) називаються еквівалентними, якщо збігається множина їхніх розв’язків.

Процес пошуку коренів нелінійного рівняння часто поділяється на етапи відділення та уточнення коренів.

Якщо на межах інтервалу [a, b] знаки функції різні, то на ньому може бути хоча б один корінь (або непарна їх кількість). Етап відділення кореня реалізується, як правило, методом пошуку з постійним кроком (великим відносно похибки пошуку).

Для уточнення коренів часто використовуються методи поразрядного уточнення, дихотомії (половинного ділення), січних, дотичних (Ньютона), простої ітерації тощо.

Обчислювальний процес пошуку коренів нелінійних рівнянь є ітераційним. Він може збігатися, не збігатися або розбігатися. Якщо модуль прирощення аргументів на кожній наступній ітерації зменшується, то обчислювальний процес збігається (сходиться). Процес збіжності може йти із різною швидкістю, лінійно або квадратично. Область збіжності - сукупність точок багатовимірного простору, де розрахунковий процес збігається до розв’язку.

2.1.Метод дихотомії

Метод дихотомії (половинного ділення, ділення навпіл) – один із найпростіших та найнадійніших методів уточнення кореня нелінійного рівняння. Нехай корінь функції знаходиться на інтервалі [a,b], тобто f(a)f(b)<0. На кожній ітерації обчислювального процесу ліва та права межі інтервала зсуваються одна до одної, ширина інтервалу та поточна похибка пошуку кореня зменшуються вдвічі. Розрахунки закінчуються, коли

Алгоритм пошуку кореня нелінійного рівняння за методом дихотомії грунтується на виконанні наступних кроків:

  1. розрахувати середину інтервалу c=(a+b)/2;

  2. якщо f(a)f(с)>0, то покласти a=с, інакше b=с;

  3. якщо (b-a)/2 > , то перейти на п.1;

  4. вивести кінцевий результат та закінчити розрахунки.

Задача 2.1. Методом дихотомії знайти з точністю  = 0,1 корінь функції f(х)= х2-1, що знаходиться на інтервалі [0, 3].

Розвязок. Значення добутку f(0)f(3)=(-1)8<0 свідчить про існування кореня на інтервалі [0, 3]. Результати розвязання задачі відповідно до описаного алгоритму дихотомії наведені в таблиці:

it

a

b

(b-a/2

fa

fb

c

fc

fafc

Відки-нути

1

0

3

1.5

-1

8

1.5

1.25

<0

b

2

0

1.5

0.75

-1

1.25

0.75

-0.4375

>0

a

3

0.75

1.5

0.375

-0.4375

1.25

1.125

0.2657

<0

b

4

0.75

1.125

0.188

-0.4375

0.2657

0.938

-0.12

>0

a

5

0.938

1.125

0.094

1.032

За п’ять ітерацій початковий інтервал шириною 3 скорочено у 25=32 разів, задана точність досягнута – корінь рівняння: х5= 1.032+-0.094.

Програма Root_PolDil реалізує пошук кореня функції f(х)= х2-1 на інтервалі [0, 3] методом дихотомії з точністю  = 0,001:

Program Root_PolDil;{пошук кореня нелін. рівняння }

Uses CRT; {методом дихотомії }

const e= 0.001; {точнiсть пошуку кореня }

ko: integer= 0; {кiлькiсть розрахункiв функцii }

k : integer= 0; {номер iтерацii }

a: real= 0; {лiва межа iнтервала }

b: real= 3; {права межа iнтервала }

Var c, {середня точка iнтервала }

fa,fb, fc: real; {значення функцii в точках a, b, c }

Function F(x:real):real;

Begin inc(ko); F:=x*x-1 End;

BEGin

ClrScr;

a:=0; b:=3;

fa:=f(a); fb:=f(b);

writeln(' k a b (b-a)/2 fa fb c fc');

write(k:2, a:9:4,b:9:4,(b-a)/2:9:4,fa:12:7, fb:12:7);

repeat

c:=(a+b)/2;

fc:=f(c);

writeln(c:9:4,fc:12:7);

if fa*fc>0 then

begin a:=c; fa:=fc

end else

begin b:=c; fb:=fc

end;

inc(k);

write(k:2, a:9:4,b:9:4,(b-a)/2:9:4,fa:12:7, fb:12:7);

until (b-a)/2<e;

writeln; writeln;

write('Розрахункiв функцii ',ko);

writeln('Xm=',c:6:4,'+-',(b-a)/2:6:4,' f(Xm)=',fc:10:7);

write('Натисни "Enter": '); readln

END.

Результати виконання програми Root_PolDil:

k a b b-a)/2 fa fb c fc

0 0.0000 3.0000 1.5000 -1.0000000 8.0000000 1.5000 1.2500000

1 0.0000 1.5000 0.7500 -1.0000000 1.2500000 0.7500 -0.4375000

2 0.7500 1.5000 0.3750 -0.4375000 1.2500000 1.1250 0.2656250

3 0.7500 1.1250 0.1875 -0.4375000 0.2656250 0.9375 -0.1210938

4 0.9375 1.1250 0.0938 -0.1210938 0.2656250 1.0313 0.0634766

5 0.9375 1.0313 0.0469 -0.1210938 0.0634766 0.9844 -0.0310059

6 0.9844 1.0313 0.0234 -0.0310059 0.0634766 1.0078 0.0156860

7 0.9844 1.0078 0.0117 -0.0310059 0.0156860 0.9961 -0.0077972

8 0.9961 1.0078 0.0059 -0.0077972 0.0156860 1.0020 0.0039101

9 0.9961 1.0020 0.0029 -0.0077972 0.0039101 0.9990 -0.0019522

10 0.9990 1.0020 0.0015 -0.0019522 0.0039101 1.0005 0.0009768

11 0.9990 1.0005 0.0007 -0.0019522 0.0009768

Розрахункiв функцii 13. Xm=0.9998+-0.0007. f(Xm)=-0.0004882

Натисни "Enter":

Таким чином, за 11 ітерацій знайдено корінь Xm=0.9998 функції, для чого використано 13 розрахунків функції.

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