循环程序教学案例设计及分析

时间:2022-05-16 07:28:04

循环程序教学案例设计及分析

【摘 要】通过拓展数值计算中采用迭代法求解整数2的二次方根的实例,进一步分析了求解任一个正数p的m次( 且为自然数)方根的方法及理论基础,并采用C程序设计语言完成相应的计算。本教学案例能够有效地培养学生的数学思维能力和循环程序设计能力。

【关键词】循环程序设计;迭代法;高次方根

循环结构是结构化程序设计中三大基本结构之一,也是计算机程序设计语言教学的重点和难点之一[1]。循环结构通过重复执行一组操作,能够把复杂的、不易直接求解的问题变换为操作简单,易于处理的迭代求解问题。这也体现了解决数学问题时常常采用的化归思想。

本文基于数值计算中采用迭代法求解二次方根的实例,对相应的问题和求解方法进行拓展,并通过理论分析和C语言编程实现,让学生从深度和广度上对迭代方法及其应用有更加深刻的理解和认识。

1、基本案例

为了求解 的值(2的算术平方根),数值计算[2]中采用经典的迭代方法:

令x= ,则有,

. (1)

由式(1)知,x的值可通过迭代方式求解,即

. (2)

经过多次迭代,可以计算出 的值。

计算科学的基本问题是能行性问题[3]。上述迭代方法具有可行性吗?分析如下:

首先,式(2)中x的计算需要一个初值,通过不断地迭代更新x的值。为了便于处理,不妨设初值为任意的正值。

情况1:当初值0

. (3)

不等式(3)说明,当0

进一步地,由代数不等式 知,

. (4)

等号成立当且仅当x= 。这说明小于 的初值经一次迭代后,产生的新x必然大于 。

情况2:当初值0 时,由式(1)的推导过程知,

. (5)

不等式(5)说明,当x> 时,式(2)的计算过程,即由 更新x,会产生比初值更小的新的x值。再由式(4)知,当x> 时,更新过程产生的x值不会小于 ;由于新的x值在逐渐缩小,说明最终会收敛至 。

上述分析说明,当初值0 时,更新过程使得x值逐渐变小,最终收敛于 。

上述过程也可由图1进行可视化证明。当初值x< 时,由于 。假设 ,通过移项知,须 。由图1知,此时曲线y=1/x的值大于直线y=x/2的上值。所以,假设成立,且产生了大于 的新值。当初值x> 时,类似的推导知,假设 ,须 。由图1知,假设亦成立,且更新过程x总是不小于 。当x= 时,1/x+x/2=1/ + /2= ,得到最终的解x。证毕。

图1 直线y=x/2和曲线y=1/x.

上述的证明过程说明,式(2)的迭代方法具有能行性,能够计算 的值。

事实上,对于任意的正数p,令x= ,由式(1)的推导过程知,

. (6)

通过与求解 类似的推导过程知,式(7)能够计算任意正数p的算术平方根,方法同样具有能行性。

. (7)

教学意义:本节能够让学生加深理解由循环结构形成的迭代方法。采用迭代方法求解复杂的问题时,通过把问题分解为若干步骤,每步完成一个相对简单的问题。由于这种化归思想广泛存在于数值计算或者科学计算之中,通过引导,能够加深学生对迭代法的理解。

2、案例拓展

进一步地,对任意正数p的任意m( 且为自然数)次方根,能够通过上述方式求解 吗?

首先,可考虑m=3时的情况。令x= ,则有x3=p。与式(1)类似,

. (8)

如何对式(8)进行类似于式(1)的改造,且使得产生的更新过程会收敛至 ,是构造相应迭代过程的关键。

事实上,代数不等式 是式(9)的特例,

. (9)

求解 的迭代过程最终会收敛到 本身,这是由于式(9)(n=2时)中不等式右端产生的最小值正好为 (也可参考图1)。因此,在构造求解 的过程中,式(9)的右端需要直接产生 。由式(9)知,此时需要构造式(10)的形式,

. (10)

进一步地,由式(8)知,

. (11)

显然,

. (12)

所以,式(13)可以用于迭代求解 ,

. (13)

相应的收敛性证明与 的情况类似,不再累赘。

进而,对任意不小于2的自然数m,对应的问题是求解x= ,则有xm=p。与式(1)和式(8)类似,

. (14)

由不等式(9)知,式(14)右端,即 ,具有最小值 。在实际的更新过程中,可采用式(15)的简化形式,

. (15)

式(15)的收敛性证明如下:

情况1:当初值0

. (16)

说明经一次迭代更新,产生的新值x大于 。

情况2:当初值0 时,由式(14),(15)和式(16)知, ,说明此时由式(15)产生的新值x在逐渐变小,但不会小于 。该更新过程使得x趋向于 ,当x= 时,式(15)的迭代过程收敛。证毕。

上述推导过程说明,式(15)能够用于迭代计算 。而且,平方根和立方根的求解是m=2和m=3时的特例。

教学意义:把求解平方根的问题,泛化到求解任意高次方根的问题,有助于引导学生深化思维。上节和本节的收敛性证明也能够锻炼学生运用数学知识解决问题的能力,提高理论水平;这一理论推导过程,也可以让学生更加清楚上述迭代过程能够求解高次方根的原因,有助于加深对计算科学中可行性问题的认识;本案例通过最基本的加减乘除运算解决了求高次方根的问题,从运算角度同样体现了化归思想;而且,该案例能够让学生更好地理解和运用循环结构解决实际问题。

在实际教学中,把求解平方根和立方根的情况推广至任意高次方根的问题,可以作为课外作业,让学生自行完成,以培养数学思维和动手能力。

3、程序实现

基于对 , 和 的求解说明,本节给出相应的C语言算法(程序)描述。

求根的过程,不管p值大于1,或者小于1,根总有向1靠近的趋势。这说明x的值可以简单地初始化为1。为了加速程序的运行,我们也可以考虑其它的初始化方法。如,论文[4]给出了初始化的一个上界。

教学意义:通过程序实现,对于任意的正数p,Program 1 和Program 2分别能够求解平方根和立方根,Program 3能够直接求解任意的高次方根。对问题的深化思考有助于拓展学生的视野,激发学生的学习兴趣,培养通过编程解决问题的能力和成就感。

4、小结

本文把迭代法求解平方根的案例,拓展到求解任意正数的不小于2的正整数次方根问题,分析了迭代求解的理论基础,证明了迭代方法的收敛性,最终给出了C语言程序代码。本文设计的教学案例在提升学生的学习能力,拓展学生的知识面,丰富教学内容方面具有多个优点:1)理解和掌握循环结构,2) 理解和运用数学不等式求解极值问题,3)锻炼数学思维能力,培养科研型人才,4) 加深理解计算科学中的能行性问题。

参考文献:

[1] 孙英,徐顺琼,李兴美. C 语言中循环结构程序课的教学设计与探讨.计算机教育 [J], 2009,12:186-187.

[2] F. 施依德[美]著, 罗亮生 包雪松 王国英 译. 数值分析 [M], 第二版. 第1章第1页. 北京:科学出版社, 2002.

[3] 赵致琢.计算科学导论 [M]. 第3章第69页. 北京: 科学出版社, 2004.

[4] 刘红超, 陈惠汝.用迭代法计算预定精确度下的算术平方根 [J]. 黄冈师范学院学报, 2004, 24(3): 24-26.

基金项目:

中国博士后科学基金(2011M501189)。

作者简介:

朱真峰(1980-),男,河南南阳人,讲师,博士,主要研究方向为机器学习、模式识别、计算机视觉。

上一篇:在语文教学中如何培养小学生的创新意识 下一篇:用爱栽培——让“顽童”悄悄地蜕变