内容正文:
4.2数值计算
——冰雹猜想
【第4单元 计算与问题解决】
1
一
GUESS
猜
猜
2
我能猜出你的♥
信吗?
3
游戏规则
1.测反应,每个环节8秒。
2.可以用纸笔,也可以口算。
3.也可以直接认输。
4
准备开始喽!!!
5
第一步
选择一个大于1的幸运数字。
6
第二步
如果它是偶数,用它除以2
如果它是奇数,把它乘以3后再加上1
7
第三步
经过若干次的变换、运算后?
8
最终结果
一定 1
9
为什么呢?
10
激趣导入
同学们,从刚才的小游戏我们知道,对于任何一个大于1的自然数,如果它是偶数,用它除以2;如果它是一个奇数,把它乘以3后再加上1;这样经过若干次的变换、运算后,最后得到的结果都是1。
冰雹猜想
11
20世纪30年代,德国汉堡大学的学生克拉茨曾经研究过这个有趣的现象。1950年,他在美国召开的国际数学家大会上说了这个有趣的问题,于是这个问题得到传播。所以有人将这个问题称为“克拉茨问题”。
1952年,一位英国数学家独立发现了它。几年之后,它又被一位美国数学家所发现。
数学历史
角谷静夫,日本著名数学家,耶鲁大学教授。
在东方,它常被称为“角谷猜想”。之所以叫这个名称,和一个叫角谷静夫的日本学者有关,是他最初把这个问题介绍到日本,并传播到亚洲各国的。角谷静夫是在 1960 年首先听到这个猜想的。据说,当时是日本一位中学生最先发现了该问题,他请角谷教授证明,而角谷教授无能为力,但角谷对其很感兴趣,作了研究,并将其传播开来。
数学历史
人们争先恐后地去研究这个猜想,一遍遍地进行运算,在运算的过程中发现,算出来的数一会儿大,一会儿小,有的计算过程很长。其实,叫它“冰雹猜想”更形象,也更恰当。
为什么叫它“冰雹猜想”呢?顾名思义,这首先要从自然现象——冰雹的形成谈起。冰雹来自对流特别旺盛的对流云。云中的上升气流要比一般雷雨云强,小冰雹是小水滴在高空中受到上升气流的推动,在云层中忽上忽下,越积越大并形成冰,最后突然落下来,变成冰雹。
“冰雹猜想”就有这样的意思,它算来算去,数字上上下下,最后一下子像冰雹似地掉下来,变成一个数字“1”。
数学历史
01分析问题
对于任何一个大于1的自然数,如果它是偶数,用它除以2;如果它是一个奇数,把它乘以3后再加上1;这样经过若干次的变换、运算后,最后得到的结果都是1。
6
÷2
3
×3+1
10
÷2
5
×3+1
8
÷2
÷2
4
16
÷2
2
1
÷2
15
13
×3+1
40
÷2
20
÷2
10
÷2
16
×3+1
÷2
8
5
÷2
4
2
÷2
÷2
1
对于任何一个大于1的自然数,如果它是偶数,用它除以2;如果它是一个奇数,把它乘以3后再加上1;这样经过若干次的变换、运算后,最后得到的结果都是1。
01分析问题
如何用程序来演示“冰雹猜想”的过程呢?并且计算出重复次数呢?
02设计算法——自然语言描述
第一步:输入任意的正整数 n
第二步:判断 n 是否等于
第三步:若 n为奇数, 得到新的 n
第四步:否则 n为偶数, 得到新的 n
第五步:将 i增加1
第六步:判断 n 等于 1,结束
将其除以2
任务一:根据归纳,用自然语言描述写出“冰雹猜想”的步骤
1
将其乘以3后加1
第一步:输入任意的正整数 n
第二步:判断 n 是否等于
第三步:若 n为奇数, 得到新的 n
第四步:否则 n为偶数, 得到新的 n
第五步:将 i增加1
第六步:判断 n 等于 1,结束
02设计算法——流程图
1
将其乘以3后加1
将其除以2
任务二:根据自然语言描述“冰雹猜想”的步骤,补充流程图
1
将其乘以3后加1
03编写程序
def jg(n):
count = 0
while n ******:
print(n, end=' → ')
if ****** :
n = 3 * n + 1
else:
n = n // 2
count += 1
print(1)
return count
num = int(input("输入正整数: "))
print(f"共需{******}步")
任务三:根据流程图,补充代码。
04调试运行
def jg(n):
i = 0
while n != 1:
print(n, end=' → ')
if n % 2 == 1:
n = 3 * n + 1
else:
n = n // 2
i += 1
print(1)
return i
num = int(input("输入正整数: "))
print(f"共需{jg(num)}步")
借助生成式人工智能,完善程序。
这种重复反馈用旧值不断推出新值的过程,称之为迭代。
迭代
概念:
迭代是重复反馈的过程,其目的通常是为了接近并达到所需的目标或结果。每一次对过程的重复被称为一次迭代,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。
利用迭代算法处理问题,需要考虑以下三个方面:
①确定迭代变量。
在能够用迭代算法处理的问题中,至少具有一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。
②建立迭代关系式(数值关系)。
所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。
③控制迭代过程(结束条件)。
迭代过程在经过若干次重复执行以后要能结束,因此,要设定迭代结束的条件。
迭代
1.确定问题的解与那些数值相关,以说明作为迭代变量
2.确定所有信息的数值关系
3.决定迭代次数,条件,什么时候放弃迭代
22
迭代算法:
①确定迭代变量
②建立迭代关系式
③控制迭代过程
思考:试分析程序的迭代变量?迭代关系式?如何控制迭代过程?
def jg(n):
i = 0
while n != 1:
print(n, end=' → ')
if n % 2 == 1:
n = 3 * n + 1
else:
n = n // 2
i += 1
print(1)
return i
num = int(input("输入正整数: "))
print(f"共需{jg(num)}步")
②建立迭代关系式
③控制迭代过程
①确定迭代变量
拓展练习
借助生成式人工智能,探究python程序绘制“冰雹猜想”图。
它算来算去,数字上上下下,最后一下子掉下来,变成一个数字“1”。就像冰雹一样,在云层中忽上忽下,越积越大并形成冰,最后突然落下来,变成冰雹。所以这样的运算叫做“冰雹猜想”。
为什么又叫做“角谷猜想”呢?
斐波那契在《计算之书》中提出了一个有趣的兔子问题:假设一对兔子每个月可以生一对小兔子,一对兔子出生后第2个月就开始生小兔子。则一对兔子一年内能繁殖成多少对?10年呢?用迭代算法编程解决有趣的兔子问题,并确定迭代算法三步骤。
迭代算法:
①确定迭代变量
②建立迭代关系式
③控制迭代过程
课后练习巩固
25
学习评价
对自己和同伴的表现进行客观的评价,并思考后续完善的方向。(5=优秀,4=超出一般水平,3=满意,2=有待改进,1=不太理想)
评分项 自我评价 同学互评
能完成任务一自然语言描述写出“冰雹猜想”的计算步骤 5 4 3 2 1 5 4 3 2 1
能完成任务二:根据自然语言描述写出“冰雹猜想”的计算步骤,补充流程图 5 4 3 2 1 5 4 3 2 1
能完成任务三:根据流程图,补充代码 5 4 3 2 1 5 4 3 2 1
掌握迭代算法的解决问题的三步骤 5 4 3 2 1 5 4 3 2 1
26
课堂小结
迭代算法解决问题三步骤:
①确定迭代变量
②建立迭代关系式
③控制迭代过程
迭代概念:
迭代是重复反馈的过程,其目的通常是为了接近并达到所需的目标或结果。每一次对过程的重复被称为一次迭代,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。
$