matlab的简化函数simple为什么我使用simple或者simplify简化后g2 =((2*x + 1)^3/x^3)^(1/3),而不是g2=(2*x+1)/x 或者g2=2+1/x

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/27 14:59:43
matlab的简化函数simple为什么我使用simple或者simplify简化后g2 =((2*x + 1)^3/x^3)^(1/3),而不是g2=(2*x+1)/x 或者g2=2+1/x

matlab的简化函数simple为什么我使用simple或者simplify简化后g2 =((2*x + 1)^3/x^3)^(1/3),而不是g2=(2*x+1)/x 或者g2=2+1/x
matlab的简化函数simple
为什么我使用simple或者simplify简化后g2 =((2*x + 1)^3/x^3)^(1/3),而不是g2=(2*x+1)/x 或者g2=2+1/x

matlab的简化函数simple为什么我使用simple或者simplify简化后g2 =((2*x + 1)^3/x^3)^(1/3),而不是g2=(2*x+1)/x 或者g2=2+1/x

楼主的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)