Решение физических и математических задач с 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]);
Уравнение имеет одно решение: , однако для отыскания его с помощью Maxima придётся прибегнуть к замене исходного уравнения его следствием:
(%i3) solve([(x-2)=(x-4)^2],[x]);
Решения для дальнейшего использования можно извлечь из списка функцией :
(%i1) sol:solve([x-2=(x-4)^2],[x]);
(%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]);
(%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]);
(%i4) eq2:x+1=rhs(%[1])+1;
(%i5) eq3:lhs(eq2)^2=rhs(eq2)^2;
Последняя команда позволила получить степенное уравнение, разрешимое аналитически в Maxima (для этого потребовалось дважды возвести в квадрат исходное уравнение).
(%i6) solve([eq3],[x]);
Проверку решения выполняем при помощи функции .
Решение не удовлетворяет исходному уравнению.
(%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);
(%i6) solve([sqrt(x-1)=3],[x]);
Выполним проверку
(%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.
Большинство тригонометрических уравнений в Maxima (кроме простейших) приходится решать приведением их к алгебраическим.
Логарифмические и показательные уравнения также решаются в Maxima путём замены переменных и сведения к алгебраическим (см. выше специфические функции для упрощения логарифмических выражений).