谈谈数学和式的理解和应用
和式占用了一个很高大尚的希腊字母Σ(sigma),对于一个数列 a1,a2,a3,…,an,它们的和可以表示为:
∑i=1nai=a1+a2+⋯+an \sum_{i=1}^{n} a_i = a_1 + a_{2} + \cdots + a_n i=1∑nai=a1+a2+⋯+an
不要被公式吓倒,其实它只是一个**“累加”指令**。它的核心动作就是:“把符合条件的一项一项东西,全部加起来。”
一、 谈谈和式在程序设计中的应用(就像老板让你汇总数据)
在程序里,和式其实就是 循环(Loop) 加上 累加(Accumulation)。想象一下你是公司的新人,老板给你布置任务。
1. 基础应用:汇总与统计
场景:老板给你一张表格,上面是公司5个部门本月的开支。让你算总开支。
- 数学表达:
总开支 = Σ(i=1 到 5) 部门i开支
- 程序实现:
通俗解释:这就是最单纯的“和式”。程序做的就是和式规定的事:遍历一个集合,并把每个元素加到一起。# 五个部门的开支,放在一个“列表”(一维货架)里 department_expenses = [12000, 8500, 15000, 9000, 11000]total_expense = 0 # 初始化一个“总和盒子”,现在是空的# 开始“循环遍历”(和式里的 Σ) for expense in department_expenses:total_expense = total_expense + expense # 把每一项开支放进“总和盒子”print(total_expense) # 输出最终结果
2. 进阶应用:带条件的求和(和式 + 过滤器)
场景:老板说:“刚才不算数,重新算!只统计开支超过1万元的部门的总开支。”
- 数学表达:
总开支 = Σ(部门开支) ,但仅当 部门开支 > 10000 时才加
(数学上会用一个叫“艾弗森括号”的符号[条件]
来表示,条件为真时取1,为假时取0) - 程序实现:
通俗解释:这相当于在和式里加了一个“if判断”。程序在累加前会先检查:“这个东西符合要求吗?” 符合才加,不符合就跳过。这就像你在汇总发票时,只把“餐饮类”的发票挑出来加在一起。department_expenses = [12000, 8500, 15000, 9000, 11000] total_expense = 0for expense in department_expenses:if expense > 10000: # 这就是“条件”total_expense = total_expense + expense # 只加满足条件的项print(total_expense) # 输出:12000 + 15000 + 11000 = 38000
3. 核心应用:多重和式(嵌套循环)
场景:老板给你一个更复杂的任务:公司有3个项目组,每个组有若干成员,给出了每个成员的工时。计算公司的总工时。
- 数学表达:
总工时 = Σ(i=1 到 3) Σ(j=1 到 第i组人数) 成员_ij_工时
- 程序实现:
通俗解释:这就像你拿到一张总表(公司),里面有很多分表(项目组),分表里还有详细数据(成员)。你先处理第一个分表,把它下面的所有数据加完;然后处理第二个分表…直到所有分表处理完毕。 这种“循环套循环”的结构,就是程序实现多重和式的方式。# 用一个“列表的列表”来模拟(二维表格) # 三个子列表代表三个项目组,子列表里的数字是每个成员的工时 working_hours = [[8, 7, 9], # 第一组有3个成员,工时分别是8,7,9[6, 8], # 第二组有2个成员[7, 8, 8, 6] # 第三组有4个成员 ]total_hours = 0# 外层循环 Σ(i):遍历每个组 for group in working_hours:# 内层循环 Σ(j):遍历当前组里的每个成员for hours in group:total_hours = total_hours + hours # 把每个成员的工时加进去print(total_hours) # 输出:8+7+9 + 6+8 + 7+8+8+6 = 67
二、谈谈和式在实际生活中的应用(无处不在的“算总账”)
和式在生活中的应用比程序里更直观,因为它本质上就是我们每天都在做的“合计”行为。
1. 购物结算:最经典的单重和式
- 场景:你在超市购物,篮子里有苹果、牛奶、面包。
- 过程:收银员扫描每件商品的价格(
价格₁, 价格₂, 价格₃
),收款机执行总价 = 价格₁ + 价格₂ + 价格₃
。 - 通俗解释:你的购物小票就是一个完美的和式清单。 最后的“总计”就是和式的结果。
2. 计算月度总开销:带条件的多重和式
- 场景:月底了,你翻看微信/支付宝账单,想算算这个月在“餐饮”上花了多少钱。
- 过程:
- 第一重和式(遍历时间):你把本月的每一天都过一遍(
Σ(日=1 到 30)
)。 - 第二重和式(遍历当天交易):对于每一天,你把当天的所有交易记录过一遍(
Σ(交易)
)。 - 条件判断:在遍历每笔交易时,你只关注那些“商户类型”为“餐饮”的交易。
- 累加:把所有满足条件的交易金额加起来。
- 第一重和式(遍历时间):你把本月的每一天都过一遍(
- 通俗解释:这比超市结算多了一个“筛选”步骤。你不是把所有的钱都加起来,而是只加某一类的钱。这其实就是Excel里的
SUMIF
或SUMIFS
函数做的事情。
3. 评估项目总工作量:多重和式
- 场景:你是一个包工头,要盖一栋楼。你需要计算总共需要多少块砖。
- 过程:
- 这栋楼有5层(
i=1 到 5
)。 - 每一层有10个房间(
j=1 到 10
)。 - 每个房间需要
a_ij
块砖。 - 你计算总砖数的思维过程就是:
总砖数 = 一层所有房间的砖 + 二层所有房间的砖 + ... + 五层所有房间的砖
。
- 这栋楼有5层(
- 通俗解释:你在心里已经完成了一个二重和式的计算。 你先算出一层的总量(内层和),再把各层的总量加起来(外层和)。
4. 计算班级平均分:和式的组合
- 场景:老师计算全班50个学生的数学平均分。
- 过程:
- 先做和式:
总分 = Σ(k=1 到 50) 学生k的分数
。 - 再做除法:
平均分 = 总分 / 50
。
- 先做和式:
- 通俗解释:平均分是建立在“和式”基础之上的。 很多复杂的统计概念(如方差、标准差)的第一步,也都是一个和式计算。
三、谈谈公式定理
和式,又称求和,其核心思想是将一系列有规律的项相加。
1. 基本定义
对于一个数列a1,a2…ana_nan,它们的和可以表示为:
∑i=1nai=a1+a2+a3+⋯+an
\sum_{i=1}^{n} a_i = a_1 + a_2 + a_3 + \dots + a_n
i=1∑nai=a1+a2+a3+⋯+an
- 求和符号:Σ(大写希腊字母 Sigma,代表“Sum”即“和”)
- 求和索引:(i(i(i) (也称为下标或索引变量)。它只是一个“计数器”,本身没有实际意义,可以用任何字母(j, k, m…)代替。
- 索引下界:(i=1(i=1(i=1) (索引 (i) 从 1 开始)。
- 索引上界:(n(n(n) (索引 (i) 到 n 结束)。
- 通项:(ai(a_i(ai) (依赖于索引 (i) 的表达式)。
理解:索引 (i(i(i) 依次取遍从下界到上界的所有整数值(1, 2, 3, …, n),并将每个值代入通项 (ai(a_i(ai),然后将得到的所有结果加起来。
2. 推广定义
和式的定义可以非常灵活,不一定要从1开始。
∑i=mnai=am+am+1+⋯+an
\sum_{i=m}^{n} a_i = a_m + a_{m+1} + \dots + a_n
i=m∑nai=am+am+1+⋯+an
其中 (m(m(m) 和 (n(n(n) 是整数,且 (m≤n(m \le n(m≤n)。
示例:
- (∑k=35k2=32+42+52=9+16+25=50(\sum_{k=3}^{5} k^2 = 3^2 + 4^2 + 5^2 = 9 + 16 + 25 = 50(∑k=35k2=32+42+52=9+16+25=50)
- (∑i=032i=20+21+22+23=1+2+4+8=15(\sum_{i=0}^{3} 2^i = 2^0 + 2^1 + 2^2 + 2^3 = 1 + 2 + 4 + 8 = 15(∑i=032i=20+21+22+23=1+2+4+8=15)
3. 多重和式定义
当通项依赖于多个索引时,就需要多重和式。计算顺序是从右向左。
∑i=1m∑j=1naij=∑i=1m(∑j=1naij) \sum_{i=1}^{m} \sum_{j=1}^{n} a_{ij} = \sum_{i=1}^{m} \left( \sum_{j=1}^{n} a_{ij} \right) i=1∑mj=1∑naij=i=1∑m(j=1∑naij)
理解:
- 先固定外层的索引 (i(i(i)(例如令 (i=1(i=1(i=1))。
- 然后计算内层关于 (j(j(j) 的和式 (∑j=1na1j=a11+a12+⋯+a1n(\sum_{j=1}^{n} a_{1j} = a_{11} + a_{12} + \dots + a_{1n}(∑j=1na1j=a11+a12+⋯+a1n)。这个结果可以看作一个只与 (i(i(i) 有关的量 (Si(S_i(Si)。
- 然后让 (i(i(i) 取下一个值,重复步骤2。
- 最后,将所有 (Si(S_i(Si)(即 (S1,S2,…,Sm(S_1, S_2, \dots, S_m(S1,S2,…,Sm))加起来。
好的,我们来系统地介绍和式的定义和核心定理。我会保持通俗的语言,但会使用准确的数学表述。
四、和式的核心定理与法则
这些定理是和式运算的基石,它们看起来简单,但威力巨大。
定理1:常数倍法则
一个常数因子可以提到和式外面。
∑k=1nc⋅ak=c⋅∑k=1nak
\sum_{k=1}^{n} c \cdot a_k = c \cdot \sum_{k=1}^{n} a_k
k=1∑nc⋅ak=c⋅k=1∑nak
(其中(c(c(c) 是一个与索引 (k(k(k) 无关的常数)
通俗理解:如果你要算“5个苹果 + 5个橘子 + 5个香蕉”的总数,你可以先算水果种类(1苹果+1橘子+1香蕉=3个),再乘以5(5×3=15),而不是5+5+5=15。结果一样,但有时先提公因数再计算更简便。
示例:
∑k=11005k=5×1+5×2+⋯+5×100=5×(1+2+⋯+100)=5×∑k=1100k
\sum_{k=1}^{100} 5k = 5 \times 1 + 5 \times 2 + \dots + 5 \times 100 = 5 \times (1+2+\dots+100) = 5 \times \sum_{k=1}^{100} k
k=1∑1005k=5×1+5×2+⋯+5×100=5×(1+2+⋯+100)=5×k=1∑100k
定理2:加法分配律(和式的和等于和的合式)
两个数列之和的和式,等于各自和式的和。
∑k=1n(ak+bk)=∑k=1nak+∑k=1nbk
\sum_{k=1}^{n} (a_k + b_k) = \sum_{k=1}^{n} a_k + \sum_{k=1}^{n} b_k
k=1∑n(ak+bk)=k=1∑nak+k=1∑nbk
通俗理解:如果你每天生活费收入是(a元+父母资助b元),那么三天总收入 = 所有天工资之和 + 所有天父母资助之和。你可以分开算,再加起来。
示例:
∑k=13(ak+bk)=(a1+b1)+(a2+b2)+(a3+b3)
\sum_{k=1}^{3} (a_k + b_k) = (a_1+b_1) + (a2+b2) + (a_3+b_3)
k=1∑3(ak+bk)=(a1+b1)+(a2+b2)+(a3+b3)
∑k=13a+∑k=13b=(a1+a2+a3)+(b1+b2+b3)
\sum_{k=1}^{3} a + \sum_{k=1}^{3} b = (a_1+a_2+a_3) + (b_1+b_2+b_3)
k=1∑3a+k=1∑3b=(a1+a2+a3)+(b1+b2+b3)
定理3:指标变换法则
改变求和索引的名称和范围,不会改变和式的值,只要遍历的集合不变。
-
变量替换:索引名可以任意更改。
∑i=1nai=∑k=1nak \sum_{i=1}^{n} a_i = \sum_{k=1}^{n} a_k i=1∑nai=k=1∑nak -
平移变换:通过改变索引的起始点来重写和式。
∑k=mnak=∑k=m+pn+pak−p \sum_{k=m}^{n} a_k = \sum_{k=m+p}^{n+p} a_{k-p} k=m∑nak=k=m+p∑n+pak−p
示例:令(j=k+1(j = k+1(j=k+1),则当(k(k(k) 从 0 到(n(n(n) 时,(j(j(j) 从 1 到(n+1(n+1(n+1)。
∑k=0nak=∑j=1n+1aj−1 \sum_{k=0}^{n} a_k = \sum_{j=1}^{n+1} a_{j-1} k=0∑nak=j=1∑n+1aj−1
这个技巧在推导公式时极其重要。
定理4:分裂与组合
一个和式可以拆成几个部分,反之亦然。
∑k=1nak=∑k=1mak+∑k=m+1nak(1≤m<n)
\sum_{k=1}^{n} a_k = \sum_{k=1}^{m} a_k + \sum_{k=m+1}^{n} a_k \quad (1 \le m < n)
k=1∑nak=k=1∑mak+k=m+1∑nak(1≤m<n)
示例:
∑k=1100k=∑k=150k+∑k=51100k
\sum_{k=1}^{100} k = \sum_{k=1}^{50} k + \sum_{k=51}^{100} k
k=1∑100k=k=1∑50k+k=51∑100k
定理5:交换求和次序(富比尼定理的特例,非常重要!)
对于绝对收敛的二重和式,求和顺序可以交换。
∑i=1m∑j=1naij=∑j=1n∑i=1maij
\sum_{i=1}^{m} \sum_{j=1}^{n} a_{ij} = \sum_{j=1}^{n} \sum_{i=1}^{m} a_{ij}
i=1∑mj=1∑naij=j=1∑ni=1∑maij
通俗理解:在计算一个矩阵(或表格)所有元素的和时:
- 左边 (∑i∑j(\sum_i \sum_j(∑i∑j):先横着加每一行的值,再把所有行的和加起来。
- 右边 (∑j∑i(\sum_j \sum_i(∑j∑i):先竖着加每一列的值,再把所有列的和加起来。
最终总和是相等的。
示例:计算下面表格所有数字之和。
列1 | 列2 | |
---|---|---|
行1 | 1 | 2 |
行2 | 3 | 4 |
- (∑i=12∑j=12aij=(a11+a12)+(a21+a22)=(1+2)+(3+4)=3+7=10(\sum_{i=1}^{2} \sum_{j=1}^{2} a_{ij} = (a_{11}+a_{12}) + (a_{21}+a_{22}) = (1+2) + (3+4) = 3+7=10(∑i=12∑j=12aij=(a11+a12)+(a21+a22)=(1+2)+(3+4)=3+7=10)
- (∑j=12∑i=12aij=(a11+a21)+(a12+a22)=(1+3)+(2+4)=4+6=10(\sum_{j=1}^{2} \sum_{i=1}^{2} a_{ij} = (a_{11}+a_{21}) + (a_{12}+a_{22}) = (1+3) + (2+4) = 4+6=10(∑j=12∑i=12aij=(a11+a21)+(a12+a22)=(1+3)+(2+4)=4+6=10)
注意:当求和范围相互依赖时(例如 (∑i=1n∑j=1iaij(\sum_{i=1}^{n} \sum_{j=1}^{i} a_{ij}(∑i=1n∑j=1iaij)),交换次序需要特别小心,必须重新确定索引范围,但其思想仍然是简化计算的核心工具。