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

Наприклад, помноживши ліву і праву частину рівняння на константу с, переставивши їх місцями і додавши до лівої і правої частини х, одержимо рівняння

звідки

Далі, задаємося нульовим наближенням кореня та знаходимо його перше наближення

і т.д. Ітераційний процес має вигляд

Щоб ітераційний процес був збіжним, на інтервалі повинна задовольнятися умова

виконання якої можна досягнути належним вибором константи с.
Схема алгоритму розв’язання нелінійного скінченого рівняння методом простої ітерації зображена на рис. 11. У цій схемі блоки з номерами 4, 5, 8 утворюють ітераційний цикл, кількість повторень якого при виконанні програми наперед невідома.
Схема алгоритму, зображена на рис. 12, досконаліша, бо містить лічильник кількості ітерацій та перевірку перевищення допустимої кількості ітерацій, що забезпечується блоками 4, 6, ..., 9. У випадку, коли у програмі допущена помилка, або константа с обчислена невірно, видається повідомлення про перевищення допустимого значення кількості ітерацій і виконання програми припиняється.
Рис. 11. Схема алгоритму розв’язання нелінійного скінченого рівняння методом простої ітерації
Приклад. Необхідно скласти програму визначення методом простої ітерації кореня рівняння

з точністю ( = 0,0001 на інтервалі від а=0 до b=1,5. (Тут рівняння, точність та інтервал пошуку кореня такі ж самі, як і у лабораторній роботі №3, тому, очевидно, і знайдене методом простої ітерації значення кореня повинно збігатися із значенням, отриманим методом половинного ділення.)
Вхідні дані необхідно ввести шляхом діалогу, а вихідні дані видати на екран монітора та записати до файла вихідної інформації. У випадку перевищення допустимого значення кількості ітерацій повідомлення про це також видати на екран монітора та записати у файл вихідної інформації.
Перетворимо задане рівняння:


Умова

задовольняється на інтервалі [0; 1,5], якщо прийняти с = 0,5. За нульове наближення кореня можна взяти будь-яке значення із заданого інтервалу, наприклад
Рис. 12. Схема алгоритму розв’язання нелінійного скінченого рівняння методом простої ітерації
із використанням лічильника кількості ітерацій
Один із можливих варіантів програми:
С
С
С
С
С
Лабораторна робота № 4
Розв’язання нелінійного скінченого рівняння методом простої ітерації
Виконав ст. гр. ЕМ–11 Вдалий Б.

C
Введення вхідних даних шляхом діалогу



1
2
WRITE (*, 1)
FORMAT (‘ X0=’, $)
READ(*,*) X0
WRITE (*, 2)
FORMAT (‘ C=’, $)
READ(*, *) C



3
4
WRITE (*, 3)
FORMAT (‘ EPS=’, $)
READ(*, *) EPS
WRITE (*, 4)
FORMAT (‘ Jmax=’, $)
READ(*, *) Jmax

C
Відкривання файла вихідної інформації



OPEN (1, FILE = ‘REZULTATY.DAT’, STATUS = ‘UNKNOWN’)

C
Задавання нульового наближення кореня



X = X0

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



J = 0

C
Початок циклу, обчислення нового значення кореня


5
XJ = C*(1. – X + SIN(X) – ALOG(1.+X)) + X

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



J = J+1

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



IF (J .GT. Jmax) GOTO 6

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



IF (ABS(XJ–X) .LT. EPS) GOTO 7

C
Нове наближення кореня



X = XJ

C
Повернення на початок циклу



GOTO 5

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


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

C
Закривання файлу вихідної інформації



CLOSE (1)

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



STOP

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


7
8
WRITE (*, *) ‘Korin= ’, XJ, ‘ za ’, J, ‘iteracij’
WRITE (1, 8) XJ, J
FORMAT (2X, ‘Korin= ’, E9.4, ‘ za ’, I2, ‘ iteracij’)

C
Закривання файла вихідної інформації



CLOSE (1)

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



STOP
END


Для виконання роботи за даною програмою слід виконати такі дії.
Запустити програму і після появи на екрані дисплея повідомлення
X0=
ввести нульове наближення кореня, тобто 1 у довільному форматі, та натиснуту клавішу “Enter”;
після появи на екрані дисплея повідомлення
С=
ввести значення константи с, тобто 0.5, та натиснуту клавішу “Enter”;
після появи на екрані дисплея повідомлення
EPS=
ввести значення похибки 0.0001 та натиснуту клавішу “Enter”;
після появи на екрані дисплея повідомлення
Jmax=
ввести допустиме значення кількості ітерацій, наприклад, 100, та натиснуту клавішу “Enter”.
Програма автоматично введе вхідну інформацію, обчислить значення кореня, надрукує це значення та виконану кількість ітерацій на екран монітора
Korin= 1.147396 za 11 iteracij
та у файл вихідної інформації REZULTATY.DAT:
Korin= 1.147 za 11 iteracij
і закінчить роботу.
Значення кореня х та виконаної кількість ітерацій слід переписати з екрана дисплея.
Увага! У даному випадку, обчислене значення кореня, видане на екран монітора, дещо відрізняється від знайденого у лабораторній роботі №3, однак знаходиться у межах заданої похибки. Це результат заокруглень при обчисленнях. Виведене до файла вихідної інформації значення кореня записане у фіксованому форматі.
Рекомендується програму знаходження кореня запустити декілька разів, змінюючи при цьому нульове наближення кореня, значення похибки та допустиме значення кількості циклів, проаналізувати отримані результати і зробити висновки.
У випадку невірно заданих вхідних даних чи помилки у програмі можливе повідомлення
J > Jmax
Вхідні дані для знаходження кореня нелінійного скінченого рівняння методом половинного ділення наведені у табл. 6 лабораторної роботи №3. Точність ( = 0,0001.