Максима: Как превратить все коэффициенты полинома положительными

Для математического проекта в настоящее время я использую 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
Другие вопросы по тегам