Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Simulation_Lab.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
3.5 Mб
Скачать

Реалізація числових методів у математичних пакетах

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

MathCAD

rkfixed – функція призначена для розв’язування звичайних диференціальних рівнянь та системи з n диференціальних рівнянь за допомогою формули Рунґе-Кутта четвертого порядку з фіксованим кроком і є базовою в пакеті. Виклик функції:

rkfixed(y, Xmin, Xmax, Npoints, D) , де

y – вектор початкових умов у точці Xmin розміром n ;

Xmin, Xmax – початкова і кінцева точки інтервалу інтегрування;

Npoints – бажана кількість точок розв’язку на інтервалі інтегрування, визначає 1+Npoints рядків результуючої матриці, яку повертає функція rkfixed ; для стійкого розв’язку потрібно подбати, щоби значення кроку інтегрування не перевищувало значення найменшої сталої часу;

D – функція-вектор, що містить перші похідні шуканої функції, складається з n рядків;

rkfixed повертає результуючу матрицю (для прикладу назвемо її S), в якій:

  1. перший стовпець S<0> містить значення аргументу в точках розв’яз­ку;

  2. наступні стовпці містять розв’язки за кожною змінною: наприклад, перший стовпець S<1> містить (1+Npoints)-елементний вектор роз­в’яз­ку першої змінної, S<2> – вектор роз­в’яз­ку другої змінної і т.д., відповідно, S<n> містить вектор роз­в’яз­ку n-ої змінної.

Rkadapt – функція для розв’язування нежорстких систем з розв’язком, який змінюється повільно (є досить універсальною, тому її можна використовувати у багатьох випадках), використовує алгоритм з автоматичним вибором кроку інтегрування на основі формули Рунґе-Кутта четвертого порядку, але результат подається у рівновіддалених точках (як у rkfixed); функція викликається аналогічно.

Bulstoer – реалізація методу Булірш-Штура (Bulirsch-Stoer) для розв’язування гладких функцій, для яких є дещо точнішою, ніж метод Рунґе-Кутта, що реалізований в rkfixed ; викликається так само, як і попередні функції.

Stiffb – функція для розв’язування системи жорстких диференціальних рівнянь, застосовує метод Булірш-Штура.

Stiffr – функція для розв’язування системи жорстких диференціальних рівнянь, застосовує метод Розенброка (Rosenbrock); обидві функції викликаються подібно:

Stiffb(y, Xmin, Xmax, Npoints, D, J)

Stiffr(y, Xmin, Xmax, Npoints, D, J) , де

J – функція, що повертає матрицю розміром n(n+1), в якій перший стовпець містить похідні, а наступні стовпці складають матрицю Якобі системи диференціальних рівнянь.

Використання функцій розв’язування системи диференціальних рівнянь пакету Math­CAD показано на при­к­ладі: задано систему ди­фе­рен­ці­аль­­них рівнянь, що описує пуск двигуна постійного струму зі сталим потоком збуд­жен­ня.

Для розв’язування цієї системи використовується поданий нижче документ MathCAD.

MathCAD

N : = 100 кількість точок розв’язку

tmin : = 0 tmax : = 1 межі (діапазон) інтегрування

y0 : = 0 y1 : = 0 початкові умови

Задаємо параметри двигуна:

Ta : = 0.05 Стала часу якірного кола

Ua : = 50 Напруга на якорі

C : = 2.5 Стала двигуна

Ra : = 0.1 Опір якірного кола

J : = 2 Момент інерції приводу

Ic : = 0 Статичний струм

задаємо функцію-вектор для обчислення похідних

Отримуємо розв’язок і виводимо на графік: S : = rkfixed(y, tmin , tmax , N , DiffEq)

( Для наочності масштаб швидкості збільшено у 10 разів )

У випадку наявності версії не нижче MathCAD 11 можливий варіант документа зі зрозумілішою формою запису системи диференціальних рівнянь із застосуванням конструкції GivenOdesolve. У цьому випадку тип числового методу ("розв'язувача") вибирається клацанням правої кнопки мишки на ключовому слові Odesolve.

MathCAD

h : = 0.005 Крок розв’язку

tmin : = 0 tmax : = 1 Межі (діапазон) інтегрування

Ia0 : = 0 0 : = 0 Початкові умови

Задаємо параметри двигуна:

Ta : = 0.05 Стала часу якірного кола

Ua : = 50 Напруга на якорі

C : = 2.5 Стала двигуна

Ra : = 0.1 Опір якірного кола

J : = 2 Момент інерції приводу

Ic : = 0 Статичний струм

Задаємо систему диференціальних рівнянь

Given

═ (Ia(t) – Ic)C

Ia(0) 0 (0) 0

Отримуємо розв’язок і виводимо на графік: t : = tmin , tmin + h .. tmax

( Для наочності масштаб швидкості збільшено у 10 разів )

MATLAB + Simulink

У пакеті Simulink середовища MATLAB реалізовано досить широкий вибір числових методів для розв'язування звичайних диференціальних рівнянь:

ode23 – реалізація однокрокової формули Богацкі-Шемпайна (Bogacki-Shampine) порядку 2(3) з автоматичним вибором кроку інтегрування. Дану функцію можна рекомендувати як стандартну для моделювання електроприводів, автори пакету MATLAB рекомендують її як ефективнішу за ode45 для невисокої точності та для слабожорстких систем.

ode45 – реалізація формули Дормана-Прінса порядку 5(4) з автоматичним вибором кроку інтегрування. Рекомендується авторами пакету як універсальний метод, який може застосовуватися у першій спробі під час розв’язування системи диференціальних рівнянь, особливо ефективний для високої точності (10-6 і вище).

ode113 – реалізує метод "прогноз-корекція" за формулами Адамса-Бешфорта-Малтона 1-13 порядків з автоматичним вибором порядку методу і кроку інтегрування і, напевно, є одним з найкращих засобів для розв’язування нежорстких систем диференціальних рівнянь, особливо для моделей з нелінійностями. Рекомендоване значення точності – не нижче 10-4. Дана функція особливо ефективна для складних моделей, що вимагають значного часу обчислень.

ode23s – реалізує модифікований метод Розенброка (Rosenbrock) другого порядку для жорстких систем диференціальних рівнянь. Рекомендується для невисокої точності. Може застосовуватися для ряду жорстких задач, для яких функція ode15s не є ефективною.

ode15s – універсальна функція, що реалізує два методи розв’язування жорстких систем диференціальних рівнянь з автоматичним вибором кроку розв’язування:

  1. на основі формул диференціювання назад (ФДН) порядку 1-5;

  2. на основі родини формул числового диференціювання, запропонованих Клопфенштайном (Klopfenstein) і Райхером (Reiher) порядку 1-5, дещо ефективніших за ФДН.

ode23t – функція базується на методі трапецій і призначена для систем зі середньою жорсткістю і ефективна для невисокої точності розв’язку.

ode23tb – реалізує метод TR-BDF2, що подібний до методу Рунґе-Кутта, в якому на першому кроці застосовується формула трапецій, а на другому – формула диференціювання назад другого порядку, ефективна для невисокої точності.

Для вибору числового методу в меню вікна моделі послідовно вибираються пункти Simulation Simulation Parameters ( або просто Ctrl + E ). Для більшості моделей, які побудовані з використанням блоків Simulink, найкращим вибором будуть функції ode23 і ode113. У випадку використання блоків з бібліотеки SimPowerSystems може бути доцільним (особливо, за наявності елементів силової напівпровідникової техніки – тиристорів і силових транзисторів) використання спеціальних методів для жорстких нелінійних систем ode23tb і ode15s. Попередній приклад простої моделі двигуна, виконаний в середовищі MathCAD, виглядає наочніше з використанням бібліотеки SimPowerSystems, як показано нижче.

Simulink + SimPowerSystems

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