千里马:如何将多项式的所有系数都设为正

时间:2017-01-17 17:28:47

标签: symbolic-math maxima

对于数学项目,我目前正在使用CAS Maxima(wxMaxima)。由于项目即将完成,我希望继续使用Maxima,但还有一个问题:

问题是我必须通过使其所有系数为正而转换某个多项式P.即将所有系数的绝对值相加(但不取整个多项式的绝对值),例如

P(...)=-15x^3+3y^2-4x^2

转向

P'(...)=15x^3+3y^2+4x^2

我找不到可以帮助我的实现功能。并且通过使用map函数实现它无法找到解决方案。你知道解决这个问题的方法吗?

感谢您的帮助! 纳斯

1 个答案:

答案 0 :(得分: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