C#等价于matlab中的eps(X)函数

本文关键字:函数 eps 等价于 matlab 中的 | 更新日期: 2023-09-27 18:27:41

我正在尝试将一些matlab代码翻译成C#,遇到了一个问题。它是一种数值算法,matlab设置了一个基于eps()函数的公差。

matlab文档(http://www.mathworks.co.uk/help/matlab/ref/eps.html)说:

d=eps(X)是从abs(X)到下一个与X精度相同的较大幅度浮点数的正距离。X可以是双精度或单精度

据我所知,没有一个原生的C#函数能做同样的事情。我是一名物理学家,所以我对浮点运算的复杂性并不了解。有人能给我指正确的方向吗?

tl;dr:如何计算C#中eps(x)的当量?

C#等价于matlab中的eps(X)函数

为了完整性,您可以在matlab中自己计算eps,如下所示:

x=1; p=0; y=1; z=x+y;
while x~=z
   y=y/2; p=p+1; z=x+y; 
end
eps_ = y*2
eps

输出:

eps_ =
  2.2204e-016

ans =
  2.2204e-016

代码来自:科学计算导论,C.F.van Loan