Стахин Н.А., Основы работы с системой аналитических (символьных) вычислений Maxima
Впрочем, интерфейс wxMaxima можно не использовать, можно просто
написать команду для Максимы вида solve([(x+1)/(x^2+1)=x^2/(x+2)], [x]);
Но прежде чем рассмотреть результаты решения подробнее, нужно сказать
пару слов о списках, или векторах, в Maxima; поскольку именно в виде списков
solve возвращает корни, да и принимает параметры в случае решения системы
уравнений, а не одного уравнения.
Синтаксис списков в Maxima прост; это перечисление элементов в
квадратных скобках: [элемент1, элемент2 ,…, элементN]. Особенность —
не в синтаксисе. Основное достоинство списков Maxima в том, что их
элементами могут быть совершенно любые выражения: символы,
арифметические выражения, вызовы функций, присвоения, уравнения, другие
списки… Поэтому списки и во встроенных функциях широко применяются.
Функция solve в своем простейшем варианте, для решения одиночного
уравнения, в качестве аргументов никаких списков не принимает (а принимает
либо уравнение и символ, относительно которого его надо решать, либо только
уравнение, если символ в нем всего один). А возвращает список, состоящий из
всех корней заданного уравнения. В рассматриваемом случае получаем
Здесь мы сначала записали уравнение (команда %i1). Потом попросили
решить его с помощью функции solve (команда %i2).
Как видно из полученного решения, функция solve нашла не только
действительные корни, но и все комплексные корни уравнения и записала их в
виде списка из четырех элементов.
К конкретному элементу полученного списка можно обратиться с
помощью тех же квадратных скобок, указав в них номер элемента после имени
списка. Вот так, например, мы можем осуществить проверку решения,
подставив первый корень из выданного списка в исходное уравнение.