МСС ресурс | Freeware | Open source | Кафедра МСС | Факультет |
Пакет |
|
ПРО ПАКЕТ | ПОПЕРЕДНІЙ КЛАС | НАСТУПНИЙ КЛАС |
calc
|
+--dynamo
Якщо у класі model задані праві частини системи алгедраїчних рівнянь y=F(t), F - n-вимірна вектор-функція, y - n-вимірний вектор, то за допомогою даного класу можна здійснити чисельне моделювання динаміки моделі.
Передбачено можливість роботи із довільним типом даних (за замовчуванням із типом double), що дозволяє проводити обчислення з підвищенною точністю. У режимі відладки (DEBUG) здійснюється автоматичний контроль допустимості операцій.
У файлі mds.h
визначено наступні типи.
typedef double MDS_DEFAULT_TYPE;
typedef mds_exception_message MDS_DEFAULT_EXCEPTION;
typedef dynamo <MDS_DEFAULT_TYPE, MDS_DEFAULT_EXCEPTION> Dynamo;
Члени класу | |
T
|
step Параметр моделювання: крок методу. |
Конструктори |
dynamo <class T = MDS_DEFAULT_TYPE, class EXCEPTION
= MDS_DEFAULT_EXCEPTION> (const T& userStep)
Параметр: крок методу userStep . Типи: T - тип
обчислень, EXCEPTION - тип винятків. |
Функції-члени класу | |
virtual
valarray <T> |
|
Наслідкові функції-члени класу calc |
Calculate, CalcReturnValue |
Опис |
Даний клас розраховує динаміку моделі з кроком step. Запуск процесу обчислень здійснюється за допомогою сервісних функцій типу Calculate(const valarray<model*>& pModels, const cauchy_region& region, result_manager& resCalc, bool isEnlargedPhase = false) класу calc. Перший її параметр – покажчик (або valarray покажчиків) на розглядувану модель. Коли мова йшла про клас model, зазначалося, що цей клас проектувався, зокрема, для того, щоб компонувати з окремих моделей загальний комплекс, отже логічно припустити наявність можливості проводити моделювання для всіх моделей комплексу одночасно (через valarray<model*>). Початкові та кінцеві умови задаються у region класу cauchy_region. Проміжні результати (якщо вони потрібні) – у resCalc класу result_manager. Приблизно так:
Dynamo dyn(0.5); //будемо
моделювати з кроком 0.5
//запуск розрахунків динаміки моделі MyModel на області MyCauchyRegion із записом
результатів у MyResult
dyn.Calculate(MyModel, MyCauchyRegion, MyResult);
Тут MyModel може бути адресою однієї моделі, або ж масивом (точніше valarray'єм) адрес на декілька моделей, MyResult містить всі проміжні результати (тобто динаміку моделі), а кінцеві результати повертаються самою функцією Calculate(). Якщо проміжні результати не потрібні, то
v = dyn.Calculate(MyModel, MyCauchyRegion);
запише результат у v (типу valarray).
Зауваження:
1) якщо початкові умови порушують границі інтегрування (тобто алгоритм не зробить
жодної ітерації), то контейнер MyResult не поповниться,
а результат v не визначений;
2) знак кроку step не важливий, якщо у region умовою
виходу є фінальний час. Але якщо умовою виходу є деяка функція користувача,
то знак кроку step необхідно вказувати згідно напрямку руху у
досліджуваному процесі (додатній, якщо час зростає та від'ємний у протилежному
випадку).
Будь-ласка, надсилайте пропозиції, питання, зауваження: soft@unicyb.kiev.ua
Запрошуємо також до участі у самому проекті: надсилайте свої матеріали, які,
по-можливості, будуть виставлені на сайті (див. Для
авторів).
Кафедра Моделювання складних систем факультету кібернетики Київського
університету імені Тараса Шевченка
03127, Україна, Київ, просп. Глушкова 2, корп. 6, кафедра МСС тел.: (044) 259-05-31,
(044) 259-02-37, e-mail: garash@unicyb.kiev.ua
Всі права застережено.