4.6.2  牛顿迭代法

4.6.2 牛顿迭代法

【例4-26】用牛顿迭代法求a的平方根。迭代公式

978-7-111-49659-5-Chapter04-225.jpg

精度要求:xn+1与xn的绝对值小于0.00001。

方法描述:

用户输入a,估算a的平方根,一般估算x0为a/2,再根据x0和a代入公式计算x1,然后再用x1和a计算x2,其余类推。

“三步法”原则分析如下。

978-7-111-49659-5-Chapter04-226.jpg做什么

1)用户输入a,所以窗体上需要一个文本框。

2)一个“计算”按钮。

978-7-111-49659-5-Chapter04-227.jpg怎么做

通过分析不难得出,此问题的特点如下。

运算迭代次数是无法预知的,公式中用到了x0,x1,…,xn+1,但是在程序中是不能这样引用的。因为在程序设计代码中没有下标的概念。并且作为程序的循环结构,循环体内变量名是不能改变的。循环体的特点是采用相同的变量实现程序的循环,在循环过程中通过不断修改变量中的数据来实现一个数列表示,所以循环体内是不能用x0,x1,…,xn+1来表示的。其实整个迭代公式计算过程中只用到了3个变量xn+1、xn和a,与xn前面的数据无关,这些数据不需要保留。如果计算精度不够,只是用xn+1替换xn,然后重新计算一个xn+1。所以用x1表示xn+1,用x0表示xn

步骤描述如下。

1)读取用户输入的数据,放入变量a中。

2)初始化x0为a/2。

3)通过公式计算x1。

4)计算x1与x0的绝对值,如果绝对值大于0.00001,则执行第5)步,否则执行第8)步。

5)用x1替换x0。

6)通过公式计算x1。

7)返回第4)步。

8)输出a的平方根x1。

978-7-111-49659-5-Chapter04-228.jpg实现

实现代码如图4-35所示。

978-7-111-49659-5-Chapter04-229.jpg

图4-35 计算平方根

代码中

978-7-111-49659-5-Chapter04-230.jpg

能否改为

978-7-111-49659-5-Chapter04-231.jpg

请思考此问题。

下面是采用其他结构代码。

●前测型直到型结构:

978-7-111-49659-5-Chapter04-232.jpg

采用后测型当型结构和后测型直到型结构也能够实现,但不是最佳的,所以这里就不列出了。

●While语句实现:

978-7-111-49659-5-Chapter04-233.jpg

978-7-111-49659-5-Chapter04-234.jpg