[C/C++入门][循环]12、等差数列和等差数列末项计算

等差数列是什么?

想象一下,你获得了一个神奇的糖果盒,他有一个神奇的功能,每次你打开盒子时,里面都会多出同样数量的糖。你只要给里面放上1颗糖,然后想着可以多几颗,比如我希望打开的时候多两颗,那第二次打开时多了2颗成了3颗糖,第三次又多了2颗,成了5颗糖……看到没有?每次增加的糖的数量都是一样的,我们也叫做他们每次的差是一样的,这就是等差数列的道理!

排队买冰淇淋

假设有一天,你和你的小伙伴排成一队去买冰淇淋。队伍的规则是这样的:第一个小朋友可以得到1个冰淇淋球,但是每一个后面的小朋友都可以多得1个冰淇淋球。所以第二个小朋友会得到2个,第三个会得到3个,依此类推。

现在,如果队伍里有10个小朋友,那最后一个小朋友能得到多少个冰淇淋球呢?还有,所有的冰淇淋加起来一共是多少个呢?

这个故事,就是求等差数列的末位数和等差数列和。

数学魔法:找出答案(等差数列和等差数列和)

我们来用点魔法算一算吧!我们知道,第一个小朋友有1个冰淇淋球,每往后一个小朋友就多一个球。那么,第十个小朋友就会有10个冰淇淋球(因为1+9=10)。

让我们来看一下数学上的介绍:

等差数列是指一个数列中任意一项与其前一项之差恒等于常数的一类数列,这个常数称为公差。设等差数列的第一项为a1,公差为d,则数列的第

接着我们一点点推导一下这个公式,看看这个公式是怎么得出来的:

  1. 第一项:由定义,第一项是 a1​。
  2. 第二项:第二项 a2​ 比第一项多了一个公差 d,因此 a2​=a1​+d
  3. 第三项:第三项a3​ 比第二项多了一个公差 d,即 3​=a2​+d。将 a2​ 的表达式代入得 3=(1+)+=1+2。
  4. 第四项:以此类推,第四项 a4​ 比第三项多了一个公差 d,即 a4​=a3​+d。将a3​ 的表达式代入得 a4​=(a1​+2d)+d=a1​+3d
  5. 从上面的步骤可以看出,每增加一项,就在原有的基础上加上一个 d。换句话说,第 n 项比第一项多了 n−1 个公差 d

因此,第 n 项 an​ 可以表示为第一项加上 (n−1) 个公差 d,即:

an​=a1​+(n−1)d

n项可以表示为: an​=a1​+(n−1)d        

那总共需要多少个冰淇淋呢?我们把每个小朋友的冰淇淋加起来,也就是1+2+3+...+10。这看起来有点麻烦,但其实有个小窍门,叫做“等差数列求和公式”。我们用这个公式,很快就能知道答案是55个冰淇淋!

等差数列的前n项和Sn​可以通过以下公式计算:

Sn=\frac{n}{2}\left [ 2a1+(n-1)d \right ]

或者

Sn=\frac{n}{2}\left [ a1+an \right ]

其中:

a1​ 是数列的第一项,

d 是公差(每一项与前一项之间的常数差),

n 是项数,

an​ 是第 n 项。

第一个公式基于首项 a1​ 和公差 d,而第二个公式则基于首项 a1​ 和第 n 项 an​。

如果你提供具体的数值,我可以帮你计算出等差数列的前 𝑛n 项和。例如,如果我们有一个等差数列,首项 a1​=3,公差 d=2,并且我们想要找到前 5 项的和,我们可以使用第一个公式来计算:

S5=\frac{5}{2}\left [ 2*3+(5-1)*2 \right ]

那这个公式是如何推到出来的呢?

很久很久以前,在一个数学王国里,有一个聪明绝顶的小王子,他的名字叫高斯。有一天,国王给小王子出了一个难题,要求他计算从1加到100的总和。国王以为这会难倒小王子,没想到小王子只用了几分钟就给出了答案。

 

高斯的方法

小王子高斯是怎么做的呢?他首先写下了两个序列:

  1. 第一个序列是从1到100的数字。
  2. 第二个序列是把第一个序列反过来写,即从100到1的数字。

接下来,高斯把这两个序列上下对齐相加,得到了一个新的序列,每一项都是101(因为1+100=101, 2+99=101, ...)。由于从1到100共有100个数字,这意味着新的序列也有100个数字,每个都是101。

现在我们来尝试按照高斯的方法推导一下:

首先,写下从1到10的数字序列: 1,2,3,4,5,6,7,8,9,10

接着,将这个序列反向写下来: 10,9,8,7,6,5,4,3,2,1

将这两个序列的对应项相加,我们会得到: 11,11,11,11,11,11,11,11,11,11

可以看到,每个数都是11,这是因为1+10=11, 2+9=11, ..., 10+1=11。

由于有10个这样的数,我们可以很容易地计算出总和为 11×10=110。

但是,这里我们实际上计算了两倍的序列之和,因为我们加了两次1到10的序列。所以,实际的序列和应该是110的一半,即 110/2=55。

通过这个聪明的方法,我们发现从1加到10的和是55。这个过程揭示了一个更通用的等差数列求和公式,对于任意的等差数列 {a1​,a2​,a3​,...,an​},其和S 可以用以下公式计算:

Sn=\frac{n}{2}\left [ 2a1+(n-1)d \right ]

其中,n 是项数,a1​ 是第一项,而 d 是公差(在我们的例子中,d=1)。

在这个特定的例子中,n=10,a1​=1,而 d=1,代入公式,我们同样可以得到 S=55。

这样,我们就用一个故事讲述了等差数列求和的推导过程,是不是既简单又有趣呢?

希望这个解释能够帮助小朋友们更好地理解等差数列和的等差数列求和的原理!

动手做一做:等差数列游戏

现在,让我们来做个小游戏。你需要一张纸和一支笔,然后按照下面的步骤来:

  1. 写下数字,比如1。
  2. 在下一个数字上加上相同的数(比如2),一直写到n。
  3. 把这些数字加起来,看看总共有多少。

互相给身边的小伙伴出一个题,让他来进行计算吧,看你们谁算的又快又准!

编程问题解决一下

比如告诉你首项a1,和次项a2,以及n,以此自己推断公差,我们需要编写一个C++程序来计算这个数列的末项an以及整个数列的和S。

考点分析(数学推到型的)把数学公式转成计算机公式

  1. 等差数列的末项公式:an = a1 + (n - 1) * d
  2. 等差数列的求和公式:S = n / 2 * (a1 + an) 或 S = n / 2 * [2 * a1 + (n - 1) * d]

现在我们就来探索一下遇到这种题应该如何解答。

解题思路

  • 输入等差数列的首项a1,a2,以及项数n。
  • 计算出差,an代表n位置上的a的值,使用计算机方法计算an。
  • 输出计算结果。

解题方法

#include <iostream>
using namespace std;int main() {int a1, a2, n;cin >> a1 >> a2 >> n;int cha = a2 - a1;int an = a1;//最后一位int s = a1;//和//i从1开始,也就是直接加后面的,上面已经把a1赋值了,第一个数不用加了for (int i = 1; i < n; i++) {an += cha;s += an;}// 输出结果cout << "末项 an = " << an << endl;cout << "数列的和 S = " << s << endl;return 0;
}

解题方法2(带入数学公式)

#include <iostream>
using namespace std;int main() {int a1, a2, n; // 定义等差数列的首项、次项和项数cin >> a1 >> a2>> n; // 从标准输入读取这些值int d=a2-a1;//计算公差// 计算末项int an = a1 + (n - 1) * d;// 计算数列的和int S = n * (a1 + an) / 2;// 输出结果cout << "末项 an = " << an << endl;cout << "数列的和 S = " << S << endl;return 0;
}

应用案例

等差数列在多个领域都有应用,例如在物理学中计算匀加速直线运动的距离,在信号处理中处理等间隔采样的数据,在金融领域中计算等额分期付款等。

扩展阅读

  • 《数学分析》,华东师范大学出版社
  • 《C++ Primer Plus》,Stephen Prata著

互动

尝试修改上述程序,以适应等比数列的计算需求,即计算等比数列的末项和前n项的和。

小朋友们做完作业记得在评论区里评论打卡哦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/46442.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++练级之路】【Lv.26】类型转换

快乐的流畅&#xff1a;个人主页 个人专栏&#xff1a;《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火&#xff0c;在为久候之人燃烧&#xff01; 文章目录 一、C风格类型转换1.1 隐式类型转换1.2 显式类型转换 二、C风格类型转换2.1 static_cast2.2 dynamic_cast2.3…

配置Redis时yml的格式导致报错

报错如下 java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:98) at org.springframework.test.context.su…

Unity 优化合集

1️⃣ 贴图优化 1. Read/Write Enable 这个属性勾选后允许你在运行时读取和写入纹理数据&#xff0c;这对于需要实时生成内容或者需要动态修改纹理的场合非常有用但在大部分情况下这是不必要的。如果打开这个属性&#xff0c;会使运行时贴图大小翻倍&#xff0c;内存中会额外…

gptpdf:使用大模型(如 GPT-4o)将 PDF 解析为 markdown。

今天给大家分享一个开源的项目&#xff0c; 使用视觉大语言模型&#xff08;如 GPT-4o&#xff09;将 PDF 解析为 markdown。 方法非常简单(只有293行代码)&#xff0c;但几乎可以完美地解析排版、数学公式、表格、图片、图表等。 使用 GeneralAgent lib 与 OpenAI API 交互。…

香橙派AIpro部署YOLOv5:探索强悍开发板的高效目标检测能力

香橙派AIpro部署YOLOv5&#xff1a;探索强悍开发板的高效目标检测能力 一、香橙派AIpro开箱使用体验 1.1香橙派AIpro开箱 拿到板子后第一件事情就是开箱&#xff1a; 开箱后可以看见一个橘子的标识&#xff0c;也就是香橙派了&#xff0c;并且还有四个大字&#xff1a;为AI…

RABBITMQ的本地测试证书生成脚本

由于小程序要求必须访问wss的接口&#xff0c;因此需要将测试环境也切换到https&#xff0c;看了下官方的文档 RabbitMQ Web STOMP Plugin | RabbitMQ里面有这个信息 然后敲打GPT一阵子&#xff0c;把要求输入几个来回&#xff0c;得到这样一个脚本&#xff1a; generate_cer…

双向带头循环链表

一、概念 何为双向&#xff1a;此链表每一个节点的指针域由两部分组成&#xff0c;一个指针指向下一个节点&#xff0c;另一个指针指向上一个节点&#xff0c;并且两头的节点也是如此&#xff0c;头节点的下一个节点是尾节点&#xff0c;尾节点的上一个节点是头节点&#xff1b…

R语言实战——栅格聚合方法(超方便)

今天给大家分享一个栅格聚合方法&#xff0c;使用R语言实现&#xff01; 1 为什么要做栅格聚合 栅格数据是我们地理学使用最广泛的数据类型之一。所谓栅格聚合其实就是根据栅格数据进行一系列运算得到一个我们想要的数据。 我个人认为&#xff0c;应用最广泛的&#xff0c;可…

notepad++中文出现异体汉字,怎么改正

notepad显示异体字&#xff0c;如何恢复&#xff1f; 比如 “门” 和 “直接” 的"直"字&#xff0c;显示成了 方法 修改字体&#xff0c; 菜单栏选择 Settings(设置&#xff09;&#xff0c;Style Configurator…&#xff08;语言格式设置…&#xff09;&#xf…

SSM城镇居民社区再生资源回收系统-计算机毕业设计源码04175

摘 要 本论文介绍了一个基于SSM&#xff08;Spring Spring MVC MyBatis&#xff09;技术的城镇居民社区再生资源回收系统的设计与实现。随着社会对环境保护意识的不断提高&#xff0c;再生资源回收成为了一种重要的环保行动。然而&#xff0c;传统的再生资源回收方式存在着信…

[数仓]十二、离线数仓(Atlas元数据管理)

第1章 Atlas入门 1.1 Atlas概述 Apache Atlas为组织提供开放式元数据管理和治理功能,用以构建其数据资产目录,对这些资产进行分类和管理,并为数据分析师和数据治理团队,提供围绕这些数据资产的协作功能。 Atlas的具体功能如下: 元数据分类 支持对元数据进行分类管理,例…

springboot3——项目部署

springboot的项目开发完了&#xff0c;怎么样把他放到服务器上或者生产环境上让他运行起来跑起来。就要牵扯到项目部署&#xff0c;打包的方式了。 springboot支持jar和war: 打jar包&#xff1a;默认方式&#xff0c;项目开发完打个jar包&#xff0c;通过命令把jar包起起来就…

刚刚,Claude国内可直连!

刚刚&#xff0c;Claude国内可直连&#xff01; 大家好&#xff01;我是科技博主Maynor。今天我们要分享一个激动人心的消息&#xff1a;知名AI助手Claude现在可以在国内直接访问了&#xff01; 这对于科技爱好者、学生、研究人员和各行各业的专业人士来说都是一个重大利好。…

大模型时代的小红书+马蜂窝:华人团队开发 的AI旅行app

简介 一周前&#xff0c;由红杉投资的硅谷初创公司UTA AI推出了其核心产品Wanderboat AI&#xff0c;这是一个基于GPT-4技术的智能旅行规划工具。 该平台允许用户通过对话交互来明确旅行的偏好和需求&#xff0c;并提供包括目的地、活动和实用建议在内的定制化旅行建议。 Wa…

算法题-字符串

1.C字符串 c提供了一下两种类型的字符串表示形式&#xff1a; c风格字符串c引入的string类类型 1.1C风格字符串 C 风格的字符串起源于 C 语言&#xff0c;并在 C 中继续得到支持。字符串实际上是使用 null 字符 \0 终止的一维字符数组。因此&#xff0c;一个以 null 结尾的…

前端项目本地的node_modules直接上传到服务器上无法直接使用(node-sasa模块报错)

跑 jekins任务的服务器不能连接外网下载依赖包&#xff0c;就将本地下载的 node_modules直接上传到服务器上&#xff0c;但是运行时node-sass模块报错了ERROR in Missing binding /root/component/node_modules/node-sass/vendor/linux-x64-48/binding.node >> 报错信息类…

MySQl高级篇-事务、锁机制、MVCC

存储引擎的选择 在选择存储引擎时&#xff0c;应该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统&#xff0c;还可以根据实际情况选择多种存储引擎进行组合。 InnoDB&#xff1a;是Mysql的默认存储引擎&#xff0c;支持事务、外键。如果应用对事务的完整性有比较…

多媒体软件开发选择Animate软件还是Unity3D软件?

以下内容可能有一些片面&#xff0c;因为多媒体软件开发平台有很多&#xff0c;因为接触Animate和Unity3D比较多&#xff0c;所以这里仅对这两款进行分析&#xff01; Animate软件与Unity3D软件都是经常在多媒体展馆中用来制作互动展示内容的&#xff0c;对于这两种开发平台&a…

【可视化大屏系列】Echarts之饼图绘制

本文为个人近期学习总结,若有错误之处,欢迎指出! Echarts之饼图绘制 前言1.需求2.实现效果3.大概思路4.代码实现子组件写法父组件写法5.附加(1)圆环饼图的绘制(2)南丁格尔玫瑰饼图A.半径展示数据的大小B.面积展示数据的大小前言 在前文页面布局、DataV 的使用、Echarts…

【数据结构】--- 堆的应用

​ 个人主页&#xff1a;星纭-CSDN博客 系列文章专栏 :数据结构 踏上取经路&#xff0c;比抵达灵山更重要&#xff01;一起努力一起进步&#xff01; 一.堆排序 在前一个文章的学习中&#xff0c;我们使用数组的物理结构构造出了逻辑结构上的堆。那么堆到底有什么用呢&…