我意识到这是一个有点模糊的问题,所以我会尽我所能。如果我有一个像n = 0.783325849821429
这样的数字,有没有办法显示更多的小数位?这是用格式很长的。问题是我正在用正弦进行误差估计计算,并且有一个点估计非常接近正弦的实际值,MATLAB将误差计算为0,即使估算不可能完全准确。总是有错误,它对于MATLAB来说太小了。有没有办法让MATLAB考虑更多小数位?
答案 0 :(得分:3)
您可以随时使用formatted strings
询问更多数字 fprintf(1, 'n = %.20f\n', n ); % print with 20 digits after the decimal point
然而浮点存储数字的精度有限制
您可以使用eps
eps( n )
如果您的估算误差小于eps
,则估算误差在机器精度范围内且无法测量。
答案 1 :(得分:1)
将digits与vpa一起使用(可变精度准确度)。有关变精度算术的更多信息here ...请注意,您需要符号数学工具箱。如果你没有,那么你可以从文件交换中使用John D'Errico的Variable Precision Integer Arithmetic。
答案 2 :(得分:0)
如果你使用vpa函数来提高精度,那么它将你的变量作为syms,之后如果你想将这个变量用于其他matlab内部函数,那么它将无法工作因此找到其他方法。
e.g。
a=vpa(a,5)
a =
[ 1.25, 2.0276, 3.2108, 3.3695, 2.0589, 1.0]
polyval(a,3)
??? Undefined function or method 'isfinite' for input arguments of type
'sym'.
Error in ==> polyval at 54
if isscalar(x) && (nargin < 3) && nc>0 && isfinite(x) &&
all(isfinite(p(:)))
答案 3 :(得分:0)
例如,要获得1000/22的答案,方程式为22/7
位数(1000)
,VPA(22/7)