2017-10-16 127 views
3

如果我有最大值中的多项式x^2+y^2,那么最大值将显示它,如y^2+x^2。有没有办法指定在变量y之前显示变量xmaxima x^2 + y^2中变量的顺序变为y^2 + x^2

+0

'ordergreat'和'mainvar'做的工作。看到这个问题https://stackoverflow.com/q/36456544/349708,我相信是相同的。 – Eelvex

+0

@Eelvex谢谢,尝试,但现在如果我尝试'x^2 + x * y + y^2',我会得到'x^2 + y * x + y^2' – Kasper

回答

5

Maxima有一个关于对变量进行排序的内置想法,这些变量非常强大,并强加在所有表达式上,以便将它们规范化以进行简化。在某些方面,这种排序与通常用于手动计算的传统排序不同,但人们可以习惯。我的建议是接受它 - 因为它是很难让Maxima改变它的想法。

也就是说,全局变量powerdisp管理“+”表达式的显示。 powerdisp默认为false。当powerdisptrue时,“+”表达式的顺序相反。

(%i1) x^2 + y^2; 
            2 2 
(%o1)        y + x 
(%i2) x^2 + y^2 + 2*x*y; 
           2   2 
(%o2)       y + 2 x y + x 
(%i3) powerdisp; 
(%o3)        false 
(%i4) powerdisp:true; 
(%o4)        true 
(%i5) %o2;   
           2   2 
(%o5)       x + 2 x y + y 
(%i6) %o1; 
            2 2 
(%o6)        x + y 

注意powerdisp是一把钝刀 - 它重新排序所有的 “+” 表达式。你可以决定是否可以接受。

我不推荐使用mainvarordergreat。这只解决了特定变量的问题。

+0

有没有可能更好的解决方案,如果你只是有兴趣的变量排序不同(按字母顺序)在tex输出?我不太关心使用maxima时的顺序,但是当我把它展示给我的学生时,他们觉得很困惑。我使用maxima自动生成练习的乳胶解决方案。 – Kasper

+0

是的,可以只更改TeX输出。要做到这一点最明确的方法需要一点Lisp编程。 'powerdisp:true'是否具有预期的效果?或者还有其他的订购需求? –

+0

Powerdisp看起来相当不错,目前我遇到的唯一问题是指数。如果我设置了'powerdisp:true',那么'x^3 + x^2 + 2 * x * y + y^2'变成'x^2 + x^3 + 2 * x * y + y^2' – Kasper

2

我已经想出了一种方法来颠倒“+”表达式中符号的排序,以便az之前。但是对于任何给定的符号,指数的排列顺序与现在相同,即按降序排列。我为此发布了代码作为Github项目:https://github.com/robert-dodier/maxima-mplus-symbols-reversed

有一个Lisp代码文件。你可以克隆Git仓库,或者从上面提到的项目页面下载一个文件。请尝试一下,让我知道你的想法。此代码更改2-d和1-d控制台显示以及TeX输出。我只会显示下面的二维输出;其他输出具有相同的条款顺序。

例子:

(%i1) load("form-mplus-symbols-reversed.lisp") $ 
(%i2) reverse_symbols_order:true $ 
(%i3) x^2+y^2; 
            2 2 
(%o3)        x + y 
(%i4) x^3+x^2+2*x*y+y^2; 
           3 2 2 
(%o4)      x + x + y + 2 x y 

这是一个有点令人失望 - 这是习惯把混合项中x术语和y术语之间。但是,如果没有更复杂的排序启发式,似乎不可能实现这一点,因为相对于y^22*x*y的位置似乎取决于x^2的存在与否 - 我们不能通过比较它们两个时间(如在本实施方式中)。

为了比较这里是前面的表达式的默认排序:

(%i5) reset (reverse_symbols_order) $ 
(%i2) x^3+x^2+2*x*y+y^2; 
           2   3 2 
(%o2)      y + 2 x y + x + x 
+0

谢谢!这似乎确实已经对powerdisp有了很大的改进。我会在代码中尝试一下,看看学生们的想法。如果2 * x * y可以放在两者之间,那确实是理想的。 – Kasper

相关问题