Решение физических и математических задач с Maxima
Доступная литература и сеть Интернет в качестве "электронного помощника" студентов и школьников обычно позиционирует пакет MathCad, изредка — Maple или Mathematica. Материал данной главы содержит ряд разнородных задач, которые решались разными авторами вручную или при помощи MathCad.
7.1 Операции с полиномами и рациональными функциями
Рассмотрим решение с помощью Maxima нескольких задач из классического сборника под редакцией М.И. Сканави. В Maxima "пошаговое" упрощение выражений с последовательным использованием стандартного набора примитивов (формул суммы или разности кубов, формул возведения суммы или разности в степень и т.п.) выполнить сложно, поэтому результат являются фактически справочным, на который следует ориентироваться при решении вручную, при помощи ручки и бумаги.
7.1.1 Упрощение алгебраических выражений
Пример:
Упростить выражение и вычислить его, если даны числовые значения параметров:
(%i1) g:(1/a-1/(b+c))/(1/a+1/(b+c))*(1+(b^2+c^2-a^2)/2/b/c)/((a-b-c)/a/b/c);

(%i2) ratsimp(%);

(%i3) %,a=0.02,b=-11.05,c=1.07;

Пример: Упростить выражение и вычислить его, если даны числовые значения параметров:
(%i1) (sqrt(x)+1)/(x*sqrt(x)+x+sqrt(x))/(1/(x^2-sqrt(x)));

(%i2) ratsimp(%);

Пример: Сделать указанную подстановку и результат упростить:
(%i3) expr:(x^3-a^(-2/3)*b^(-1)*(a^2+b^2)*x+b^(1/2))/(b^(3/2)*x^2);

(%i4) ratsimp(%);

(%i5) radcan(%);

Без указанной подстановки упрощение посредством комбинации функций и
не удаётся.
(%i6) %,x=a^(2/3)*b^(-1/2);

(%i7) ratsimp(%);
Конечный результат оказывается простым

7.1.2 Разложение полиномов и рациональных выражений на множители
7.1.2.1 Решение алгебраических уравнений
Maxima (как и любой другой пакет символьной математики) не всегда способен получить окончательное решение. Однако полученный результат может оказаться всё же проще, чем исходная задача.
Пример (также из сборника под ред. М.И. Сканави): Решить уравнение :
(%i1) solve([sqrt(x-2)=x-4],[x]);
![(\%o1)\quad [x=\sqrt{x-2}+4]](/sites/default/files/tex_cache/efd50866891b76c3e4eef2b5770ef37e.png)
Уравнение имеет одно решение: , однако для отыскания его с помощью Maxima придётся прибегнуть к замене исходного уравнения его следствием:
(%i3) solve([(x-2)=(x-4)^2],[x]);
![(\%o3)\quad [x=6,x=3]](/sites/default/files/tex_cache/442f6ce99658d10bc46ce355b7616aa9.png)
Решения для дальнейшего использования можно извлечь из списка функцией :
(%i1) sol:solve([x-2=(x-4)^2],[x]);
![(\%o1)\quad [x=6,x=3]](/sites/default/files/tex_cache/adb6b918ffb743d2ba2f2466aa3db03d.png)
(%i2) ev(x,sol[1]);

(%i3) ev(x,sol[2]);

Ещё два примера решения алгебраических уравнений:
(%i1) eq:7*(x+1/x)-2*(x^2+1/x^2)=9;

(%i2) sol:solve([eq],[x]);
![(\%o2)\quad [x=2,x=\frac{1}{2},x=-\frac{\sqrt{3}\,i-1}{2},x=\frac{\sqrt{3}\,i+1}{2}]](/sites/default/files/tex_cache/1f3395b793c02968c32f0d6fe8a1025f.png)
(%i3) x1:ev(x,sol[1]); x2:ev(x,sol[2]); /*комплексные корни не рассматриваем*/

Уравнения с радикалами перед решением в Maxima приходится преобразовывать к степенной форме (для выделения левой и правой части выражения используют функции и
соответственно):
(%i1) eq:sqrt(x+1)+sqrt(4*x+13)=sqrt(3*x+12);

(%i2) eq1:lhs(eq)^2=rhs(eq)^2;

(%i3) solve([eq1],[x]);
![(\%o3)\quad [x=-\sqrt{x+1}\,\sqrt{4\,x+13}-1]](/sites/default/files/tex_cache/37db5f0d0bb2e28e1c2236e9423af1d0.png)
(%i4) eq2:x+1=rhs(%[1])+1;

(%i5) eq3:lhs(eq2)^2=rhs(eq2)^2;

Последняя команда позволила получить степенное уравнение, разрешимое аналитически в Maxima (для этого потребовалось дважды возвести в квадрат исходное уравнение).
(%i6) solve([eq3],[x]);
![(\%o6)\quad [x=-4,x=-1]](/sites/default/files/tex_cache/c353248482aa0a9eda260cd31a5e2b93.png)
Проверку решения выполняем при помощи функции .
Решение не удовлетворяет исходному уравнению.
(%i7) ev(eq,%[1]);

Решение превращает исходное уравнение в верное равенство:
(%i8) ev(eq,%o6[2]);

Рассмотрим ещё один пример, иллюстрирующий замену и подстановку при решении алгебраических уравнений:
(%i1) eq:sqrt(x+3-4*sqrt(x-1))+sqrt(x+8-6*sqrt(x-1))=1;
Исходное уравнение:

Выполним замену
(%i2) eq1:subst(z,sqrt(x-1),eq);

(%i3) eq2:subst(z^2+1,x,eq1);

Упрощаем полученный результат:
(%i4) radcan(%);

(%i5) solve([%],z);
![(\%o5)\quad [z=3]](/sites/default/files/tex_cache/1e07f0a263cfb75ff796f8b11a267f91.png)
(%i6) solve([sqrt(x-1)=3],[x]);
![(\%o6)\quad [x=10]](/sites/default/files/tex_cache/1d0e69b1cef353d5baea6627830496fb.png)
Выполним проверку
(%i7) ev(eq,%[1]);

Значительная часть тригонометрических уравнений школьного курса также разрешимы в Maxima, но непосредственное решение удаётся получить далеко не всегда.
Примеры:
(%i1) solve([sin(%pi/6-x)=sqrt(3)/2],[x]); solve: using arc-trig functions to get a solution. Some solutions will be lost.
![(\%o1)\quad [x=-\frac{\pi }{6}]](/sites/default/files/tex_cache/7e65df6f80213b45e5b241f356d2ca8c.png)
Большинство тригонометрических уравнений в Maxima (кроме простейших) приходится решать приведением их к алгебраическим.
Логарифмические и показательные уравнения также решаются в Maxima путём замены переменных и сведения к алгебраическим (см. выше специфические функции для упрощения логарифмических выражений).