猫史档案馆


【编程一小时】【文编院】最简单の图解算法:求和公式

用户:嗯哼君 渠源嗯哼君 渠源查看:2 回复:7 评论:2 创建时间:2018-12-10T21:07:03


本算法为初一数学,会很简单,请放心使用,重在理解

前言:

大家也许听过“爱因斯坦求一百”的故事吧?我给大家原原本本地再复述一下:

爱因斯坦小学的时候老师为了偷懒因此想给大家布置一个很难的题,因此他让大家从一一直加到一百

没想到老师前脚刚出教师的门爱因斯坦就大喊:“5050!”

接着老师与同学都一脸懵:老师也不知道答案对错!

那爱因斯坦是怎么算的呢?我想靠不靠谱的Win自带画图系统给大家演示一遍:

(PS:为了方便起见,嗯哼君就把100改为10了)

center_image

我们看到,我们将1~10拆分成了五部分,而每一部分相加结果均为11

因此我们很容易地就得出来:1+2+3+······+9+10=11×5=55

(若是怀疑的话阔以那计算器再算一下欧~~~)

若是1一直加到100的话同理,我们将首尾相加,就得出来101。难在如何去求有多少个101呢?

我们也可以这么理解:我们将他分成了两部分相加,这样我们就得出:100÷2=50(项)

两者结合,我们就得出了:101×50=5050,即1+2+3+···+99+100=5050

正文

通过上面这些前言,我们发现了一个现象:总和=项数×两者相加的和

我们又发现,两者相加的和就是首相加尾项,我们也可以这样证明一下:

(a-2)+(a-1)+a+(a+1),首项加尾项为-1,中间两项也为-1

因此我们又得出,总和=项数×(首项加尾项)

但是别忘了,我们将首项加尾项可是分成两份了呀!因此我们还需要除以二:

总和=项数×(首项加尾项)/2

这就是我们今天要学的求和公式啦,公式如下:

center_image

实践

你可能想问,这不都是解决数学问题嘛,管算法什么事?

用处很大啊!比如:若有一个有序数组(数字列表),且每个数直接都差一。

目前你只知道首项与尾项,怎么求和呢?

我们以一个小小的程序来当做糖炒栗子,帮助你更好地实践运用这个公式:

center_image

一共才三行,却能帮助你快速求和!

我们先int了回答,接着开始计算:

套公式:项数乘(首项加尾项)除以2=(x*(1+x))/2

PS:由于Python里的运算顺序,因此表示分子的地方也要加括号

最后我们输出结果,虽然是int但由于我们有/,所以结果若为整数则会自动保留一位小数:

center_image

到这里,我们就基本理解并学完这个求和公式了。你学会了吗?

拓展

可能有人会感到似曾相识:这不是梯形的面积公式吗!!!

S梯形ABCD=(高(上底加下底))/2

center_image

我们不妨来看一下,首项加尾项也就是a+b,项数就是h,除以二就是求面积。

若我们把他看成求平行四边形的面积,则S=h(a+b)

接着由于平行四边形是两个梯形组成的,所以要除以二

这也就从另一个角度:面积法来解释了这个求和公式,而刚才我们用的是移花接木法。

其实我们还可以用很多方法来证明这个求和公式,你想到新的了没?


回复

上一页1 页 / 共 1下一页
活动喵活动喵

恭喜文编院发布编程一小时帖子/作品一篇,工作室积分+2,工作室积分累计截止到12月12日,请在12月12日之前不要删除帖子,否则新增积分失效哦~
再接再厉,活动喵相信你们工作室能成功拿下前六,获得工作室专属荣誉及奖品!

点赞0


评论


阿尔卑斯小奶糖阿尔卑斯小奶糖

好厉害,这是用python直接进行运算?

点赞0


评论


哲学喵哲学喵

真香啊

点赞0


评论


bLockTheBlOcK块块bLockTheBlOcK块块

sum(range(1,n+1))了解一下

点赞0


评论


无情的AC自动鸡无情的AC自动鸡

加油~

点赞0


评论


不是高斯吗?

点赞1


评论


程序侯程序侯

推荐个东西:在线LaTeX公式编辑器-妈叔出品 (latexlive.com)

点赞0


评论