转载至http://blog.csdn.net/zhangpinghao/article/details/8197600

Kahan求和公式原理:

首先,这个算法就是用来求和的,求a1+a2+a3+...为什么不直接相加呢,而要用Kahan求和公式呢,这个算法的用武之地在哪呢,一一道来

kahan求和算法能避免大数吃小数的情况。

大数吃小数是什么意思呢?举个例子,我们用两个float相加,float是32位,它的精度是小数点后6-7位(详见http://blog.csdn.net/zhangpinghao/article/details/8138732),设有a=123456;b=2.189;a+b应该是123458.189但是由于float的精度只有小数点后6-7位,所以必然得不到123458.189,后面的89可能会截掉,8不一定,9是必然会截掉的。好的,才做一个加法就产生至少了0.009的误差,做1000个这样的加法,误差就是9了,这显然不是我们想要的。

kahan求和算法可以避免这种情况,它有一个数用来记住那个被截断的小数,同样做下面的计算,设有a=123456;b=2.189;计算a+b。kahan求和算法是这样做的:sum=a+b(不准确); temp= (a+b)-a-b;temp等于多少呢,初看这不就是0吗?不是的,计算机此时算的可不是0,而是等于-0.009,就是被截断的那个小数。通过一个临时变量我们就记住了这个误差,当计算下一个加法的时候,可以把这个误差补上,并且更新误差到sum。

其实也可以这样理解,sum不是由于数太大,占用了小数的精度吗,而这个小数在当前一步看似是可以忽略的,但是由于,迭代的次数旁道,小数会累积成大误差,那么我们另外用的float专门记住这个误差小数不就得了吗。

Kahan求和公式原理相关推荐

  1. 【ACM】杭电OJ 4704 Sum (隔板原理+组合数求和公式+费马小定理+快速幂)

    http://acm.hdu.edu.cn/showproblem.php?pid=4704 1.隔板原理 1~N有N个元素,每个元素代表一个1.分成K个数,即在(N-1)个空挡里放置(K-1)块隔板 ...

  2. 奇数项求和公式_Excel公式求和奇数或偶数周

    奇数项求和公式 Here's an Excel formula challenge for you, based on an email question that someone sent to m ...

  3. 空间连接时计算总和_瞬间搞定一月数据汇总!这个Excel求和公式太牛了

    原标题:瞬间搞定一月数据汇总!这个Excel求和公式太牛了 之前推过一期跨表公式合集,其中有一个是利用sum进行多表求和 [例]如下图所示,需要在汇总表中统计1~30日的各个商品销量合计(日报表和汇总 ...

  4. 加权求和公式_从加权求和的角度来看kalman滤波

    一直想把自己工作学习中的感悟写出来与大家分享,但是每写到细节处,完美主义的思维模式时常让我止步不前.某一天,我突然想,还是先让自己放松一些,重点是分享出来.这之后,我终于可以写下去了.表述中有不严谨甚 ...

  5. excel相乘后求和_Excel求和只会sum函数就out了,这五个求和公式一个比一个强

    说到数据求和,可能90%的朋友第一时间想到的求和函数就是sum函数.因为这个函数可以快速的对数据进行单一维度或多维度数据求和.今天我们来学习一下,数据求和过程中,5个高效的求和公式. 一:Sum函数一 ...

  6. n平方的求和公式_素数求和公式!!!(操作测试)

    对n=30以内的素数执行求和! 成功! 对n=60以内的素数执行求和! 成功! 对n=100的素数执行求和! 成功! 备注: 1.理论上,公式是对的,而且已经被数学证明过了,只是知乎太小,写不下这些证 ...

  7. 51Nod 1013 3的幂的和 快速幂 | 乘法逆元 | 递归求和公式

    1.乘法逆元 直接使用等比数列求和公式,注意使用乘法逆元 ---严谨,失细节毁所有 #include "bits/stdc++.h" using namespace std; #d ...

  8. 文件不能自动求和_Excel求和公式函数的使用方法教程

    有网友问到excel中能不能用函数求和,excel函数是很强大的功能,求和就不在话下了,在常用的Excel操作中,SUM求和是使用频率最高的一个函数.那Excel求和公式怎么用?今天,小编就和大家说一 ...

  9. n平方的求和公式_高中数学:数列求和及数列的综合应用,掌握常见模型

    数列求和及数列的综合应用,掌握常见模型 [考试要求] 1.熟练掌握等差.等比数列的前n项和公式: 2.掌握非等差数列.非等比数列求和的几种常见方法: 3.了解数列是一种特殊的函数:4.能在具体问题情境 ...

最新文章

  1. 初学算法-快速排序与线性时间选择(Deterministic Selection)的C++实现
  2. ubuntu KDE桌面
  3. 什么是5G,我们能从中得到什么?
  4. 基于随机梯度下降法的手写数字识别、epoch是什么、python实现
  5. 利用Python爬虫采集mac电脑皮肤
  6. 2021年CBA总决赛第三场预测
  7. 基于TCP/UDP的socket编程
  8. 求方程式ax2 bx c=0的根c语言,关于求方程ax2+bx+c=0根的问题
  9. python爬取京东手机配置信息(正则)
  10. 【排错】exchange2013不能显示所有OU
  11. Fibonacci 取余,直接做超时
  12. 布隆的盾能挡机器人_2020 年双十一有哪些扫地机器人值得买?
  13. c# 打印 html,c# – 使用模板打印
  14. “绿萌”仿“大麦”演出购票APP
  15. viewModel生命周期
  16. 哈曼收购混合现实领域领先公司Apostera
  17. 开源技术领域有哪些免费又好用的OA办公软件?最好是.NET平台
  18. 「面试复习」「Java」三、Java并发
  19. Project0:小游戏
  20. 小弟为共享软件作者制作的管理软件注册的动态链接库 (转)

热门文章

  1. [日常] NOIWC2019 冬眠记
  2. WPF 开机启动因为触摸初始化锁住界面显示
  3. 如何解决网站大流量和高并发问题?
  4. 全终端办公电子邮件集成方案
  5. TLS1.3 协议的加密过程
  6. 深入浅出kafka原理-5-kafka同步副本ISR高低水位HW
  7. 程序员应对35岁中年危机的措施
  8. 程序员能靠纯技术渡过中年危机吗?
  9. 前百度总裁陆奇:我给有梦想的年轻人9点建议
  10. elasticsearch 实践