Мова специфікації обчислювальних задач. Обчислювальна модель в TKS
Обчислювальна модель в TKS є сукупністю об’єктів і відношень між ними, вона описується мовою специфікації обчислювальних задач (МСО3). Кожний об’єкт ОМ повинен мати унікальне ім’я довжиною близько 200 символів, яке не повинно починатися з цифри. Малі і великі букви в імені загалом різняться, але для системних імен це обмеження не діє (вирази SIN та sin позначають одне і те саме). Тип змінної визначається виглядом її значення під час ініціалізації, характером використання змінної або зазначенням атрибутів у панелі об’яви змінних. Можна використовувати також структуровані типи даних – списки, що вже обговорювалися. Списки результатів розрахунку можна пов’язувати зі складнішими структурами – таблицями.
Числа зображуються в TKS в стандартній чи експоненційній формі в діапазоні від 1Е-307 до 1Е308 за абсолютною величиною і можуть мати до 16 значущих цифр. Приклади запису чисел:1.09092,18437560,6.672Е-11.
Арифметичні вирази будуються з імен змінних, звернень до функцій і списків, числових констант, круглих дужок за допомогою звичайних знаків арифметичних операцій. Зведення до ступеня позначається ^.До системи входить стандартний набір елементарних функцій. Число П можна отримати викликом Рі().Логічні вирази записуються з використанням знаків операцій порівняння, імен змінних, констант, викликів булевих функцій і набувають значення 1(істина) або 0 (хибність). Нерівність записується як <>.В системі TKS реалізовані функції not(X), eqv(X,Y), and(<список ЛВ>), or(<список ЛВ>), imply(X,Y)-імплікація. Оператори визначають послідовність обчислень і використовуються в середині процедур.
У лівій частині оператора присвоювання може використовуватися як проста змінна, так і елемент списку`X[i][ј]: =”Alpha”.Припускається знак << = >> замість <<:=>>.
Умовні оператори записуються стандартно за допомогою ключових слів if, then, else. У зв’язку з проблемою запису умовних операторів в TKS конструкції or та and є функціями логічних операцій. Оператори goto забезпечують перехід за символічними мітками. Оператор виходу з процедури записується як return.
Оператор циклу має вигляд:
for < ім’я_змінної_циклу > : = <вираз 1>
to <вираз 2> [ step < вираз 3 >]
<послідовність операторів циклу>
next[<ім’я_змінної_циклу>]
За відсутності step крок вважається одиничним.
В середині тіла циклу можна використовувати вкладені цикли. Тіла вкладених циклів можуть обмежуватися операторами продовження типу фортранівських:
Continue [<ім’я_змінної_циклу >]
Під час використання цього оператора управління передається оператору next, заданого в Continue охоплюючого циклу, а за відсутності посилання – на next поточного циклу. Аналогічно заданий оператор виходу exit передає управління оператору, розташованому за next охоплюваного або поточного циклу. Ці конструкції зручніше запропонованих у новітніх версіях Фортрану (де слід додатково полічити цикли і посилатися на ці мітки).
Рівняння. Арифметичні рівняння мають вигляд . Вони зберігаються в поточній обчислювальній моделі як однооператорні відношення. TKS дає змогу використати різні бібліотечні функції. Автоматичне розв’язання обернених задач знаходження аргументів забезпечується тільки для тих функцій, які мають обернені.
Приклад опису рівнянь:
1)
2) ,
3) ,
4) ,
5) .
Програмні відношення. Такими називаються відношення, які задаються за допомогою бібліотечних чи користувальних функцій, які зображуються в TKS у вигляді панелей Function Subsheet.Програмні відношення описуються звертаннями до функцій, оператор Call. У списку аргументів вхідні параметри слід відокремлювати від вихідних крапкою з комою. В TKS підтримуються функції-списки, які задають різні типи співвідношень між елементами двох списків, та процедури - функції, які містять описи алгоритмів розв’язку підзадач. Крім того, функції моделі задають описи обчислювальних моделей у форматі об’єктів та відношень між ними. При звертанні до такої функції в TKS виникає підзадача на множині фактичних параметрів функції. У тілі функції можуть бути звертання до інших обчислювальних моделей. Умовні речення обчислювальності задають умови застосування тих чи інших відношень і записуються як і в звичайних мовах програмування.
Списки. Список представляє собою послідовність значень, числових чи символічних, які називаються елементами списку. Фактично списки в TKS відповідають об’єктам типу масивів. Проте надалі ми збережемо термінологію розробників. Для звертання до елементу списку після його імені в квадратних дужках вказують індексний вираз, імені повинен передувати апостроф.
Списки в TKS використовуються для збереження вхідних даних задачі і отримання значення вихідних даних задачі в спусковому режимі вирішувача, а також для аргументів та результатів у спускових функціях. Списки застосовуються для організації зв’язку за даними між TKS та іншими системами через файли. Змінна задачі матиме тип „список”(list), якщо в об’явленні змінної панель Variable Sheet; у полі status вказати тип L. Ім’я нового списку автоматично заноситься в панель List Sheet, якщо:
1) для змінної на панелях Variable Sheet чи Variable Subsheet в полі St вказується тип L;
2) зазначається ім’я списку в полі Associated List на панелі Variable Subsheet;
3) зазначається ім’я списку в полі domain чи range на панелі List Function Subsheet;
4) зазначається ім’я списку на X-Axis,Y-Axis на панелі Plot Subsheet;
5) задано ім’я списку в полі List на панелі Table Subsheet.
Багатовимірний список зображується як список списків. Кожний індекс вміщується в окрему пару квадратних дужок.
Пари чисел та їх використання. Вирази типу (а, в) використовується для зображення прямокутних декартових чи полярних координат точки на площині, а також комплексних чисел у декартовому (rectangular) зображенні.
Приклади:
Опис еліпсу в параметричній формі має вигляд:
,
де а, b –довжини півосей еліпсу, t – кут в градусах.
У TKS є бібліотечні функції для перетворення полярних і декартових координат.
Точку Z на комплексній площині можна задати або в декартових координатах (x, y),або в полярних (r, theta).Комплексне число Z в полярній системі координат зображується у вигляді:
Змішувати комплексні числа з іншими в TKS не можна. Так, потроєння комплексної змінної записується у вигляді . Комплексні пари в TKS можна використовувати як аргументи тільки для функцій POWER((x,y),n) зведення до ступеня – дійсної величини з обчисленням уявної IM ((c,d)) та дійсної RE((a,b)) частин комплексної пари.
Опис функцій користувача. Розв’язання складної задачі потребує зведення її до сукупності підзадач з відомим розв’язком кожної із них. У TKS підзадачі описуються різними типами функцій. Якщо є алгоритм розв’язання, то його можна описати як процедуру-функцію. Декларативно поданий розв’язок як множина рівнянь та програмних відношень можна оформити у вигляді функцій –моделей –ВМ -функцій. Розв’язок, пов’язаний із задачею пошуку даних з потрібними властивостями, зображується табличними чи ітеративними функціями. Виклик підзадач в TKS здійснюється звертанням до функції через апарат формальних і фактичних параметрів.
Процедури-функції. Кожну процедуру-функцію (далі – процедуру) слід оголосити в панелі Function Sheet і зазначити в панелі Procedure Function Subsheet. Опис процедури вміщує виконувані оператори і оголошення:
6) параметрів-передаються безпосередньо з панелі Variables Sheet і описуються в полі Parameter Variables;
7) вхідних і вихідних змінних і передаються через список виклику процедури.
У процедурах цього типу можливе посилання на інші процедури і функції, можна використати також і рекурсію.
Змінні, оголошенні як вхідні (Input), мають бути відомі до виклику процедури. Проте значення вхідних змінних можна змінювати всередині процедури, в ВМ – функціях це призведе до помилки обчислень. Ці зміни не поширюються на відповідні фактичні змінні виклику процедури. Винятком є змінні типу списку: значення елементів списку можуть бути змінені в процедурі також тоді, коли ім’я списку передається як Input-змінна. Аналогічно в тілі процедури можна змінювати значення параметрів, а змінну – тільки в межах тіла процедури.
„Модельні” функції. У модельних (ВМ)- функціях можна використовувати вхідні та проміжні змінні, які є локальними і недоступними для обробки поза тілом процедур і функцій. Вхідні змінні можна передавати через виклик процедури чи безпосередньо з Variables Sheet,минаючи список виклику. Тип підстановки задається в описах процедур та ВМ- функцій. Кожну функцію, яка містить опис ВМ (тип функції Rule), треба оголосити в панелі Function Sheet і описати в панелі Rule Function Subsheet. Опис ВМ-функції містить у собі сукупність правил (умовних та безумовних речень обчислювальності) і оголошення її вхідних змінних:
1) параметрів ВМ-функції в полі Parameter Variable (значення змінних цього поля присвоюється безпосередньо з панелі Variable Sheet);
2) аргументів у полі Argument Variables( значення змінних передаються через список виклику ВМ-функції);
3) результатів знаходження значень функції у полі Result Variables (значення повертаються через список викликів).
Для ВМ – функцій вхідними вважають змінні, значення яких відомі до звертання до функції, а вихідними – потенційно обчислюванні змінні. У процесі виклику ВМ-функції список аргументів і результатів ВМ-функції має бути специфікований цілковито, і в тому разі, якщо завчасно відомо, що не всі вихідні дані означено і буде отримано не всі результати.
У ВМ-функціях спроба означити параметр змінну значенням, відмінним від заданого в панелі Variable Sheet, призводить до помилки, яка фіксується також тоді, коли обчислені за допомогою кількох співвідношень значення якої-небудь змінної не узгоджуються між собою. В тілі ВМ-функцій чи процедур рекурсивні звернення заборонені. Вирішував задач обробляє змінні і правила з панелі опису обчислювальної задачі Rule Sheet.
Невідомі змінні можуть міститися в лівих і правих частинах правил. Під час виклику ВМ-функції в обчисленнях беруть участь лише ті правила, для яких значення вхідних змінних задаються через множини параметрів, аргументів і результатів функції.
Функції-списки. Вони дають змогу задавати в панелі List Function Subsheet двомісні відношення між списками області визначення (domain) та області значень (range). Допускається такі типи відповідностей:
1) таблиці (тип функції table ,відповідність 1-1);
2) інтервали (тип функції step ,відповідність 1-);
3) лінійна інтерполяція(тип функції linear);
4) кубічна інтерполяція(тип функції cubic).
Для функцій-списків обов’язковою є еквівалентність типів формальних і фактичних параметрів. Список, який задає значення домену функції-списку, виявляється з першого елементу. Як результат видається перше рішення, що личить, всі функції-списки є одномісними і їх можна як викликати з використанням CALL, так і безпосередньо використовувати у виразах. Основні типи функцій-списків – це табличні та інтервальні функції, а також лінійна і кубічна інтерполяції.
Табличні функції – тип функції table в полі Mapping. Вони описують двостовпчикові таблиці. Елементами першого стовпчика таблиці (Domain) є значення елементів списку вказаного в полі Domain List, а другого (Range) – пов’язані із списком, вказаним у полі Range List. Елементи можуть набувати числових чи символічних значень.
Інтервальні функції потребують, щоб значення аргументу належало хоча б одному з інтервалів, утворюваних послідовними елементами із списку-домену.
Результатом обчислення значення функції буде значення елементу на лівій границі інтервалу.
Лінійна та кубічна інтерполяції. Функції даного типу визначають значення, отримані у вигляді лінійної(кубічної) інтерполяції між елементами списку-домену.
Дата добавления: 2015-04-01; просмотров: 1085;