.Net 的数学库计算精度太差??

westour 2014-01-15 04:18:49
在程序中要计算一个 很小的数 的指数,即 Math.Exp(x)

其中 x 非常小。结果发现居然计算出来的结果是错的。

用 vc 2010验证了一下,也是错的。

在 vc6 下面计算,得到了正确的结果。

怎么微软的库的精度越来越差?

有兴趣的同学可以自己试一下。

我要实际计算的公式是 (1- Math.Exp(0-x) ) /x , 在 x趋于0的时候,这个公式的结果应该趋于1,但是始终应该小于1 ,我在C#里面计算,居然出现了大于1的情况,所以开始检查,最终发现是 Math.Exp计算结果精度太差,比windows自己带的计算器还差。

我发现这个问题的时候,使用的x的值是 0.0000000000022861307294881892

请高手验证一下,并求高精度的库函数。

用 vs2010 c#和c++得到的结果都大于1,在vc6下面计算的结果小于1.
...全文
436 6 打赏 收藏 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
westour 2014-01-21
  • 打赏
  • 举报
回复
忘记指出了 x是从正的方向趋于0,所以不要考虑x小于0的情况。
引用 2 楼 tangyanzhi1111 的回复:
当x=1的时候(趋于0)0.6几,当x=-1的时候(趋于0)就大于1 了 MessageBox.Show(((1 - Math.Exp(0 - Convert.ToInt32(TxtMath.Text))) /Convert.ToInt32(TxtMath.Text)).ToString());
Regan-lin 2014-01-21
  • 打赏
  • 举报
回复
Math.Exp(x)这里的x取的好像是double,你写那么长的测试数据做什么,0.0000000000022861307294881892这都多少位了
devmiao 2014-01-15
  • 打赏
  • 举报
回复
你可以自己实现一个更高精度的Exp,如果你对性能没有要求的话。 方法是级数展开去迭代。数值计算书上有的。
emailtome 2014-01-15
  • 打赏
  • 举报
回复
MKL in your C# program http://software.intel.com/en-us/articles/using-intel-mkl-in-your-c-program/
jianghupt 2014-01-15
  • 打赏
  • 举报
回复
当x=1的时候(趋于0)0.6几,当x=-1的时候(趋于0)就大于1 了 MessageBox.Show(((1 - Math.Exp(0 - Convert.ToInt32(TxtMath.Text))) /Convert.ToInt32(TxtMath.Text)).ToString());
石灰石石英石 2014-01-15
  • 打赏
  • 举报
回复
需要计算精度要使用decimal,float和double的精度在计算上是不能得到很好地保证,而decimal的精度虽然没有double大,但是在计算的时候会保护!
已经博主授权,源码转载自 https://pan.quark.cn/s/a50517ff69e2 ### Path Ranking 算法解析 #### 知识图谱推理基础 在对Path Ranking算法进行深入分析之前,有必要简要回顾知识图谱的基本概念及其重要性。 **知识表示**是指将现实世界中的各类知识转化成计算机能够存储和计算的形式。这种转化通常涉及将自然语言或非结构化数据转化为结构化数据,以便于计算机进行处理和分析。 **知识图谱**是以结构化的形式描述客观世界中概念、实体及其相互关系的模型。通过构建知识图谱,可以更清晰地理解数据之间的联系,这对于搜索引擎优化、智能问答系统等应用领域具有重要作用。例如,谷歌自2012年起就在其搜索结果中广泛采用了知识图谱技术,显著改善了用户的搜索体验。目前,知名的开放知识图谱包括Freebase、Yago、DBpedia和NELL等。 然而,知识图谱也面临着一些挑战,其中最为突出的是**不完备性**(关系缺失、属性缺失)和**错误关系**的存在。为了应对这些问题,**知识图谱推理**应运而生,即从已有的知识图谱中推导出新的实体间关系,这一过程也被称为**知识图谱补全**。 #### 知识图谱补全策略 知识图谱补全主要分为两大类:基于表示学习的方法和基于图特征的方法。 1. **基于表示学习的方法**:这类方法将知识图谱中的实体与关系映射到一个低维的连续向量空间中,以便于捕捉实体间的潜在语义特征。典型的模型有TransE等。这种方法的优势在于能够高效处理大规模数据,并且在许多情况下取得了良好的效果。 2. **基于图特征的方法**:这类方法利用从知识图谱中提取的图特征来进行预测。具体来说,就是通过观察实体间的路径特征来预测实体间的关...

111,128

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧