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)的当量?
为了完整性,您可以在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