在Matlab符号计算中灵活运用assume

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/WhoisPo/article/details/51083997

在MATLAB负号计算中,我们经常要先用sym或者syms定义一个符号,如下方法使用。大多数的时候这个符号默认是复数

syms a b c

这个时候问题就来了。比如下面一个很简单的例子,计算sqrt(a^2)。

simplify(sqrt(a^2))

如果a是一个复数,用MATLA计算出的结果就是(a^2)^(1/2)

assume(a, 'clear')


如果a是一个实数,结果是abs(a)

assume(a, 'real')

如果a是一个正数,结果是a

assume(a>0)

如果a是一个负数,结果是-a

assume(a<0)

看了上面想必大家知道assume的好处了。如果想知道一个符号现在是什么假设,可以用下面方法查看

assumptions(a)


除了在上面的场合,在很多其他符号计算化简的场合assume也用得着,比如log(a)+log(b)化简为log(a*b),需要假设a>0和b>0.

assume(a > 0)
assume(b > 0)
S = log(a) + log(b);
combine(S,'log')

ans =
log(a*b)


syms a b
assume(abs(a*b) < 1)
combine(atan(a) + atan(b),'atan')

ans =
-atan((a + b)/(a*b - 1))



猜你喜欢

转载自blog.csdn.net/WhoisPo/article/details/51083997