请问你的matlab版本号是多少?
matlab从7.7开始,符号计算引擎从maple改成了mupad。而据说,mupad的计算能力没有maple强。
关于引擎这个问题,可以参考:http://www.matlabsky.com/thread-6061-1-1.html
题外话,如果你要改引擎,建议多找找相关资料。我看过的这些,都是很早以前的东西了。不知道能否适用于matlab更高的版本。
正题。你的计算结果,我猜应该是7.7或者更高的版本计算出来的吧?
我电脑上有两个版本,maple引擎的6.5,和我自己把引擎从mupad改成maple的7.8。我算了两个结果,供参考:
matlab6.5:
>> syms a
simplify((a^2)^(1/2))
ans =
csgn(a)*a
其中csgn是一个复符号函数,csgn(a)的意思就是取a的符号。可见结果是正确的。
matlab7.8:
>> syms a
simplify((a^2)^(1/2))
ans =
2 0.500000000000000000
(a )
7.8直接写出了一个表达式,和matlab6.5结果不同。这应该和我用的是maple14有关系。
但是,如果直接使用simple来计算,结果与matlab6.5相同:
>> simple((a^2)^(1/2))
ans =
csgn(a) a
随后,附上matlab6.5的simple计算结果:
>> simple((a^2)^(1/2))
simplify:
csgn(a)*a
radsimp:
a
combine(trig):
(a^2)^(1/2)
factor:
(a^2)^(1/2)
expand:
(a^2)^(1/2)
combine:
(a^2)^(1/2)
convert(exp):
(a^2)^(1/2)
convert(sincos):
(a^2)^(1/2)
convert(tan):
(a^2)^(1/2)
collect(a):
(a^2)^(1/2)
ans =
a
不同的化简方式,得到不同的结果。给出了最终的结果:a。
a如果是负数的话……你也不说是错,这取决于你怎么化简。本来正数开方还两个根呢。
因此,能不能化简取决于matlab版本所用的符号计算引擎。
如此而已。若有不解,欢迎追问。