Максима: Как превратить все коэффициенты полинома положительными
Для математического проекта в настоящее время я использую CAS Maxima (wxMaxima). Поскольку проект почти завершен, я бы хотел остаться с Maxima, но осталась одна проблема:
Проблема в том, что мне нужно преобразовать определенный полином P, сделав все его коэффициенты положительными. Т.е. суммируя абсолютные значения всех коэффициентов (но не принимая абсолютное значение целого полинома), например
P(...)=-15x^3+3y^2-4x^2
превращается в
P'(...)=15x^3+3y^2+4x^2
Я не смог найти реализованную функцию, которая бы мне в этом помогла. И не смог найти решение, реализовав его с помощью функции карты. Знаете ли вы, как решить эту проблему?
Спасибо за помощь! Jonas
1 ответ
Вы можете рассчитать сумму абсолютных значений:
P:-15*x^3+3*y^2-4*x^2;
P2:sum(abs(args(P)[i]),i,1,length(args(P)));
>> 3*y^2+15*x^2*abs(x)+4*x^2
(к сожалению, вот abs(x), но вы можете использовать subst(x,abs(x),P2)
)
То же самое с картой:
P2:map(abs,P);
Или преобразовать выражение в строку и заменить "-" на "+":
s:string(P);
s2:ssubst("+","-",s);
P2:eval_string(s2);
>> 3*y^2+15*x^3+4*x^2