В математике и информатике компьютерная алгебра, также называемая символьными вычислениями или алгебраическими вычислениями, представляет собой научную область, которая относится к изучению и разработке алгоритмов и программного обеспечения для управления математическими выражениями и другими математическими объектами. Хотя компьютерную алгебру можно рассматривать как подполе научных вычислений, они обычно рассматриваются как отдельные области, потому что научные вычисления обычно основаны на числовых вычислениях с приближенными числами с плавающей запятой, в то время как символьные вычисления подчеркивают точное вычисление с выражениями, содержащими переменные, которые не имеют заданного значения и манипулируются как символы.
=============================
Программные приложения, которые выполняют символьные вычисления, называются системами компьютерной алгебры, при этом термин система указывает на сложность основных приложений, которые включают, по крайней мере, метод представления математических данных на компьютере, язык пользовательского программирования (обычно отличный от языка программирования). используется для реализации), выделенный менеджер памяти, пользовательский интерфейс для ввода / вывода математических выражений, большой набор подпрограмм для выполнения обычных операций, таких как упрощение выражений, дифференцирование с использованием цепного правила, полиномиальная факторизация, неопределенное интегрирование и т. д. .
Компьютерная алгебра широко используется для экспериментов в математике и для разработки формул, используемых в числовых программах. Он также используется для полных научных вычислений, когда чисто численные методы терпят неудачу, как в криптографии с открытым ключом, или для некоторых нелинейных задач.
За исключением чисел и переменных, каждое математическое выражение можно рассматривать как символ оператора, за которым следует последовательность операндов. В программах компьютерной алгебры выражения обычно представлены таким образом. Это представление очень гибкое, и многие вещи, которые на первый взгляд кажутся не математическими выражениями, могут быть представлены и обработаны как таковые. Например, уравнение - это выражение с «=» в качестве оператора, матрица может быть представлена в виде выражения с «матрицей» в качестве оператора и ее строк в качестве операндов.
Даже программы можно рассматривать и представлять в виде выражений с оператором «процедура» и, по крайней мере, двумя операндами, списком параметров и телом, которое само является выражением с «телом» в качестве оператора и последовательностью инструкций в качестве операндов. И наоборот, любое математическое выражение можно рассматривать как программу. Например, выражение a + b можно рассматривать как программу для сложения с параметрами a и b. Выполнение этой программы заключается в вычислении выражения для заданных значений a и b; если они не имеют никакого значения, т. е. неопределенны, результат оценки - это просто его входные данные.
Этот процесс отложенного вычисления является фундаментальным в компьютерной алгебре. Например, оператор «=» в уравнениях в большинстве систем компьютерной алгебры также является именем программы проверки равенства: обычно оценка уравнения приводит к уравнению, но, когда требуется проверка на равенство , - либо явно запрошенный пользователем с помощью команды «вычисление логического значения», либо автоматически запускаемый системой в случае теста внутри программы - затем выполняется оценка до логического 0 или 1.
Поскольку размер операндов выражения непредсказуем и может измениться во время рабочего сеанса, последовательность операндов обычно представлена как последовательность либо указателей (как в Macsyma), либо записей в хеш-таблице (как в Maple).