3

我意识到这是一个有点模糊的问题,所以我会尽力而为。如果我有一个数字n = 0.783325849821429,有没有办法显示更多的小数位?这是用长格式制作的。问题是我正在用正弦进行误差估计计算,并且有一点估计值非常接近正弦的实际值,以至于 MATLAB 将误差计算为 0,即使估计不可能完全准确。总是有错误,它太小了,MATLAB 无法识别。有没有办法让 MATLAB 考虑更多的小数位?

4

4 回答 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 回答
1

使用带有vpa的数字(可变精度精度)。更多关于可变精度算术在这里......请注意,您将需要符号数学工具箱。如果您没有它,那么您可以使用来自文件交换的 John D'Errico 的可变精度整数运算。

于 2013-02-19T06:55:30.107 回答
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 回答