内容正文:
5.2.1 迭代
明明很喜欢研究古代历史,他最近买了
一本《三国演义》,他计划第一天看10页,
第二天看15页,第三天看20页,…,直到在
暑假把这本书看完。
迭代
迭代是重复反馈过程的活动,其目的通常是是为了使结果符合目标需求。
例如,针对某个产品的开发,可以采用迭代的方式进行。
计算机解决问题时,也经常采用这种迭代的方式,即迭代算法。它利用
计算机运算速度快、适合做重复性操作的特点,让计算机重复执行一组
指令(或一些步骤),这组指令(或这些步骤)每执行一次时,都会将
变量从原值递推出一个新值。
利用迭代算法处理问题,需要考虑以下三个方面:
①确定迭代变量。在能够用迭代算法处理的问题中,至少具有一个直接或
间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。
②建立迭代关系式。所谓迭代关系式,指如何从变量的前一个值推出其
下一个值的公式(或关系)。
③控制迭代过程。迭代过程在经过若干次重复执行以后要能结束,因此,
要设定迭代结束的条件。
例:采用迭代算法求a的平方根。
基本思路:先估测一个近似值x,然后不断令x等于x和的平均数(迭代公式为:xn+1=(xn+)(n>=0)),经过若干次迭代后,x的值将逐渐逼近a的平方根。
以求2的平方根为例,可估测一个近似值(如x0=1)作为初值,设定
前后两次求出的x的差的绝对值小于10-5。
迭代次数 xn xn+1 |xn+1-xn|
1 1 1.5 0.5
2 1.5 1.416667 0.083333
3 1.416667 1.414216 0.002451
4 1.414216 1.414214 0.000002
相应的程序及测试结果如下所示:
a=int(input(“请输入一个需要求其平方根的数:”))
x=a/2
while((abs(x+a/x)/2-x))>0.00001):
x=(x+a/x)/2
Print(a,“的平方根约为”,round((x+a/x)/2,6))
请输入一个需要求其平方根的数:2
2的平方根约为1.414214
在用迭代法求2的平方根的例子中,若将迭代变量
X的初值换为其他数值,对运行结果和迭代次数是否有影响?
若把x的值设置为0或者其他负值,则将得到错误的迭代结果。一般
情况下,应当把x的初值设置为接近于正确解的估值,这样可以得到
正确的结