内容正文:
4.2 数值计算
高中信息技术 必修1 数据与计算
第二课时 求解斐波那契数列
第4单元 计算与问题解决
学习目标
感受数据的图形化表示。
设计解析式或迭代方程,进行数值计算,解决问题。
了解数值类算法在实际问题解决时的应用及常用方法。
4.2 数值计算
项目内容
人们对计算机的最初应用大多是数值计算,主要借助计算机运算速度快,精确度高的特点来解决各种数学问题,如函数计算、方程的求解、数列求和等都属于数值计算。
借助计算机程序,可以解决很多数学方法所描绘的数值计算问题。本节我们将围绕“与数学公式面对面”项目探讨在中学数学领域中常见的数学公式与程序设计的有趣结合。
项目任务:
任务一 绘制数学函数曲线
任务二 求解斐波那契数列
本节任务
4.2 数值计算
3
任务:求解斐波那契数列
4.2 数值计算
活动1 用WPS求解数列
数学家斐波那契在《计算之书》中提出了一个有趣的兔子问题:
假设一对兔子每个月可以生一对小兔子,一对兔子出生后第2个月就开始生小兔子。则一对兔子一年内能繁殖成多少对?10年呢?
根据描述,
兔子的对数如图所示:
4
任务:求解斐波那契数列
4.2 数值计算
活动1 用WPS求解数列
分析 从第3个月开始,每个月大兔子的对数等于上个月大兔子与小兔子的对数之和(即上个月兔子总对数),每个月小兔子的对数等于上个月大兔子的对数(即上个月兔子总对数)。
使用电子表格可以很方便的求解:
上机实践1
5
任务:求解斐波那契数列
4.2 数值计算
活动1 用WPS求解数列
分析 从第3个月开始,每个月大兔子的对数等于上个月大兔子与小兔子的对数之和(即上个月兔子总对数),每个月小兔子的对数等于上个月大兔子的对数(即上个月兔子总对数)。
我们发现,当计算到第74个月的时候,由于数据范围及表示精度的问题,导致结果出错:
6
任务:求解斐波那契数列
4.2 数值计算
活动1 用WPS求解数列
分析 从第3个月开始,每个月大兔子的对数等于上个月大兔子与小兔子的对数之和(即上个月兔子总对数),每个月小兔子的对数等于上个月大兔子的对数(即上个月兔子总对数)。
借助电子表格软件计算时,只能算到第74个月,而我们需要计算10年即第120个月的兔子数量。
下面,我们借助python语言进行求解。
7
知识探究——迭代法
第1个月和第2个月的兔子对数之和为第3个月的兔子对数
第2个月和第3个月的兔子对数之和为笫4个月的兔子对数
……
第118个月和第119个月的兔子对数之和为第120个月的兔子对数
每个月的兔子对数是前两个月的兔子对数之和, 又同时作为下一个月兔子对数的加数。这种重复反馈的过程称为迭代。
第n-2个月
第n-1个月
第n个月
第n-1个月
第n个月
第n+1个月
8
知识探究——迭代法
迭代法也称辗转法,是用计算机解决问题的一种基本方法。迭代通常是为了接近并到达所需的目标或结果。每一次对过程的重复被称为一次"迭代”,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。
由于在迭代系列中的每个月份兔子对数只跟前两个月有关,因此在编写程序时,只需两个变量f1记录上上个月的数据,用f2记录上个月的数据。
f1
f2
F1+f2
③
①
②
迭代计算的示意图
9
任务:求解斐波那契数列
4.2 数值计算
活动2 用Python求解数列
def fib(n):
#迭代求Fibonacci数列
f2=f1=1
for i in range(3,n+1):
f1,f2=f2,f1+f2
return f2
n=int(input('输入需要计算的月份数:'))
print('兔子总对数为:',fib(n))
input("运行完毕,请按回车键退出...")
上机实践2
10
知识探究——迭代法
有三个关键步骤:
(1)确定迭代变量,如活动2中的fl、f2;
(2)建立迭代关系式;
(3)对迭代过程进行控制,这是编写迭代程序必须考虑的问题, 不能让迭代过程无休止地重复执行下去。
利用迭代算法解决问题的步骤
11
拓展练习
尝试用辗转相除法求解两个正整数的最大公约数。
辗转相除法:用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。
12
拓展练习
尝试用辗转相除法求解两个正整数的最大公约数。
step1: 将两数中大的那个数放在m中,小的放在n中。
step2: 求出m被n除后的余数r。
step3: 若余数为0则执行步骤(7),否则执行步骤(4)。
step4: 把除数作为新的被除数;