我意识到这是一个有点模糊的问题,所以我会尽力而为。如果我有一个数字n = 0.783325849821429
,有没有办法显示更多的小数位?这是用长格式制作的。问题是我正在用正弦进行误差估计计算,并且有一点估计值非常接近正弦的实际值,以至于 MATLAB 将误差计算为 0,即使估计不可能完全准确。总是有错误,它太小了,MATLAB 无法识别。有没有办法让 MATLAB 考虑更多的小数位?
问问题
12186 次
4 回答
3
您始终可以使用格式化字符串要求更多数字
fprintf(1, 'n = %.20f\n', n ); % print with 20 digits after the decimal point
但是,浮点存储数字的精度是有限制的。
您可以使用以下方法测试机器精度eps
eps( n )
如果您的估计误差小于eps
您的估计,则在机器精度范围内且无法测量。
于 2013-02-19T06:57:59.383 回答
0
例如,要得到 22/7 等式的 1000 位数字的答案
位数(1000)
vpa(22/7)
于 2014-12-17T20:02:21.087 回答
0
如果您使用 vpa 函数来提高精度,那么它会将您的变量作为 syms,然后如果您想将此变量用于其他 matlab 内部函数,那么它将无法工作,因此请找到其他方法。
例如
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(:)))
于 2014-05-05T08:28:55.077 回答