内容正文:
4.2 数值计算(第2课时)
【教学目标】
了解迭代法的含义,并尝试用牛顿迭代法解决实际问题。
【教学重点】
了解数值类算法在实际问题解决时的常用方法,如解析法和迭代法。
【教学难点】
理解迭代法的含义,并能够用牛顿迭代法求解一元多次方程。
斐波那契在《计算之书》中提出了一个有趣的兔子问题:假设一对兔子每个月可以生一对小兔子,一对兔子出生后第2个月就开始生小兔子。则一对兔子一年内能繁殖成多少对?10年呢?
活动一:用WPS求解数列
解析:
兔子数量图
从第3个月起,每个月大兔子的对数等于上个月大兔子与小兔子的对数之和,每个月小兔子的对数等于上个月大兔子的对数。
使用电子表格求解为:
当进行到74月时,由于数据范围及表示精度的问题,导致结果出错:(如下图)
活动二:用Python求解数列
第1个月和第2个月的兔子的对数之和为第3个月的兔子对数,第2个月和第3个月的兔子对数之和为第4个月的兔子对数……,每个月的兔子对数是前两个月的兔子对数之和,又同时作为下一个月兔子对数的加数。这种重复反馈的过程称为迭代。
迭代法也称辗转法,是用计算机解决问题的一种基本方法。迭代通常是为了接近并达到抽需的目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。
迭代计算可以用下列关系图来表示:
Python程序代码如下:
def fib(n):
#迭代求Fibonacci数列
f2=f1=1 #第1个月、第2个月初始值的设定[来源:Zxxk.Com]
for i in range(3,n+1): #从第3个月至第n个月依次计算
f1,f2=f2,f1+f2
return f2
n=int(input('输入需要计算的月份数:'))
print('兔子总对数为:',fib(n)) #输出最终值
input("运行完毕,请按回车键退出...")
程序运行结果:
输入需要计算的月份数:74
兔子总对数为:1304969544928657[来源:学+科+网]
练一练:用迭代法求解x5+x4+x-3=0
算法步骤为:
1.选取x1=0作为方程的初始解(x)应选取在解附近,这个可以通过观察函数图像得到);
2.新解,其中f(x1)= x15+x14+x1-3,f'(x1)=5*x14+4*