Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КНИЖКА_Моделювання систем у GPSS World.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
7.15 Mб
Скачать
    1. Реалізація методу Ньютона для розв’язування нелінійних рівнянь за допомогою мови Plus

У випадку необхідності за допомогою мови Plus можна реалізовувати чисельні методи. Як приклад, розглянемо метод Ньютона для розв’язування нелінійних рівнянь.

Приклад. Знайти наближене значення кореня рівняння

х3 – 3х2 + 2х – 1 = 0

з початковим наближенням х0 = 2.

Кожне наступне наближене значення кореня нелінійного рівняння можна знайти за наступними формулами:

xn+1 = xn – ∆xn, ∆xn = f(xn) / f '(xn),

де f(xn), f '(xn) – значення функції та її похідної для значення аргументу xn.

Коренем нелінійного рівняння буде таке значення xn, для якого ∆xn < , де  – задана точність. Модель реалізації алгоритму задачі зображено на рис. 8.1.

Фактичні аргументи виклику процедури Metod_Njutona є простими. Однак кожен із цих аргументів може бути складним виразом, який обчислюється одночасно з викликом процедури. Результат обчислення кожного аргументу використовується замість аргументу, який заявлений у визначенні процедури. Кінцеве значення кожного аргументу визначається відповідно до його позиції.

Рис. 8.1. Модель методу Ньютона для розв’язування нелінійних рівнянь

Локальні змінні в Plus-процедурах автоматично не ініціалізуються. Тому вони визначаються до виконання дій з ними. Якщо у прикладі (рис. 8.1) не ініціалізувати, наприклад, локальну змінну e_ конкретним значенням, здійсниться зупинка через помилку “Operand B. Недопустиме значення. Елемент даних не був ініціалізованим”.

Результати моделювання наведені на рис. 8.2.

З отриманих результатів видно, що значення кореня нелінійного рівняння х3 – 3х2 + 2х – 1 = 0 дорівнює 2,324718. В цьому можна переконатися підставивши це значення у вихідне рівняння.

    1. Налагодження Plus-процедур

Для налагодження Plus-процедур потрібно застосовувати режим трасування. Для цього обирається меню EditSettings (Правка►Настройки) ►Reports (Звіти) ►Plus Trace (Трасування Plus) ►Оk. Необхідно зберегти модель. В режимі трасування кожен виклик Plus-процедури супроводжується записом у вікні Journal (Журнал). Повідомлення трасування показують глибину опрацювання і складають список обчислених аргументів процедури виклику.

Рис. 8.2. Результати розв’язання нелінійного рівняння

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

Нижче наведена модель, з чотирьма фіктивними процедурами Rezyltat1, Rezyltat2, Rezyltat3, Rezyltat4 (рис. 8.3) для попереднього прикладу.

Вихідна процедура Metod_Njutona викликається лише один раз, а фік­тив­ні процедури стільки разів, скільки буде зроблено кроків до виконання умови завершення моделювання. Фрагмент повідомлень трасування, які вида­ються в процесі виконання відкомпільованої програми наведені на рисунку 8.4.

Аналізуючи повідомлення трасування можна відслідкувати зміни чотирьох змінних на кожному кроці розв’язання задачі і за необхідності внести відповідні виправлення. Черговий крок розв’язання розпочинається значенням функції fx, що видається у ході трасування фіктивною процедурою Rezyltat1 і закінчується значенням шуканої величини х_, що видається процедурою Rezyltat4. У наведеному фрагменті показані три кроки розв’язання поставленої задачі.

Рис. 8.3. Модель методу Ньютона з фіктивними процедурами