Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
9
Добавлен:
20.02.2016
Размер:
57.86 Кб
Скачать

ПрограмА NELТU

Вирішення нелінійних та трансцендентних рівнянь або системи рівнянь

Зміст задачі такий. Існує деякий складний математичний вираз - рівняння загального типу Y= f(X), яке неможливо алгебраїчним способом вирішити відносно аргумента “Х” , тобто записати в оберненій формі X = f(Y), коли аргумент “х” та функція “у” міняються місцями. В той же час для подальшого використання потрібна саме така обернена форма, тобто потрібно підраховувати значення “х” при заданому значенні “y”. Така задача часто виникає в математичному (комп”ютерному) моделюванні як окремий частковий елемент складніших завдань

Первинна (вхідна) залежність Y= f(X) може бути задана у вигляді системи з декількох рівнянь.

Приклад. Розглянемо конкретний технологічний об’єкт: технологічний процес та аппарат-електролізер відомої конструкції. Для такого об’єкта можна записати в загальній формі математичну модель вольт-амперної характеристики (ВАХ), яка складається з ряду вже відомих зі спеціальних дисциплін рівнянь, наприклад

;

; ; ; . (1)

Фактично це вольт-амперна характеристика, задана в формі складної функціональної залежності U(I), яка складається з 5 співвідношень (формул). Підставивши вирази для поляризацій А, К , опору R та граничної густини струму iГР в перше рівняння, одержимо єдине, але складніше за формою і менш зручне для використання рівняння. Якщо підставити в нього значення всіх констант та аргумента I (струм), з нього легко підрахувати значення напруги U .

Завдання ж полягає в тому, щоб вирішити обернену задачу – визначити струм I при заданому значенні напруги U, що вже неможливо виконати алгебраїчним способом.

Один з найпростіших алгоритмів вирішення нелінійних рівнянь - алгоритм половинного ділення. Його зручно розглянути на графіку вольт-амперної характеристики U(I), показаному на рисунку 1.

Рисунок 1. Cхема роботи алгоритму половинного ділення при вирішенні нелінійного рівняння.

Рішення Іх = f (Uх) будемо шукати в інтервалі струмів від ІL=0 (початок графіка, нульовий струм) до максимального значення струму, близького до струму короткого замикання ІP . Ці значення в алгоритмі вважаємо початковими ( на першому крокові) лівою та правою межею області пошуку. Далі ці межі повинні наближатись одна до другої, до того моменту, коли відстань між ними досягне значення, меншого за допустиму помилку. Це і буде рішенням задачі. Процес поступового просування лівої та правої межі в алгоритмі організований так, що невідома точка рішення завжди залишається всередині інтервалу ІLІP.

Поділимо інтервал пошуку (ІL,… ІP ) на дві рівні частини, визначимо значення струму в середині інтервалу І1/2 = (ІP - ІL)/ 2 , і по ньому підрахуємо за системою рівнянь напругу U = U1/2 .

Далі порівнюємо між собою два значення напруги – розраховане в середній точці інтервалу U1/2 та задане UХ. З рисунка видно, що на першому крокові підраховане значення напруги більше заданого (U1/2 > U Х) , тому очевидно, що рішення - точка перетину графіка з лінією UХ , знаходиться в правій половині рисунка. Тоді ліву половину інтервалу, де рішення немає – відкидаємо. На графіку ця операція матиме такий вигляд: пересуваємо ліву межу ІL=0 в середню точку І1/2.

Якби рішення знаходилось в лівій частині початкового інтервалу пошуку – тоді в середню точку І1/2 треба було б пересунути праву межу ІP.

Саме таким способом і здійснюється поступове звуження інтервалу пошуку, при якому точка рішення завжди залишається в середині інтервалу.

Далі вказані операції повторюються. На кожному наступному крокові область пошуку зменшується вдвічі - в частках початкового інтервалу 1-0.5-0.25-0.13-0.07-0.04-0.02-0.01, тобто вже на 8-му крокові відносна помилка рішення менша від 1 %.

Запишемо тепер робочий фрагмент алгоритму на алгоритмічній мові ПАСКАЛЬ.

Program NELTU

Var IL,IP,I12,UX,U12: real; k: integer;

BEGIN

ІL:=0; ІP:=****; UХ:=*****;

for k:=1 to 10 do

begin

І12:= (ІL+ІP)/2;

U12 := { ======================= }

if U12 =< UX then ІP := І12;

if U12 > UX then IL := I12;

writeln (k:6, ‘ I12=’, I12:6:2, ‘ U12=’, U12:7:2);

end;

readln;

END

В цьому запису позначення змінних з індексами повністю відповідають попереднім позначенням в тексті. Символи **** означають конкретні числа, а фрагмент { ======= } означає групу арифметичних операторів, які у відповідності з системою рівнянь (1) підраховують значення U1/2 (позначення в програмі U12) в середній точці інтервала пошуку І1/2

На кожному кроці алгоритму, реалізованого в циклі (for k:=1 to 10 do) на 10 кроків, логічні оператори if U12 < UX та if U12 > UX пересувають або праву IP або ліву IL межу інтервала пошуку в середню точку І1/2 .

Соседние файлы в папке Материалы по электра