简单迭代法流程图
- 格式:docx
- 大小:16.18 KB
- 文档页数:2
迭代法迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。
迭代法又分为精确迭代和近似迭代。
“二分法”和“牛顿迭代法”属于近似迭代法。
迭代算法是用计算机解决问题的一种基本方法。
它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。
利用迭代算法解决问题,需要做好以下三个方面的工作:一、确定迭代变量。
在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。
二、建立迭代关系式。
所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。
迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。
三、对迭代过程进行控制。
在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。
不能让迭代过程无休止地重复执行下去。
迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。
对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件。
例 1 :一个饲养场引进一只刚出生的新品种兔子,这种兔子从出生的下一个月开始,每月新生一只兔子,新生的兔子也如此繁殖。
如果所有的兔子都不死去,问到第12 个月时,该饲养场共有兔子多少只?分析:这是一个典型的递推问题。
我们不妨假设第 1 个月时兔子的只数为u 1 ,第 2 个月时兔子的只数为u 2 ,第 3 个月时兔子的只数为u 3 ,……根据题意,“这种兔子从出生的下一个月开始,每月新生一只兔子”,则有u 1 = 1 ,u 2 =u 1 +u 1 × 1 = 2 ,u 3 =u 2 +u 2 × 1 =4 ,……根据这个规律,可以归纳出下面的递推公式:u n =u n - 1 × 2 (n ≥ 2)对应u n 和u n - 1 ,定义两个迭代变量y 和x ,可将上面的递推公式转换成如下迭代关系:y=x*2x=y让计算机对这个迭代关系重复执行11 次,就可以算出第12 个月时的兔子数。
§4.1 引 言绪论中讲到方程求根得二分法,但二分法收敛速度慢,有必要掌握新的方法。
§4.1.1迭代法的思想迭代法是一种逐次逼近法,使用某个固定公式(迭代公式)反复校正,逐步精确,直到满足精度。
迭代法求根分两步:1) 猜测初值 2)迭代如求解初值问题00')(),,(y x y y x f y ==用梯形公式111[(,)(,)2n n n n n n h y y f x y f x y +++≈++ (1) 看作关于1+n y 的函数方程,按欧拉公式提供猜测值),()0(1n n n n y x hf y y +=+,代入(1)得)],(),([2)0(11)1(1+++++=n n n n n n y x f y x f h y y 若)1(1+n y 仍不满足要求,则将它代入(1)式,继续得到校正值)2(1+n y ,写成迭代公式 )],(),([2)(11)1(1k n n n n n k n y x f y x f h y y ++++++= (2) 一般地,为了求一元非线性方程0)(=x f 的根,可以先将其转换为如下的等价形式()x x ϕ= (3)式(3)中连续函数()x ϕ称为迭代函数,其右端含未知数,不能直接求解。
先用根的某个猜测值0x 代入(3),构造迭代公式:()k k x x ϕ=+1。
如果迭代值k x 有极限,则称迭代收敛,极限值k k x x ∞→=lim *就是方程(3)的根。
几何意义P127图4-1为使迭代法有效,必须保证它的收敛行,()x ϕ满足什么条件,才能保证收敛?以最简单的线性迭代()d kx x +=ϕ,可以看出收敛的充分必要条件()1'<=k x ϕ。
几何意义P127图4-2,3,4,5。
§4.1.3 压缩映像原理设*x 是方程()x x ϕ=的根,则由微分中值定理 ))(()()(*'*1*k k k x x x x x x -=-=-+εϕϕϕ,如果存在10<≤L ,使得],[b a x ∈有()k k x x L x x L x -≤-⇒≤+*1*'ϕ,则迭代误差0e L e k k ≤,由于10<≤L ,故0→k e ,即迭代收敛。
迭代法—搜狗百科例1 :一个饲养场引进一只刚出生的新品种兔子,这种兔子从出生的下一个月开始,每月新生一只兔子,新生的兔子也如此繁殖。
如果所有的兔子都不死去,问到第 12 个月时,该饲养场共有兔子多少只?分析:这是一个典型的递推问题。
我们不妨假设第1 个月时兔子的只数为 u 1 ,第 2 个月时兔子的只数为 u 2 ,第 3 个月时兔子的只数为 u 3 ,……根据题意,“这种兔子从出生的下一个月开始,每月新生一只兔子”,则有u 1 = 1 ,u 2 = u 1 + u 1 × 1 = 2 ,u 3 = u 2 + u 2 × 1 = 4 ,……根据这个规律,可以归纳出下面的递推公式:u n = u(n - 1)× 2 (n ≥ 2)对应 u n 和 u(n - 1),定义两个迭代变量 y 和 x ,可将上面的递推公式转换成如下迭代关系:y=x*2x=y让计算机对这个迭代关系重复执行 11 次,就可以算出第 12 个月时的兔子数。
参考程序如下:clsx=1for i=2 to 12y=x*2x=ynext iprint yend例 2 :阿米巴用简单分裂的方式繁殖,它每分裂一次要用 3 分钟。
将若干个阿米巴放在一个盛满营养参液的容器内, 45 分钟后容器内充满了阿米巴。
已知容器最多可以装阿米巴220,220个。
试问,开始的时候往容器内放了多少个阿米巴?请编程序算出。
分析:根据题意,阿米巴每3 分钟分裂一次,那么从开始的时候将阿米巴放入容器里面,到45 分钟后充满容器,需要分裂45/3=15 次。
而“容器最多可以装阿米巴2^ 20 个”,即阿米巴分裂15 次以后得到的个数是 2^20。
题目要求我们计算分裂之前的阿米巴数,不妨使用倒推的方法,从第 15 次分裂之后的 2^20 个,倒推出第 15 次分裂之前(即第 14 次分裂之后)的个数,再进一步倒推出第 13 次分裂之后、第 12 次分裂之后、……第 1 次分裂之前的个数。