如何在matlab中比较vpa中的sym变量?

如何在matlab中比较vpa中的sym变量?,matlab,symbolic-math,arbitrary-precision,Matlab,Symbolic Math,Arbitrary Precision,假设我有两个300位精度的变量: a = vpa(sqrt(2),300); b = vpa(sqrt(3),300); 我想知道(b-a)>(1e-15)是真是假。我该怎么办?我想你只是在找这个: double(b-a)>(1e-15) 无法检查,但实际上(b-a)>(1e-15)似乎是有效的语法。你有错误吗?如果有,是哪一个(你有没有寻找关于这个错误的解决方案)?我有这个错误:???函数“gt”不是为类“sym”的值定义的。我认为您使用的是旧版本的Matlab和符号数学工具箱,因为

假设我有两个300位精度的变量:

a = vpa(sqrt(2),300);
b = vpa(sqrt(3),300);

我想知道
(b-a)>(1e-15)
是真是假。我该怎么办?

我想你只是在找这个:

double(b-a)>(1e-15)

无法检查,但实际上
(b-a)>(1e-15)
似乎是有效的语法。你有错误吗?如果有,是哪一个(你有没有寻找关于这个错误的解决方案)?我有这个错误:???函数“gt”不是为类“sym”的值定义的。我认为您使用的是旧版本的Matlab和符号数学工具箱,因为它在R2012b+中运行良好。如果使用
c=vpa(1e-15300)
或仅使用
c=sym(1e-15)
,会发生什么情况?您的版本中是否有
isAlways
功能?谢谢horchler。使用matlab R2013a,现在一切都好了。如果我想使用所有的300位数,该怎么办?@zee我不确定我是否理解这个问题,但也许你想在铸造之前将1e-15减为双精度,然后与0进行比较。我想避免双精度()…是否可以使用所有300位数字进行比较?@zee正如我之前所说的,你应该先减去
double(b-a-1e15)>0
double(b-a-vpa(1e-15300))>0
应该可以做到这一点,并且不容易出现您似乎担心的舍入错误。感谢dennis的所有评论。。。但我认为
(b-a-1e15)
没有使用300位数字。。。