理论教育 迭代算法及应用-程序设计基础(Java语言)

迭代算法及应用-程序设计基础(Java语言)

时间:2023-11-20 理论教育 版权反馈
【摘要】:迭代法也称辗转法,是使用变量的旧值递推出新值的过程。迭代与递推在算法思想上基本是一致的。使用迭代算法解决问题,需要注意以下3方面的内容。程序运行结果:3使用迭代算法,求Faibonacci序列数的前12项。程序运行结果:1 1 2 3 5 8 13 21 34 55 89 144下面介绍牛顿迭代法。这种方法一般用于解方程或者方程组,牛顿迭代法就是用于求方程或方程组近似根的一种常用的算法。使用牛顿迭代法,计算2的平方根。

迭代算法及应用-程序设计基础(Java语言)

迭代法也称辗转法,是使用变量的旧值递推出新值的过程。迭代算法通过计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。迭代与递推在算法思想上基本是一致的。

使用迭代算法解决问题,需要注意以下3方面的内容。

1)确定迭代变量:在可以用迭代算法解决的问题中,至少存在一个直接或间接的不断由旧值递推出新值的变量,这个变量就是迭代变量。

2)建立迭代关系式:迭代关系式是指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用顺推或逆推的方法来完成。

3)对迭代过程进行控制:在合适的时候结束迭代过程,不能让迭代过程无休止地重复执行下去。迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,通过一个固定次数的循环来实现对迭代过程的控制;另一种是所需的迭代次数无法确定。需要根据问题要求,确定结束迭代过程的条件。

【例9-7】使用欧几里得迭代算法,求两个整数ab的最大公约数。

程序思路:定理gcd(a,b)=gcd(b,a%b),即整数a,b的最大公约数与b,a%b最大公约数是相同的。欧几里得算法就是根据这个定理,进行辗转相除法。程序上反复进行迭代计算,直到余数等于0为止。

例如:27,15两个数,则有15,27%15→15,12→12,15%12→12,3→3,12%3→3,0;余数为0,得出最大公约数3。

程序运行结果:

3

【例9-8】使用迭代算法,求Faibonacci序列数的前12项。

程序思路:Faibonacci序列数,有f(i)=f(i-2)+f(i-1),第i项与第i-1项和第i-2项形成迭代关系。求出当前项x3=x2+x1,进入下一项后,用x1迭代前一项的x2,用x2迭代当前项的x3。迭代次数为12。

程序运行结果:

1 1 2 3 5 8 13 21 34 55 89 144(www.daowen.com)

下面介绍牛顿迭代法。

迭代法可以用来求解方程。这种方法通过对数值进行分析,先确定一个初始近似值作为预估的解,由此预估值出发继续迭代寻找更为近似的解来得到问题最终的解。这种方法一般用于解方程或者方程组,牛顿迭代法就是用于求方程或方程组近似根的一种常用的算法。

牛顿迭代公式为:978-7-111-34450-6-Chapter09-16.jpg

牛顿迭代法求解释方程fx)=0的根的步骤是:

1)设一初值x0。

2)根据迭代公式x=x0-f(x0)/f′(x0)计算出下一个x。

3)用刚计算出的x取代上一个x0值,再用迭代公式计算新的x,直至两次计算出的x值的差的绝对值x-x0不超过指定的误差值e为止。

【例9-9】使用牛顿迭代法,计算2的平方根。要求精度为10-10

程序思路:求解2的平方根,可以设978-7-111-34450-6-Chapter09-17.jpg,即x2-2=0,则方程为fx)=x2-2;求fx)的导数f′x)=2x

所以,迭代公式为x=x0-f(x0)/f′(x0)=1/2*(x0+2/x0)。

程序运行结果:

1.4142135623746899

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈