登录论坛

查看完整版本 : [求助]请问eps(x)这个函数的源代码或计算过程


zanjero
2009-01-05, 13:14
%EPS Spacing of floating point numbers.
% D = EPS(X), is the positive distance from ABS(X) to the next larger in
% magnitude floating point number of the same precision as X.
% X may be either double precision or single precision.
% For all X, EPS(X) = EPS(-X) = EPS(ABS(X)).
%
% EPS, with no arguments, is the distance from 1.0 to the next larger double
% precision number, that is EPS = 2^(-52).
%
% EPS('double') is the same as EPS, or EPS(1.0).
% EPS('single') is the same as EPS(single(1.0)), or single(2^-23).
%
% Except for denormals, if 2^E <= ABS(X) < 2^(E+1), then
% EPS(X) = 2^(E-23) if ISA(X,'single')
% EPS(X) = 2^(E-52) if ISA(X,'double')
%
% Replace expressions of the form
% if Y < EPS * ABS(X)
% with
% if Y < EPS(X)
%
% Examples:
% double precision
% eps(1/2) = 2^(-53)
% eps(1) = 2^(-52)
% eps(2) = 2^(-51)
% eps(realmax) = 2^971
% eps(0) = 2^(-1074)
% if(abs(x)) <= realmin, eps(x) = 2^(-1074)
% eps(Inf) = NaN
% eps(NaN) = NaN
% single precision
% eps(single(1/2)) = 2^(-24)
% eps(single(1)) = 2^(-23)
% eps(single(2)) = 2^(-22)
% eps(realmax('single')) = 2^104
% eps(single(0)) = 2^(-149)
% if(abs(x)) <= realmin('single'), eps(x) = 2^(-149)
% eps(single(Inf)) = single(NaN)
% eps(single(NaN)) = single(NaN)
%
% See also REALMAX, REALMIN.

% Copyright 1984-2005 The MathWorks, Inc.
% $Revision: 5.9.4.7 $ $Date: 2005/06/21 19:28:22 $
% Built-in function.



这是个内置函数,我想把Matlab里的某个函数改成vb的,这个函数又调用了eps(x),所以想知道eps(x)的值是怎么计算出来的,好改成vb的,有知道的请不吝赐教~

zanjero
2009-01-08, 17:27
顶起来啊 别沉了

garnett
2009-10-26, 17:28
在matalb里面有修改零阈值的方法吗?在计算矩阵秩的时候这个带来的误差还是不可忽略的,
B =

6.1111 -2.0000 -5.0000 -4.0000
0 7.4565 -3.6364 -1.3091
0 0 5.6259 -0.8147
0 0 0 0.0000
,上面的0.0000实际是0.0000...17...在计算rank(B)时,会是4,综合所有的误差应该是零的。求助啊!