APP下载

浅议误差理论在数值分析课程教学中的重要性

2014-09-01黄陈思,刘蓉

教育教学论坛 2014年14期
关键词:数值分析教学

黄陈思,刘蓉

摘要:数值分析的特点是抽象和严格的演绎,思维逻辑严密,讨论的核心问题是误差。在课程讲授中,误差分析理所当然应该成为不可避免的一个重要环节。本文从几个方面对课堂教学中强调误差分析的重要性进行了阐述,并举了一系列的例子进行了论证。

关键词:误差理论;数值分析;教学

中图分类号:G642.4 文献标志码:A 文章编号:1674-9324(2014)14-0118-02

计算机与数学的有机结合形成了“科学计算”的研究方法,它的核心内容是以现代化的计算机以及数学软件为工具,以数学模型为基础进行模拟研究[1]。一个实际问题在计算机上的解决需要转化成数学模型,当数学模型不能够得到精确解时,通常要用数值方法求它的近似解,而后再编制成程序在计算机上运行。显然,这些计算方法是数值分析课程研究的对象,只有构造出好的算法才能有效的在计算机上解决数学问题。然而,构造计算方法的手段是近似,研究并分析算法的核心问题则是近似对计算结果的影响。随着授课经验的积累以及对这门课程了解的深入,作者越来越觉得误差的讲解应该成为整门课程讲授的重点和核心。实际问题通过建立数学模型在计算机上得到解决,每一步都会产生误差。只有一个对误差进行详尽分析的算法才能称之为一个好的算法。下面就误差对算法的影响以及算法的误差分析等几个方面进行阐述,从中可以看出将误差分析在课堂讲授中应当特别作为重点是很有实际意义的。

一、算法的稳定性

用一个算法进行计算,由于初始数据误差在计算中传播使计算结果误差增长很快,就是数值不稳定的[2]。在大部分数值计算教材中都能见到这样一个关于描述算法稳定性的例子,式(1)与式(2)两个公式是相互等价的,但是由于初始数据带有误差,计算结果就迥然不同。

In=I-nIn-1 n=2,3,L,7 (1)

In-1=■-■In-1 n=7,6,L,3,2 (2)

当初始数据带有误差时,式(1)的计算过程使得这个误差急剧扩散,速度为n!,假设初始数据I0的误差为δ,则当n=7时I7的误差为δ的5040倍。而式(2)却能够在计算的过程中逐步地缩小误差,控制误差的传播。这就是算法的稳定性问题。在常微分方程初值问题的数值解法中也会发生这样的问题。例如,分别用欧拉显、隐式格式和改进的欧拉格式计算初值问题y'(x)=-30y(x)y(0)=1在区间[0,0.5]上的数值解。结果如图1所示:

注意到在这个结果里,局部截断误差为2阶的改进欧拉法在h=0.3,0.4,0.5的值相对于局部截断误差为1阶的欧拉隐式公式在这些点的计算结果更加偏离了精确解。这是由于欧拉隐式公式的稳定性高于改进欧拉法。从这一方面也能够看出算法的稳定性问题在实际计算中的重要性。理论上的截断误差并不能正确地反映一个算法计算结果的好坏。

二、病态问题

关于病态问题可以用一句“失之毫厘,谬以千里”来加以描述,在病态问题中,初值数据的微小偏差会引起结果的巨大差异。因此,在讲述课程绪论的时候也提到了问题的病态性。例如线性方程组1 11 1.0001x1x2=23 (3)

它的精确解为x=(2,0)T。若常数项做微小变化,即考察线性方程组1 11 1.0001x1x2= 22.0001 (4)

此时它的精确解为x=(1,1)T,从这个例子可以看到常数项的第2个分量只有万分之一的微小变化,然而方程组的解却变化很大。这样的方程组就称之为病态方程组。病态方程组的影响在《数值分析》的几个章节中都是很有必要在课堂中加以解释的。因此,必须要去寻求避免出现此类问题的解决方案。在这种情形下可以引导学生进行思考,既要保持原有的解法,又要避免求解线性方程组。解决的方法就是以正交的函数族代替φi(x),用正交多项式做最小二乘曲线拟合,系数矩阵变为对角矩阵,就可以避免利用线性方程组,而能够直接计算出系数。同样的,在插值法的推导以及数值微积分中,由于考虑到求解线性方程组可能会遇到病态方程组或者计算过程比较繁杂,都需要另外寻求解决方案,由此可见,清晰而明了地提醒学生时时需要注意到求解方程组的病态问题,才能够尽可能地避免在实际求解中实际值偏离理论值的情况,这一点,无论是在算法的讲解还是在实际问题的求解中都是不可避免的。

三、利用误差创造新算法

误差的分析既可以对算法的优劣进行判断,还可以利用误差来创造新的算法。例如,在数值微积分这一章节中的推导自适应的积分方法,复合梯形公式的余项公式中涉及到f(x)在η点的二阶导数f"(η),在实际中由于f(x)复杂或未知,难以通过余项公式来估计误差,而需要改变思路。也就是误差的估计不能使用余项公式,但观察余项公式后,可以引导学生考虑利用区间折半以后的复合梯形公式的余项中f"(η)与折半前复合梯形公式余项中的f"(ξ)近似相等,得到如下的式子:■=■≈■ (5)

对上式进行整理后得到:I-T2n≈■(T2n-Tn)从而只需要折半前后积分值的差的绝对值达到规定的误差限,就可以停止折半的计算过程,最后一次算得的积分值就是满足精度要求的近似值。另一方面,从式(5)还能推导出I≈■T2n-■Tn,仔细比对之后发现的计算结果恰好是复合Simpson公式,也就是说复合Simpson公式可以由复合梯形公式计算得到,而在已知点一样的情况下,复合Simpson公式的计算精度明显高于复合梯形公式,因此,可以用这种方法加速复合梯形公式的收敛。以此类推,在同样的原理下,复合Simpson公式可以加速为复合Cotes公式,进一步加速为最终的Romberg公式。而这个有用公式的得到,就是源自对误差的分析。

综上所述,算法的误差分析与课程每一个环节都息息相关,在讲解算法的时候都很有必要提醒学生时刻注意到对误差进行分析,如果脱离了误差分析,而仅仅在于讲授算法,就失去了算法应用于实际的意义。本文并没有对算法的误差分析方法进行讨论,而是从误差分析的另一个角度剖析了这个内容在课程讲授中的重要性,引导学生在学习过程中要注意实际问题中的舍入误差带来的影响和理论误差公式的应用。通过强调误差分析,能够在一定程度上提升学生对待问题的严谨性与探索性,使得数值分析课程的教与学更加丰富,更加贴近工程计算的实质。

参考文献:

[1]白峰杉.数值计算引论第2版[M].高等教育出版社,2010.

[2]李庆扬,等.数值分析第5版[M].清华大学出版社,2008.endprint

摘要:数值分析的特点是抽象和严格的演绎,思维逻辑严密,讨论的核心问题是误差。在课程讲授中,误差分析理所当然应该成为不可避免的一个重要环节。本文从几个方面对课堂教学中强调误差分析的重要性进行了阐述,并举了一系列的例子进行了论证。

关键词:误差理论;数值分析;教学

中图分类号:G642.4 文献标志码:A 文章编号:1674-9324(2014)14-0118-02

计算机与数学的有机结合形成了“科学计算”的研究方法,它的核心内容是以现代化的计算机以及数学软件为工具,以数学模型为基础进行模拟研究[1]。一个实际问题在计算机上的解决需要转化成数学模型,当数学模型不能够得到精确解时,通常要用数值方法求它的近似解,而后再编制成程序在计算机上运行。显然,这些计算方法是数值分析课程研究的对象,只有构造出好的算法才能有效的在计算机上解决数学问题。然而,构造计算方法的手段是近似,研究并分析算法的核心问题则是近似对计算结果的影响。随着授课经验的积累以及对这门课程了解的深入,作者越来越觉得误差的讲解应该成为整门课程讲授的重点和核心。实际问题通过建立数学模型在计算机上得到解决,每一步都会产生误差。只有一个对误差进行详尽分析的算法才能称之为一个好的算法。下面就误差对算法的影响以及算法的误差分析等几个方面进行阐述,从中可以看出将误差分析在课堂讲授中应当特别作为重点是很有实际意义的。

一、算法的稳定性

用一个算法进行计算,由于初始数据误差在计算中传播使计算结果误差增长很快,就是数值不稳定的[2]。在大部分数值计算教材中都能见到这样一个关于描述算法稳定性的例子,式(1)与式(2)两个公式是相互等价的,但是由于初始数据带有误差,计算结果就迥然不同。

In=I-nIn-1 n=2,3,L,7 (1)

In-1=■-■In-1 n=7,6,L,3,2 (2)

当初始数据带有误差时,式(1)的计算过程使得这个误差急剧扩散,速度为n!,假设初始数据I0的误差为δ,则当n=7时I7的误差为δ的5040倍。而式(2)却能够在计算的过程中逐步地缩小误差,控制误差的传播。这就是算法的稳定性问题。在常微分方程初值问题的数值解法中也会发生这样的问题。例如,分别用欧拉显、隐式格式和改进的欧拉格式计算初值问题y'(x)=-30y(x)y(0)=1在区间[0,0.5]上的数值解。结果如图1所示:

注意到在这个结果里,局部截断误差为2阶的改进欧拉法在h=0.3,0.4,0.5的值相对于局部截断误差为1阶的欧拉隐式公式在这些点的计算结果更加偏离了精确解。这是由于欧拉隐式公式的稳定性高于改进欧拉法。从这一方面也能够看出算法的稳定性问题在实际计算中的重要性。理论上的截断误差并不能正确地反映一个算法计算结果的好坏。

二、病态问题

关于病态问题可以用一句“失之毫厘,谬以千里”来加以描述,在病态问题中,初值数据的微小偏差会引起结果的巨大差异。因此,在讲述课程绪论的时候也提到了问题的病态性。例如线性方程组1 11 1.0001x1x2=23 (3)

它的精确解为x=(2,0)T。若常数项做微小变化,即考察线性方程组1 11 1.0001x1x2= 22.0001 (4)

此时它的精确解为x=(1,1)T,从这个例子可以看到常数项的第2个分量只有万分之一的微小变化,然而方程组的解却变化很大。这样的方程组就称之为病态方程组。病态方程组的影响在《数值分析》的几个章节中都是很有必要在课堂中加以解释的。因此,必须要去寻求避免出现此类问题的解决方案。在这种情形下可以引导学生进行思考,既要保持原有的解法,又要避免求解线性方程组。解决的方法就是以正交的函数族代替φi(x),用正交多项式做最小二乘曲线拟合,系数矩阵变为对角矩阵,就可以避免利用线性方程组,而能够直接计算出系数。同样的,在插值法的推导以及数值微积分中,由于考虑到求解线性方程组可能会遇到病态方程组或者计算过程比较繁杂,都需要另外寻求解决方案,由此可见,清晰而明了地提醒学生时时需要注意到求解方程组的病态问题,才能够尽可能地避免在实际求解中实际值偏离理论值的情况,这一点,无论是在算法的讲解还是在实际问题的求解中都是不可避免的。

三、利用误差创造新算法

误差的分析既可以对算法的优劣进行判断,还可以利用误差来创造新的算法。例如,在数值微积分这一章节中的推导自适应的积分方法,复合梯形公式的余项公式中涉及到f(x)在η点的二阶导数f"(η),在实际中由于f(x)复杂或未知,难以通过余项公式来估计误差,而需要改变思路。也就是误差的估计不能使用余项公式,但观察余项公式后,可以引导学生考虑利用区间折半以后的复合梯形公式的余项中f"(η)与折半前复合梯形公式余项中的f"(ξ)近似相等,得到如下的式子:■=■≈■ (5)

对上式进行整理后得到:I-T2n≈■(T2n-Tn)从而只需要折半前后积分值的差的绝对值达到规定的误差限,就可以停止折半的计算过程,最后一次算得的积分值就是满足精度要求的近似值。另一方面,从式(5)还能推导出I≈■T2n-■Tn,仔细比对之后发现的计算结果恰好是复合Simpson公式,也就是说复合Simpson公式可以由复合梯形公式计算得到,而在已知点一样的情况下,复合Simpson公式的计算精度明显高于复合梯形公式,因此,可以用这种方法加速复合梯形公式的收敛。以此类推,在同样的原理下,复合Simpson公式可以加速为复合Cotes公式,进一步加速为最终的Romberg公式。而这个有用公式的得到,就是源自对误差的分析。

综上所述,算法的误差分析与课程每一个环节都息息相关,在讲解算法的时候都很有必要提醒学生时刻注意到对误差进行分析,如果脱离了误差分析,而仅仅在于讲授算法,就失去了算法应用于实际的意义。本文并没有对算法的误差分析方法进行讨论,而是从误差分析的另一个角度剖析了这个内容在课程讲授中的重要性,引导学生在学习过程中要注意实际问题中的舍入误差带来的影响和理论误差公式的应用。通过强调误差分析,能够在一定程度上提升学生对待问题的严谨性与探索性,使得数值分析课程的教与学更加丰富,更加贴近工程计算的实质。

参考文献:

[1]白峰杉.数值计算引论第2版[M].高等教育出版社,2010.

[2]李庆扬,等.数值分析第5版[M].清华大学出版社,2008.endprint

摘要:数值分析的特点是抽象和严格的演绎,思维逻辑严密,讨论的核心问题是误差。在课程讲授中,误差分析理所当然应该成为不可避免的一个重要环节。本文从几个方面对课堂教学中强调误差分析的重要性进行了阐述,并举了一系列的例子进行了论证。

关键词:误差理论;数值分析;教学

中图分类号:G642.4 文献标志码:A 文章编号:1674-9324(2014)14-0118-02

计算机与数学的有机结合形成了“科学计算”的研究方法,它的核心内容是以现代化的计算机以及数学软件为工具,以数学模型为基础进行模拟研究[1]。一个实际问题在计算机上的解决需要转化成数学模型,当数学模型不能够得到精确解时,通常要用数值方法求它的近似解,而后再编制成程序在计算机上运行。显然,这些计算方法是数值分析课程研究的对象,只有构造出好的算法才能有效的在计算机上解决数学问题。然而,构造计算方法的手段是近似,研究并分析算法的核心问题则是近似对计算结果的影响。随着授课经验的积累以及对这门课程了解的深入,作者越来越觉得误差的讲解应该成为整门课程讲授的重点和核心。实际问题通过建立数学模型在计算机上得到解决,每一步都会产生误差。只有一个对误差进行详尽分析的算法才能称之为一个好的算法。下面就误差对算法的影响以及算法的误差分析等几个方面进行阐述,从中可以看出将误差分析在课堂讲授中应当特别作为重点是很有实际意义的。

一、算法的稳定性

用一个算法进行计算,由于初始数据误差在计算中传播使计算结果误差增长很快,就是数值不稳定的[2]。在大部分数值计算教材中都能见到这样一个关于描述算法稳定性的例子,式(1)与式(2)两个公式是相互等价的,但是由于初始数据带有误差,计算结果就迥然不同。

In=I-nIn-1 n=2,3,L,7 (1)

In-1=■-■In-1 n=7,6,L,3,2 (2)

当初始数据带有误差时,式(1)的计算过程使得这个误差急剧扩散,速度为n!,假设初始数据I0的误差为δ,则当n=7时I7的误差为δ的5040倍。而式(2)却能够在计算的过程中逐步地缩小误差,控制误差的传播。这就是算法的稳定性问题。在常微分方程初值问题的数值解法中也会发生这样的问题。例如,分别用欧拉显、隐式格式和改进的欧拉格式计算初值问题y'(x)=-30y(x)y(0)=1在区间[0,0.5]上的数值解。结果如图1所示:

注意到在这个结果里,局部截断误差为2阶的改进欧拉法在h=0.3,0.4,0.5的值相对于局部截断误差为1阶的欧拉隐式公式在这些点的计算结果更加偏离了精确解。这是由于欧拉隐式公式的稳定性高于改进欧拉法。从这一方面也能够看出算法的稳定性问题在实际计算中的重要性。理论上的截断误差并不能正确地反映一个算法计算结果的好坏。

二、病态问题

关于病态问题可以用一句“失之毫厘,谬以千里”来加以描述,在病态问题中,初值数据的微小偏差会引起结果的巨大差异。因此,在讲述课程绪论的时候也提到了问题的病态性。例如线性方程组1 11 1.0001x1x2=23 (3)

它的精确解为x=(2,0)T。若常数项做微小变化,即考察线性方程组1 11 1.0001x1x2= 22.0001 (4)

此时它的精确解为x=(1,1)T,从这个例子可以看到常数项的第2个分量只有万分之一的微小变化,然而方程组的解却变化很大。这样的方程组就称之为病态方程组。病态方程组的影响在《数值分析》的几个章节中都是很有必要在课堂中加以解释的。因此,必须要去寻求避免出现此类问题的解决方案。在这种情形下可以引导学生进行思考,既要保持原有的解法,又要避免求解线性方程组。解决的方法就是以正交的函数族代替φi(x),用正交多项式做最小二乘曲线拟合,系数矩阵变为对角矩阵,就可以避免利用线性方程组,而能够直接计算出系数。同样的,在插值法的推导以及数值微积分中,由于考虑到求解线性方程组可能会遇到病态方程组或者计算过程比较繁杂,都需要另外寻求解决方案,由此可见,清晰而明了地提醒学生时时需要注意到求解方程组的病态问题,才能够尽可能地避免在实际求解中实际值偏离理论值的情况,这一点,无论是在算法的讲解还是在实际问题的求解中都是不可避免的。

三、利用误差创造新算法

误差的分析既可以对算法的优劣进行判断,还可以利用误差来创造新的算法。例如,在数值微积分这一章节中的推导自适应的积分方法,复合梯形公式的余项公式中涉及到f(x)在η点的二阶导数f"(η),在实际中由于f(x)复杂或未知,难以通过余项公式来估计误差,而需要改变思路。也就是误差的估计不能使用余项公式,但观察余项公式后,可以引导学生考虑利用区间折半以后的复合梯形公式的余项中f"(η)与折半前复合梯形公式余项中的f"(ξ)近似相等,得到如下的式子:■=■≈■ (5)

对上式进行整理后得到:I-T2n≈■(T2n-Tn)从而只需要折半前后积分值的差的绝对值达到规定的误差限,就可以停止折半的计算过程,最后一次算得的积分值就是满足精度要求的近似值。另一方面,从式(5)还能推导出I≈■T2n-■Tn,仔细比对之后发现的计算结果恰好是复合Simpson公式,也就是说复合Simpson公式可以由复合梯形公式计算得到,而在已知点一样的情况下,复合Simpson公式的计算精度明显高于复合梯形公式,因此,可以用这种方法加速复合梯形公式的收敛。以此类推,在同样的原理下,复合Simpson公式可以加速为复合Cotes公式,进一步加速为最终的Romberg公式。而这个有用公式的得到,就是源自对误差的分析。

综上所述,算法的误差分析与课程每一个环节都息息相关,在讲解算法的时候都很有必要提醒学生时刻注意到对误差进行分析,如果脱离了误差分析,而仅仅在于讲授算法,就失去了算法应用于实际的意义。本文并没有对算法的误差分析方法进行讨论,而是从误差分析的另一个角度剖析了这个内容在课程讲授中的重要性,引导学生在学习过程中要注意实际问题中的舍入误差带来的影响和理论误差公式的应用。通过强调误差分析,能够在一定程度上提升学生对待问题的严谨性与探索性,使得数值分析课程的教与学更加丰富,更加贴近工程计算的实质。

参考文献:

[1]白峰杉.数值计算引论第2版[M].高等教育出版社,2010.

[2]李庆扬,等.数值分析第5版[M].清华大学出版社,2008.endprint

猜你喜欢

数值分析教学
“自我诊断表”在高中数学教学中的应用
对外汉语教学中“想”和“要”的比较
压力溶腔对岩溶隧道施工安全影响的数值分析
探讨补偿回弹冲压件模具设计的方法
基于创新和应用能力的数值分析课程教学研究与实践
跨越式跳高的教学绝招
初中50米迎面接力跑教学心得