如何设置Mathematica优先显示多项式的高次项?
如何让Mathematica优先显示多项式的高次项?
当然可以实现!Mathematica默认会按升幂(低次项在前)排列多项式,但我们有好几种方法能改成你想要的降幂(高次项在前)显示,不管是单变量还是多变量多项式都能搞定。
方法1:用PolynomialForm快速设置排序规则
这是最直接的方式,利用Mathematica内置的多项式显示选项,指定降幂排序规则:
对于单变量的例子,比如你提到的A + B:
A = x^2 + x; B = 2 x + 3; PolynomialForm[A + B, MonomialOrder -> DegreeReverseLexicographic]
输出就是你期望的:x² + 3x + 3
对于多变量多项式,比如你给出的x^2 + y^4 + 3 x + 3 + x y^2 + y + y^3:
poly = x^2 + y^4 + 3 x + 3 + x y^2 + y + y^3; PolynomialForm[poly, MonomialOrder -> DegreeReverseLexicographic]
输出会按总次数从高到低排列:y⁴ + y³ + x y² + x² + 3x + y + 3
DegreeReverseLexicographic是内置的排序规则,核心逻辑是:先比较项的总次数(各变量次数之和),总次数高的排前面;总次数相同的话,按字典序逆序排列,完全符合高次项优先的需求。
方法2:用Sort自定义排序逻辑
如果你需要更灵活的排序控制(比如总次数相同时,指定优先按某个变量的次数排序),可以把多项式拆成列表,自定义排序条件后再合并:
比如单变量场景,按x的次数降序排序:
Sort[List @@ (A + B), (Exponent[#1, x] > Exponent[#2, x]) &] // Plus
同样会得到x² + 3x + 3
多变量场景,如果希望总次数相同的项里,优先按x的次数降序排列(比如让x y²排在y³前面):
Sort[List @@ poly, If[Total[Exponent[#1, {x, y}]] == Total[Exponent[#2, {x, y}]], Exponent[#1, x] > Exponent[#2, x], Total[Exponent[#1, {x, y}]] > Total[Exponent[#2, {x, y}]]] &] // Plus
输出结果为:y⁴ + x y² + y³ + x² + 3x + y + 3
小提示
如果希望以后默认都用降幂显示,可以设置全局选项:
SetOptions[PolynomialForm, MonomialOrder -> DegreeReverseLexicographic]
这样之后所有多项式的输出都会自动按高次项优先排列啦!
内容的提问来源于stack exchange,提问作者Gene
相关产品推荐
相关产品推荐

