楼主的MATLAB版本应该是2008b之后的吧?
从2008b开始,MTALAB的符号运算核心由Maple改到了MuPad,根据大多数人的看法,Maple远远强于MuPad,所以,如果符号运算用的比较多,最好还是用2008a之前的版本。
就楼主的这个问题而言,我在6.5、2007b和2013a上分别做了测试,前两个的结果没问题:
>> syms x
>> g2 =((2*x + 1)^3/x^3)^(1/3)
g2 =
((2*x+1)^3/x^3)^(1/3)
>> g3=simple(g2)
g3 =
(2*x+1)/x
>> g4=simple(g3)
g4 =
2+1/x
上面之所以调用两次simple,是因为simple函数尝试多种代数化简方法并且从中得到最精简的那个表达式,但是有些情况下,真正最精简的式子常常是要通过两种变换才能得到的。例如,上面的两个simple,第一个是通过radsimp方法,第二个是通过collect、expand等其他方法。
但在2013a(Mupad内核)上就存在问题:
>> syms x
>> g2 =((2*x + 1)^3/x^3)^(1/3)
g2 =
((2*x + 1)^3/x^3)^(1/3)
>> g3=simple(g2)
g3 =
((2*x + 1)^3/x^3)^(1/3)