版权声明:本文为博主原创文章,未经博主允许不得转载。 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))