vpa精度后得到的是sym型,即符号变量,而符号变量不允许进行逻辑运算。
matlab控制运算精度用的是digits和vpa这两个函数
例如:
>> digits(5);
a=vpa(sqrt(2));
b=vpa(sqrt(3));
>> a>b
??? Undefined function or method 'gt' for input arguments of type 'sym'.
比较大小只能是字符型或者字符型,所以可以这么比较:
>> double(a)>double(b)
ans =
0
逻辑运算同理,例如:
>> a&b
??? Undefined function or method 'and' for input arguments of type 'sym'.
>> double(a)&double(b)
ans =
前者是固定精确位数,后者是可以精确到你指定的位数