2017-01-17 13 views
0

数学プロジェクトでは、現在CAS Maxima(wxMaxima)を使用しています。プロジェクトがほぼ終了したので、私はMaximaに残したいが残っている問題は1つ残っている:Maxima:多項式のすべての係数を正の値にする方法

問題は、すべての係数を正にすることによって、ある多項式Pを変換する必要があるということです。私。例

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

のために、すべての係数の絶対的を足し(しかし、全体の多項式の絶対値を取っていないこと)

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

になり私は私を助ける実現される機能を見つけることができませんでしたこの。マップ関数で実装することで解決策を見つけることができませんでした。あなたはこの問題を解決する方法を知っていますか?

ありがとうございました! ジョナス

答えて

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 
+0

ありがとうございます。 Maximaもまた、(私が意図しなかった)いくつかの変数の不必要な絶対を取ったので、最初の解決策は役に立たなかった。しかし、PをStringに変換すると、結局助けになりました。 – jonas

関連する問題