``````````````````````````````````````````````````````Лабораторна робота № 3
Використання оператора циклу для розв’язання нелінійних скінчених (алгебричних чи трансцендентних) рівнянь методом половинного ділення
1. Порядок виконання роботи
1.1. Скласти алгоритмічною мовою Фортран програму для розв’язання нелінійного рівняння методом половинного ділення.
1.2. Відлагодити на комп’ютері складену програму.
1.3. Ввести числові дані та отримати результат.
1.4. Скласти звіт про роботу й захистити його.
2. Вказівки до виконання роботи
Необхідність розв’язання нелінійних скінчених рівнянь в електромеханіці виникає в задачах розрахунку нелінійних електричних кіл, проектування різних видів електричних машин і апаратів тощо.
Розв’язком (інакше – коренем) нелінійного рівняння

є значення x, яке перетворює це рівняння у тотожність.
Задачу визначення кореня, звичайно, розв’язують чисельними ітераційними методами. Суть цих методів зводиться до того, що, задавшись нульовим наближенням кореня, визначають його перше наближення, за значення визначають друге наближення і т.д. Якщо різниця з ростом j стає все меншою, то кажуть, що ітераційний процес збігається. Його можна припинити, коли виконається нерівність

де ( – похибка (наперед задане мале число).
Нелінійне рівняння може мати єдиний розв’язок, скінчену множину розв’язків чи нескінчену множину розв’язків. Для застосування розглянутих далі методів слід попередньо мати (чи знайти) інтервал , у якому знаходиться шуканий корінь рівняння. Якщо задовольняється умова

тобто функція на кінцях інтервалу має різні знаки, то це означає, що інтервал містить у собі один чи непарну кількість коренів. Якщо на інтервалі задовольняється умова

тобто перша похідна монотонної функції не змінює знаку, то це означає, що на інтервалі розташований лише один корінь.
Примітка. Кожне подане далі рівняння на заданому інтервалі містить один корінь.
Знаходження кореня нелінійного рівняння методом половинного ділення зводиться до того, що заданий інтервал із шуканим коренем ділять на дві рівні частини, як показано на рис. 8. Середину інтервалу (точку с) знаходимо за формулою

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

де – координати інтервалу на j-тій ітерації (j=1, 2, ...). Шуканим коренем рівняння приймають значення




Рис. 8. Знаходження кореня нелінійного рівняння методом половинного ділення
Схема алгоритму розв’язання нелінійного скінченого рівняння методом половинного ділення зображена на рис. 9.
Увага! Якщо невірно буде заданий інтервал чи допущена помилка в програмі, то це може призвести до зациклення роботи програми. Щоб цього не допустити, у програмах з ітераційними циклами використовують лічильники кількості ітерацій. Для цього задаються максимально допустимим значення кількості ітерацій. У випадку, коли виконана програмою кількість ітерацій перевищила допустиму, видається повідомлення і виконання програми припиняється. Схема алгоритму методу половинного ділення із використанням такого лічильника зображена на рис. 10.
Приклад. Необхідно скласти програму визначення методом половинного ділення кореня рівняння

з точністю (=0,0001 на інтервалі від а=0 до b=1,5.
Перевірка показує, що і тобто тому на заданому інтервалі є корінь.
Один із можливих варіантів програми:
С
С
С
С
С
Лабораторна робота № 3
Розв’язання нелінійного скінченого рівняння методом половинного ділення
Виконав ст. гр. ЕМ–11 Вдалий Б.

С
Оператор-функція у(х) – ліва частина заданого рівняння



Y(X) = 1. – X + SIN(X) – ALOG(1.+X)


Рис. 9. Схема алгоритму розв’язання нелінійного скінченого рівняння методом половинного ділення
C
Виведення інформації на екран дисплея



WRITE (*, *) ‘Vvid A, B, EPS, Jmax’

С
C
C
C
C
Введення вхідної інформації:
A – ліва границя інтервалу;
В – права границя інтервалу;
EPS – похибка;
Jmax – максимально допустиме значення кількості ітерацій.



READ (*, *) A, B, EPS, Jmax

С
Обчислення значень функції у(х) на границях інтервалу



YA = Y(A)
YB = Y(B)

C
“Занулення“ лічильника ітерацій



J = 0

C
Початок циклу, знаходження середини інтервалу


1
C = (A+B)/2.

C
Перевіряння умови знаходження кореня



IF ((B – A). LT. EPS) GOTO 7


Рис. 10. Схема алгоритму розв’язання нелінійного скінченого рівняння методом половинного ділення
із використанням лічильника кількості ітерацій
С
Ні, умова знаходження кореня не виконалася.

C
Збільшення значення лічильника на 1



J = J+1

C
Перевіряння умови перевищення допустимої кількості ітерацій



IF (J. GT. Jmax) GOTO 6

С
Ні, умова перевищення допустимої кількості ітерацій не виконалася.

C
Обчислення значень функції у(х) посередині інтервалу



YC = Y(C)

C
Умова відкидання однієї з половин інтервалу



IF (YA*YC. LT. 0.) GOTO 5

C
Відкидання лівої частини інтервалу і продовження циклу



A = C
YA = YC
GOTO 1

C
Відкидання правої частини інтервалу і продовження циклу


5
В = C
YВ = YC
GOTO 1

С
Так, умова перевищення допустимої кількості ітерацій виконалася.

C
Виведення повідомлення про перевищення допустимої кількості ітерацій


6
WRITE (*, *) ‘J > Jmax’

C
Закінчення роботи програми



STOP

С
Так, умова знаходження кореня виконалася.

C
Друкування значення кореня та виконаної кількості ітерацій


7
WRITE (*, *) ‘Korin= ’, C, ‘ za ’, J, ‘ iteracij’

C
Закінчення роботи програми



STOP
END


Для виконання роботи за даною програмою слід виконати такі дії.
Запустити програму і після появи на екрані дисплея повідомлення
Vvid A, B, EPS, Jmax
набрати вхідну інформацію (значення лівої та правої границь інтервалу, похибки та максимально допустимого значення кількості ітерацій) у довільному форматі, наприклад,
0 1.5 0.0001 30
та натиснуту клавішу “Enter”.
Програма автоматично введе вхідну інформацію, обчислить значення кореня, надрукує це значення та виконану кількість ітерацій:
Korin= 1.147476 za 14 iteracij
і закінчить роботу.
Значення кореня х та виконаної кількість ітерацій слід переписати з екрана дисплея.
Рекомендується програму знаходження кореня запустити декілька разів, змінюючи при цьому межі інтервалу, значення похибки та допустиме значення кількості циклів, проаналізувати отримані результати і зробити висновки.
Увага! У випадку помилки у програмі знайдене значення кореня може збігатися з однією із заданих границь інтервалу або виходити за його межі.
У випадку невірно заданих вхідних даних чи помилки у програмі можливе повідомлення
J > Jmax
Вхідні дані для знаходження кореня нелінійного скінченого рівняння методом половинного ділення наведені у табл. 6. Точність ( = 0,0001.
Таблиця 6
Дані для знаходження кореня нелінійного скінченого рівняння

вар.
Нелінійне скінчене рівняння
Інтервал

вар.
Нелінійне скінчене рівняння
Інтервал

1.

[2; 3]
32.

[1; 3]

2.

[8; 9]
33.

[1; 2]

3.

[0,5; 1]
34.

[3; 4]

4.

[0; 1]
35.

[-2; 0]

5.

[3; 3,2]
36.

[0,1; 1]

6.

[0; 1]
37.

[0; 1]

7.

[0; 0,2]
38.

[4; 5]

8.

[0,8; 1]
39.

[3; 4]

9.

[2,6; 3]
40.

[1; 2]

10.

[0,8; 1]
41.

[4; 5]

11.

[1; 3]
42.

[0; 1]

12.

[0; 1]
43.

[3; 5]

13.

[2; 3]
44.

[–1; 0]

14.

[0; 1]
45.

[0; 1]

15.

[2; 3]
46.

[1; 4]

16.

[0,2; 1]
47.

[2; 3]

17.

[1; 2]
48.

[2; 3]

18.

[2; 3]
49.

[0,8; 1]

19.

[0; 1]
50.

[2; 3]

20.

[1; 2]
51.

[–3; –2]

21.

[1; 2]
52.

[2; 3]

22.

[1,2; 2]
53.

[1; 2]

23.

[0,4; 1]
54.

[2; 3]

24.

[0,3; 1]
55.

[0; 1]

25.

[2; 3]
56.

[2; 3]

26.

[1; 3]
57.

[0; 1]

27.

[–1; 0]
58.

[1; 2]

28.

[0,1; 1]
59.

[0; 1]

29.

[1; 3]
60.

[0; 2]

30.

[0,2; 1]
61.

[3; 4]

31.

[0; 1]
62.

[0; 1]