Система компьютерной алгебры
Система компьютерной алгебры (СКА, англ. computer algebra system, CAS) — это прикладная программа для символьных вычислений, то есть выполнения преобразований и работы с математическими выражениями в аналитической (символьной) форме.
Символьные вычисления
[править | править код]Системы компьютерной алгебры различаются по возможностям, но обычно поддерживают следующие символьные действия:
- упрощение выражений до меньшего размера или приведение к стандартному виду, включая автоматическое упрощение с использованием предположений и ограничений
- подстановка символьных и численных значений в выражения
- изменение вида выражений: раскрытие произведений и степеней, частичная и полная факторизация (разложение на множители)
- разложение на простые дроби, удовлетворение ограничений, запись тригонометрических функций через экспоненты, преобразование логических выражений
- дифференцирование в частных и полных производных
- нахождение неопределённых и определённых интегралов (символьное интегрирование)
- символьное решение задач оптимизации: нахождение глобальных экстремумов, условных экстремумов и т. д.
- решение линейных и нелинейных уравнений
- алгебраическое (нечисленное) решение дифференциальных и конечно-разностных уравнений
- нахождение пределов функций и последовательностей
- интегральные преобразования
- оперирование с рядами: суммирование, умножение, суперпозиция
- матричные операции: обращение, факторизация, решение спектральных задач
- статистические вычисления
- автоматическое доказательство теорем, формальная верификация
- синтез программ
Дополнительные возможности
[править | править код]Многие из СКА также включают:
- язык программирования, позволяющий пользователям составлять собственные алгоритмы
- числовые операции произвольной точности
- целочисленную арифметику для больших чисел и поддержку функции теории чисел
- редактирование математических выражений в двумерной форме (с индексами, обычными дробями и т. д.)
- построение графиков функций в двух или трёх измерениях и их анимаций
- рисование графиков и диаграмм
- API для использования внешними программами (базы данных) или в языках программирования для использования системы компьютерной алгебры
- операции со строками (поиск подстроки)
- дополнительные модули прикладной математики для таких областей, как физика, биоинформатика, вычислительная химия и пакеты для инженерно-физических вычислений
Некоторые также включают:
- создание и редактирование графики (создание компьютерных изображений, а также обработку сигналов и анализ изображений)
- синтез звука
Некоторые СКА направлены на специфическую область использования; обычно такие программы разрабатываются академическим сообществом и распространяются бесплатно. Они могут быть не столь эффективны в численных расчетах, как системы для численных методов.
История
[править | править код]СКА появились в начале 1960-х и поэтапно развивались, в основном, в двух направлениях: теоретическая физика и создание искусственного интеллекта. Одной из ранних программ является, используемая и поныне FORM[1][2], из голландского института субатомной физики.
Первым успешным примером была новаторская работа Мартинуса Велтмана (позднее удостоенная Нобелевской премии по физике), который в 1963 создал программу для символьных вычислений (для нужд физики высоких энергий), которая была названа Schoonschip.
Используя LISP, Карл Энгельман в 1964 создал MATHLAB в рамках проекта MITRE (по исследованию искусственного интеллекта). Позже MATHLAB стал доступным в университетах для пользователей мейнфреймов PDP-6 и PDP-10 с такими ОС как TOPS-10 или TENEX. Сейчас он может быть всё ещё запущен на SIMH эмуляциях PDP-10. MATHLAB («mathematical laboratory») не стоит путать с MATLAB («matrix laboratory»), системой для численных расчётов, созданной 15 лет спустя в Университете Нью-Мексико.
Начиная с конца 1960-х первое поколение СКА включало в себя системы[3]:
- MACSYMA (Джоэл Мозес),
- MATHLAB (Массачусетский технологический институт),
- SCRATCHPAD (Ричард Дженкс, IBM),
- REDUCE (Тони Хирн),
- SAC-I, позже SACLIB (Джорж Коллинз),
- MUMATH для микропроцессоров (Дэвид Стоутмайер) и его продолжатель
- DERIVE.
Эти системы были способны выполнять символьные вычисления: интегрирование, дифференцирование, факторизация.
Ко второму поколению, в котором стал применяться более современный графический интерфейс пользователя, относятся Maple (Кейт Геддес и Гастон Гоннет, университет Уотерлу, 1985 год) и Mathematica (Стивен Вольфрам), которые широко используются математиками, учёными и инженерами[3]. Бесплатные альтернативы — Sage, Maxima, Reduce.
В 1987 Hewlett-Packard представила первый карманный аналитический калькулятор (HP-28), и в нём впервые для калькуляторов были реализованы организация алгебраических выражений, дифференциирование, ограниченное аналитическое интегрирование, разложение в ряд Тейлора и поиск решений алгебраических уравнений.
Компания Texas Instruments в 1995 году выпустила калькулятор TI-92 с революционными на тот момент расширениями CAS на основе программного обеспечения Derive. Этот калькулятор и последовавшие за ним, в том числе TI-89 и серии TI-Nspire CAS, выпущенный в 2007 году, продемонстрировали возможность создания сравнительно компактных и недорогих систем компьютерной алгебры.
В третьем поколении стал применяться категориальный подход и операторные вычисления[3]:
- AXIOM, последователь SCRATCHPAD (NAG),
- MAGMA (Джон Кэннон, Сиднейский университет),
- MUPAD (Бенно Фуксштейнер, университет города Падерборн).
На 2012 год исследования в области систем компьютерной алгебры продолжаются в трёх направлениях: возможности по решению всё более широких задач, простота использования и скорость работы[3].
Разделы математики, используемые в системах компьютерной алгебры
[править | править код]- Символьное интегрирование — алгоритм Риша
- Гипергеометрическое суммирование — алгоритм Госпера
- Предел (математика) — алгоритм Грюнтза (Gruntz)
- Факторизация полиномов. Для ограниченных областей используются алгоритм Берлекампа или алгоритм Кантора—Цассенхауза.
- Наибольший общий делитель — алгоритм Евклида
- Метод Гаусса
- Базис Грёбнера — алгоритм Бухбергера
- Аппроксимация Паде
- Лемма Шварца-Зиппела и проверка равенства полиномов
- Китайская теорема об остатках
- Диофантово уравнение
- Элиминация кванторов над действительными числами — метод Тарского
- Алгоритм Ландау
- Производные от элементарных и специальных функций (например, смотри неполная гамма-функция)
См. также
[править | править код]Примечания
[править | править код]- ↑ mainpage . www.nikhef.nl. Дата обращения: 18 января 2023. Архивировано 5 декабря 2022 года.
- ↑ Mikhail Tentyukov. Symbolic Manipulation System FORM: outlines and outlooks.
- ↑ 1 2 3 4 Modern Computer Algebra, 2013, 1.4. Computer algebra systems.
Литература
[править | править код]- Richard J. Fateman. Essays in algebraic simplification (англ.). — 1972. — 191 p. — (Technical report MIT-LCS-TR-095). Архивная копия от 17 сентября 2006 на Wayback Machine
- Таранчук В. Б. Основные функции систем компьютерной алгебры . — Минск: БГУ, 2013. — 59 p.
- Бухбергер Б. и другие. Компьютерная алгебра: Символьные и алгебраические вычисления. — М.: Мир, 1986. — 392 с.
- Joachim von zur Gathen; Jürgen Gerhard. Modern Computer Algebra, Third Edition. — Cambridge University Press, 2013. — 808 p. — ISBN 978-1-107-03903-2.
Ссылки
[править | править код]- Definition and workings of a computer algebra system
- Curriculum and Assessment in an Age of Computer Algebra Systems — From the Education Resources Information Center Clearinghouse for Science, Mathematics, and Environmental Education, Columbus, Ohio.
- STACK — система обучения и тестирования на основе компьютерной алгебры
- A collection of computer algebra systems
Для улучшения этой статьи желательно:
|