ФЕДЕРАЛЬНОЕ
ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«МОРДОВСКИЙ
ГОСУДАРСТВЕННЫЙ
ПЕДАГОГИЧЕСКИЙ
ИНСТИТУТ ИМЕНИ М.Е. ЕВСЕВЬЕВА»
Физико-математический
факультет
Кафедра
информатики и вычислительной техники
РЕФЕРАТ
ВОЗМОЖНОСТИ СИСТЕМЫ АНАЛИТИК – С ДЛЯ РЕШЕНИЯ МАТЕМАТИЧЕСКИХ ЗАДАЧ
Автор работы
_________________________________________А.Ю. Семаева
Направление
подготовки 44.03.05 Педагогическое образование
Профиль
Информатика. Математика
Руководитель
работы_______________________________ Кормилицына Т. В.
Оценка__________________
Саранск
2020
1 Историческая справка
В 1967 году на выставке в Лондоне Советский Союз продемонстрировал
серийно выпускаемую ЭВМ, получившую название машины для инженерных расчётов
(сокращённо «МИР-1»), в которой было реализовано ступенчатое
микропрограммирование. Там же эта ЭВМ была куплена американским «голубым
гигантом» - фирмой IBM. Как выяснилось позже, американцы купили машину лишь для
того, чтобы доказать своим конкурентам, запатентовавшим в 1963 году принцип
ступенчатого микропрограммирования, что русские давно об этом принципе знали и
реализовали в серийно выпускаемой ЭВМ.
Разработчики ЭВМ «МИР-1» (Институт кибернетики АН СССР) получили
Государственную премию. Среди них: академик АН СССР В.М. Глушков (научный
руководитель проекта), Ю.В. Благовещенский, А.А. Летичевский, В.Д. Лосев, И.Н.
Молчанов, С.Б. Погребинский, А.А. Стогний.
В 1969 году в производство была запущена более совершенная ЭВМ
«МИР-2». За ней поледовала и «МИР-3».
Проектируя МИРы, разработчики ставили дерзкую задачу – сделать
машинный язык возможно более близким ко входному (математическому) языку. Такой
язык АНАЛИТИК был создан и поддержан оригинальной
аппаратно-микропрограммной системой, практически реализующей аппаратурную
трансляцию программ. По скорости выполнения аналитических преобразований им не
было равных в мире. «МИР-2», например, успешно соревновалась с универсальными
ЭВМ обычной архитектуры, превосходящими ее по быстродействию и ёмкости памяти в
сотни раз!
Реализованная в ЭВМ этой серии первая отечественная система
аналитических вычислений (САВ) получила признание мирового научного сообщества
и составила серьезную конкуренцию предшествующей ей программной реализации
символьных вычислений в системе компьютерной алгебры (СКА) REDUCE, созданной в
начале 60-х годов А.К. Херном.
Впоследствии идея АНАЛИТИКА была возрождена в Maple (как признают
авторы разработки), отдельные компоненты которого в качестве составной части
входят в такие известные пакеты, как Matlab и MathCAD.
Рост уровня входных языков – общая тенденция в программировании.
Основная цель – сократить время на разработку программ и передать формальные,
рутинные операции по их переводу на машинный язык и распределению памяти самой
ЭВМ.
В условиях современной России, не имеющей отечественной системы
аналитических вычислений, факт многообразия существующих зарубежных систем
компьютерной алгебры является слабым утешением. В первую очередь потому, что
программная реализация (с их использованием) алгоритмов, например,
аналитической теории автоматического управления зачастую затруднительна, а в
ряде случаев и невозможна.
Отдавая отчет в том, что дальнейшее отставание в этой области не
способствует паритету и безопасности России (в оборонном и технологическом
плане), в Саратовском государственном техническом университете (СГТУ) была
предпринята попытка возрождения отечественной школы САВ. Проект получил
условное название «АНАЛИТИК-С».
Работа над проектом велась выпускниками специальности «Управление
и информатика в технических системах» Саратовского государственного
технического университета на протяжении многих лет (начиная с 1991 года) и,
пройдя этап программной реализации на Паскале, вышла на программную реализацию
в среде ИНТЕРНЕТ на языке PHP (сначала 2-ой версии, а сейчас 4-ой). Развитие и
сопровождение САВ «АНАЛИТИК-С» осуществлялось, в основном, силами студентов в
день научно-производственной работы (8 и 9 семестры) и в период дипломного
проектирования.
В связи с переходом научного руководителя проекта в Саратовский
государственный аграрный университет (СГАУ) имени Н.И. Вавилова, работа над
проектом продолжается силами аспирантов СГТУ и аспирантов и студентов СГАУ
имени Н.И. Вавилова.
2 Краткая характеристика среды
WEB-сервис среды аналитических вычислений «АНАЛИТИК-С» (WEB 2.0)
представляет собой среду программирования вычислений как с числами (команда
«выполнить»), так и с символами (команда «пусть»), базирующуюся на идеях языка
АНАЛИТИК украинской школы символьных вычислений. Предметная область среды
очерчена кругом научных интересов руководителя проекта, отражённых в его
монографиях и учебниках . Среда размещена на научно-образовательном портале по
адресу http://www.tki-analitik.ru.
Среда программирования численных и аналитических вычислений
«АНАЛИТИК-С» позволяет программировать численные и аналитические вычисления с
данными, заданными в числовой или символьной форме, с использованием операций
сложения, вычитания, умножения, деления, возведения в степень, извлечения корня
заданной степени, дифференцирования и интегрирования. Ядро среды аналитических
вычислений «АНАЛИТИК-С» содержит программно реализованные гиперболические
функции, комбинаторные функции, константы и системные переменные, многозначные
функции, обратные тригонометрические функции, операции над матрицами, операции
над многочленами, операции над числами, тригонометрические функции, а также
операторы цикла и условные операторы. Указанная среда снабжена следующими
пакетами прикладных программ: «Абстрактная математическая модель
информационно-управляющих систем», «Линейная алгебра», «Анализ», «Синтез»,
«Распознавание образов алгебраических формул» и т.д.
Среда реализована на языке сценариев PHP 4.0 под управлением
Apache. Свободный доступ к среде осуществляется с помощью любого из известных
браузеров (в рамках лицензии Apache 2.0). Функционально среда имеет командное и
графическое окна, а также окно вывода результатов. Запрограммированный
пользователем вычислительный фрагмент (скрипт) может быть сохранён на
компьютере пользователя с возможностью последующего запуска в очередном сеансе
среды аналитических вычислений «АНАЛИТИК-С», для чего сохранённый скрипт должен
быть скопирован в командное окно. Среда является открытой.
3 Алфавит языка АНАЛИТИК-С
Алфавит языка включает:
1.Прописные и строчные буквы кириллицы и латинского алфавита.
2.Арабские цифры от 0 до 9;
3.Специальные знаки:
+ - / * = . ; [ ] ( ) { } ^
Среди них знаки операций:
- операция присваивания «=»,
- сложение «+»;
- вычитание «-»;
- умножение «*»;
- деление «/»;
- возведение в степень «^»;
- извлечение корня степени r «»;
- взятие производной порядка r «^(r)»;
- взятие r-кратного интеграла «^{r}»;
- взятие наибольшего целого слева на числовой оси от
иррационального числа «[…]».
и разделители (скобки: круглые, квадратные, фигурные; точка;
запятая; точка с запятой; пробелы).
Из символов алфавита формируются лексемы (базовые конструкции)
языка:
1.Идентификаторы.
2.Зарезервированные слова, которые не могут использоваться в
качестве идентификаторов
3.Команды.
4.Операторы, из которых составляются специализированные библиотеки
прикладных программ (TOOLBOX’ы).
4 Идентификаторы
Идентификаторы – это имена переменных, программ, констант.
Идентификаторы могут иметь произвольную длину. Идентификатор всегда начинается
с буквы, за которой могут следовать другие буквы, в том числе повторяющиеся, (с
учётом регистра) и цифры.
Пробелы и зарезервированные слова не могут использоваться в
качестве идентификаторов.
Длина идентификатора не ограничена.
Зарезервированные слова, которые не могут использоваться в
качестве идентификаторов приведены в таблицах 1 – 7.
Таблица 1
Гиперболические функции
|
ch(x)
|
Гиперболический косинус
|
cth(x)
|
Гиперболический котангенс
|
sh(x)
|
Гиперболический синус
|
th(x)
|
Гиперболический тангенс
|
Комбинаторика:
plac(n,m) – число размещений из n по m, n>m;
comb(n,m) – число сочетаний из n по m, n>m;
fact(n) – факториал – число перестановок из n элементов
(n –любое положительное число).
Константы и системные переменные:
Avost – значение машинной бесконечности (прерывание);
J – мнимая единица;
Realmin – наименьшее число с плавающей точкой (2-1022);
Realmax – наибольшее число с плавающей точкой (21023);
Ans – переменная, хранящая результат последней операции и обычно
вызывающая его отображение на экране дисплея;
Eps – погрешность операций над числами с плавающей точкой (2-52);
E – системная константа е = 2, 7182;
NaN – указание на нечисловой характер данных;
Pi – число = 3.1415926.
Многозначные функции:
sgn(n) – сигнум-функция (возвращает –1, если аргумент < 0; 1,
если аргумент > 0; 0, если аргумент = 0) или символьное выражение.
Обратные тригонометрические функции:
acs(x) – арккосинус;
asn(x) – арксинус;
actn(x) – арккотангенс;
atn(x) – арктангенс.
Операции над матрицами:
invert(А) – вычисление обратной матрицы, где А –
исходная матрица;
sled(A) – вычисление следа матрицы;
eig – вычисление собственных чисел матрицы;
rank(A) – вычисление ранга матрицы (индекса управляемости матрицы
Крылова);
determ(А) – детерминант матрицы А;
poly – нахождение коэффициентов характеристического многочлена
квадратной матрицы общего вида;
kryl(А) – преобразование к матрице Крылова-Люенбергера, где А –
исходная матрица;
frob(А) - преобразование к матрице Фробениуса, где А –
исходная матрица;
hess(А) – преобразование к матрице Хессенберга, где А –
исходная матрица;
silvestr – формирование и вычисление определителей Сильвестра;
vronsk – формирование и вычисление определителя Вроньского;
ones(n,m) – формирование единичной матрицы (вектора)
размерами n´m;
zeros(n,m) – формирование нулевой матрицы (вектора)
размерами n´m;
diag(n,m,k…) – формирование диагональной матрицы с элементами
n,m,k…на главной диагонали;
cdiag – формирование скалярной матрицы;
shurkohn – формирование матрица Шура-Кона;
jakobi – формирование матрицы Якоби;
ctrb –формирование матрицы управляемости (матрицы Крылова);
obsv – формирование матрицы наблюдаемости (транспонированной
матрицы Крылова);
form(P) – формирование матрицы P=(A+En)(A-En)-1,
где А – исходная матрица;
formshur(P) – формирование матрицы P=(AT-En)W(A-En),
где А – исходная матрица, W – матрица Шура-Кона;
gurviz – формирование матрицы Гурвица;
oprgur – формирование и вычисление определителей Гурвица;
simm – формирование симметрической матрицы 0,5(A+AT);
cossimm – формирование кососимметрической матрицы 0,5(A-AT);
andreevgram – формирование матрицы Андреева-Грама;
vander – формирование матрицы Ван-дер-Монда;
givens – формирование матрицы вращения Гивенса;
podobie – формирование матрицы подобия;
kinemat – формирование матрицы кинематического подобия;
sqmatr – формирование квадратного корня из матрицы;
hauss – формирование матрицы отражения Хаусхолдера;
funk – формирование функциональной матрицы;
trans(А) – формирование транспонированной матрицы;
vander(А) – формирование матрицы Вандермонда, где А – заданная
матрица-строка;
hankel(А) – формирование ганкелевой матрицы, где А – заданная
матрица-строка;
toeplitz(А) – формирование теплицевой матрицы, где А – заданная
матрица-строка;
norm(A) – функция вычисляет нормы матрицы (вектора). Если задать
norm(A), то результатом будет наибольшая сингулярная величина матрицы; если задать
norm(A,'1'), то будет вычислена первая норма; если norm(A,'2'), то – вторая;
если norm(A,'inf'), то – норма по бесконечности; если norm(A,'-inf'), то –
норма по минус бесконечности; если norm(A,'g'), то – гильбертова норма;
если norm(A,'e'), то – евклидова норма.
Операции над многочленами:
Conform – формирование многочлена, полученного из исходного в
результате конформного преобразования z = (s+1)/(s –1);
Ermit – формирование полиномов Эрмита-Билера из исходного полинома;
Silvestr – формирование непрерывной дроби из положительной пары
полиномов (алгоритм Стильтьеса анализа устойчивости).
Операции над функциями:
Diff – дифференцирование функций;
Integr – интегрирование функций;
Macloren – разложение в ряд Маклорена;
Teilor – разложение в ряд Тейлора.
Операции над числами:
sqr(n) – арифметический корень, где n – любое
положительное число;
log(n) – логарифм десятичный, где n – любое
положительное число;
lgn(n) – логарифм натуральный, где n – любое
положительное число;
rand(n,m) – матрица случайных чисел размерами n´m;
abs(n) – модуль, где n – любое число;
ent(n) – операция взятия целой части действительного числа;
Показательные и логарифмические функции:
log(),ln() – логарифмическая функция;
^ – показательная функция;
exp(n) –экспоненциальная функция, где n – любое число.
Тригонометрические функции:
cos(x) – косинус;
ctan(x) – котангенс;
sin(x) – синус;
tan(x) – тангенс.
5 Синтаксис командного
окна
Команды можно давать как на русском, так и на английском языках
(англ. вариант приведен в круглых скобках):
1)пусть (let) – команда вычислений с символьными
данными.
Варианты задания команды: пусть {A=B} или let {A=B},
разделённые пробелом, где А – символьная переменная, В – выражение в символьном
виде, вычисленное в командном окне до подачи этой команды (расположенное в
командном окне выше данной команды), «=» - операция присваивания;
2)вычислить (calculate) – команда вычислений с
численными данными;
3)точность (precision) – команда количества значащих
цифр, выводимых на экран после десятичной точки. Варьируется от 3-х (по
умолчанию) до 12;
4)вывести (print) – команда вывода сообщения или
результата вычислений на экран.
Варианты задания команды: вывести {А} или print{A};
5)«/» (rem) – обозначение комментария,
Обозначения разделителей,
используемых в командном окне
«.» –
фиксированная точка в представлении числа.
«,» – запятая,
используется для разделения параметров функции.
«;» – точка с
запятой, применяется внутри квадратных скобок для отделения строк матрицы.
Также применяется в операторах: plot(график), integr, modalcontrol, krylov и
т.д. – для разделения переменных и выражений.
« » – пробел,
используется для разделения элементов строки матрицы.
«:» – двоеточие –
формирователь упорядоченных числовых последовательностей, которому ставится в
соответствие оператор
«Начальное значение: шаг: конечное значение»
(если шаг не задан, то по умолчанию он принимается равным
единице).
В командном окне допустимо использование операторов цикла.
Синтаксис неявного оператора цикла имеет вид:
цикл (cycle)
тело цикла (a body of cycle)
– пусть {}
повторить (repeat) {}
(в фигурных скобках задается число повторений).
Например:
пусть {А=1}
цикл
пусть {А=А+1}
повторить {2}
вывести {A}
Если число повторений неизвестно, рекомендуется в тело цикла
помещать условный оператор, описание которого приводится ниже.
В командном окне допустимо использование операторов условного
перехода если (if)…иначе (else)…конец (end).
Синтаксис и выполняемые действия этих операторов аналогичны
соответствующим операторам других распространённых языков программирования.
Синтаксис операторов выглядит следующим образом:
если (if) {условие}
выполняемое действие
конец_если (end_if)
иначе (else)
выполняемое действие
конец_иначе (end_else)
Известны полная и неполная структуры этого оператора:
1)
if (логическое условие) then (оператор(Ы) присваивания) else
(оператор(Ы) присваивания);
2) if (логическое условие) then (оператор(Ы)
присваивания).
Например:
если {a>b}
вывести {a}
конец_если
иначе
вывести {b}
конец_иначе
6 Синтаксис графического окна
Каждая графическая команда открывает графическое окно со своим
интерфейсом.
Команда «график (plot)» – построение графика
функции одной переменной.
Варианты задания команды: график {X;Y;A;V;W}
или plot {X;Y;A;V;W}, где X – обозначение оси абсцисс; Y –
обозначение оси ординат; A – обозначение независимой переменной; [V, W] –
диапазон изменения независимой переменной.
7 Специализированные пакеты
прикладных программ
Абстрактная математическая модель иус (символьные операции для
переходов от описания в форме «вход-выход» к описанию в форме Коши и обратно).
Таблица 2
№
п/п
|
Идентификатор
|
Реализуемые функции
|
1
|
кrylov
|
Переход от формы «вход-выход» с производными от управлений к
неканонической форме Крылова-Люенбергера.
|
2
|
io2frob
|
Переход от формы «вход-выход» с производными от управлений к
неканонической форме Фробениуса.
|
3
|
nkryl2kryl
|
Переход от неканонической формы Крылова-Люенбергера к
канонической форме Крылова-Люенбергера.
|
4
|
nfrob2kryl
|
Переход от неканонической формы Фробениуса к канонической форме
Крылова-Люенбергера.
|
5
|
kryl2frob
|
Переход от канонической формы Крылова-Люенбергера к канонической
форме Фробениуса
|
6
|
frob2io
|
Переход от канонической формы Фробениуса к форме «вход-выход»
без производных от управлений.
|
7
|
kryl2io
|
Переход от канонической формы Крылова-Люенбергера к форме
«вход-выход» без производных от управлений.
|
Линейная алгебра.
Таблица 3
№
п/п
|
Идентификатор
|
Реализуемые функции
|
Программная реализация
|
1
|
poly
|
Нахождение коэффициентов характеристического многочлена
квадратной матрицы Данилевского.
|
poly {C}, где С –
заданная квадратная матрица чисел. Возвращает коэффициенты
характеристического полинома матрицы С.
|
2
|
eig
|
Нахождение собственных чисел квадратной матрицы,
приведенной к форме Хессенберга.
|
eig {A}, где А –
заданная квадратная матрица чисел. Возвращает собственные числа А.
|
Анализ.
Таблица 4
№
п/п
|
Идентификатор
|
Реализуемые функции
|
1
|
polin
|
Вычисление корней полинома.
|
2
|
lagrsilv
|
Нахождение коэффициентов
интерполяционного полинома Лагранжа-Сильвестра.
|
3
|
triusolve
|
Интегрирование
нестационарных верхнетреугольных систем в аналитическом виде.
|
4
|
lapposolve
|
Интегрирование нестационарных линейных систем в случае Лаппо-Данилевского.
|
5
|
kaushy
|
Тождество Коши.
|
6
|
control
|
Анализ управляемости в численном и символьном вид.
|
7
|
decompose
|
Алгоритм декомпозиции на полностью управляемую и полностью
неуправляемую подсистемы в численном и символьном виде.
|
8
|
grub
|
Анализ грубости свойства асимптотической устойчивости гурвицева
полинома
|
9
|
leadanalysis
|
Анализ приводимости по А.М. Ляпунову в символьном виде.
|
10
|
matrlyapun
|
Формирование матричного тождества А.М. Ляпунова.
|
11
|
stable
|
Анализ устойчивости при постоянно действующих возмущениях в
численном виде.
|
12
|
structgrub
|
Анализ структурной грубости.
|
13
|
c2d
|
Переход от непрерывной модели к дискретной.
|
14
|
curvbuild
|
Построение кривой накопления отклонений для стационарных
линейных систем.
|
Синтез.
Таблица 5
№
п/п
|
Идентификатор
|
Реализуемые функции
|
1
|
мodalcontrol
|
Задача модального управления
|
2
|
leadsynt
|
Синтез приводимых систем
|
3
|
btransform
|
Метод билинейных преобразований конструирования решений
матричного уравнения А.М. Ляпунова в задаче А.А. Красовского
|
4
|
finitecontrol1
|
Решение задачи финитного управления в непрерывном случае
(перевод в начало координат)
|
5
|
finitecontrol2
|
Решение задачи финитного управления в непрерывном случае
(перевод в заданное конечное состояние)
|
6
|
dfinitecontrol1
|
Решение задачи финитного управления в дискретном случае:
алгоритм программного управления
|
7
|
dfinitecontrol2
|
Решение задачи финитного управления в дискретном случае:
алгоритм управления по принципу обратной связи
|
8
|
riccati
|
Алгоритм Бьюси-Джозефа решения уравнения Риккати
|
Распознавание образов математических формул.
№
п/п
|
Идентификатор
|
Реализуемые функции
|
Программная реализация
|
1
|
viet
|
Распознавание образов алгебраических формул в символьно заданном
выражении
|
viet {А}, где А –
символьное выражение, которое необходимо упростить (если это возможно).
|
Техническая реализация законов управления. На аппаратных платформах микросистемной техники.
Таблица 7
№
п/п
|
Идентификатор
|
Реализуемые функции
|
Программная реализация
|
1
|
anadigm
|
Техническая
реализация символьно заданного закона управления на аппаратной платформе
программируемых аналоговых интегральных схем (ПАИС) производства
компании Anadigm
|
anadigm (M), где M- маска с выдавленными из неё алгебраическими
формулами, полученная в результате работы программы viet
|
В наше время язык существует как система компьютерной алгебры
(версии 1993, 2000, 2007 и 2010 годов) и разрабатывается Институтом проблем
математических машин и систем НАН Украины и Полтавским национальным техническим
университетом им. Ю.Кондратюка.
Список использованных источников:
1. Грипченко, Г. А. Энциклопедия кибернетики / Г. А. Грипченко. СПб.:
БХВ-Петербург, 1974. – 608 c.
2. Зверев, Г. Н. Теоретическая информатика и её основания :
монография / Г. Н. Зверев. – Москва : Физматлит, 2008. – Т. 2. – 571 с.
3. Осипов, Л. А. Язык Аналитик и его сравнение с языками Алгол и
Фортран / Л. А. Осипов. – М. : «Наука», 1982. – 304 с.
4. Осипов, Л. А. Языки программирования: Алмир-Аналитик / Новое в жизни,
науке, технике. Сер. «Вычислительная техника и её применение», № 10/89.
5. Соколов, А. В. Методы оптимальных решений : учебное пособие : в 2
т / А. В. Соколов, В. В. Токарев. – 3-е изд., испр. и доп. – Москва :
Физматлит, 2012. – Т. 1. Общие положения. Математическое программирование. –
562 с.
6. Ученые записки Орловского государственного университета : журнал /
гл. науч. ред. Ф. С. Авдеев ; учред. ФГБОУ ВПО «Орловский государственный
университет» ; Министерство образования и науки Российской Федерации. – Орел :
Орловский государственный университет, 2016. – № 1(70). – 266 с.
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.