黃陳思,劉蓉
摘要:數(shù)值分析的特點是抽象和嚴格的演繹,思維邏輯嚴密,討論的核心問題是誤差。在課程講授中,誤差分析理所當然應該成為不可避免的一個重要環(huán)節(jié)。本文從幾個方面對課堂教學中強調(diào)誤差分析的重要性進行了闡述,并舉了一系列的例子進行了論證。
關鍵詞:誤差理論;數(shù)值分析;教學
中圖分類號:G642.4 文獻標志碼:A 文章編號:1674-9324(2014)14-0118-02
計算機與數(shù)學的有機結(jié)合形成了“科學計算”的研究方法,它的核心內(nèi)容是以現(xiàn)代化的計算機以及數(shù)學軟件為工具,以數(shù)學模型為基礎進行模擬研究[1]。一個實際問題在計算機上的解決需要轉(zhuǎn)化成數(shù)學模型,當數(shù)學模型不能夠得到精確解時,通常要用數(shù)值方法求它的近似解,而后再編制成程序在計算機上運行。顯然,這些計算方法是數(shù)值分析課程研究的對象,只有構(gòu)造出好的算法才能有效的在計算機上解決數(shù)學問題。然而,構(gòu)造計算方法的手段是近似,研究并分析算法的核心問題則是近似對計算結(jié)果的影響。隨著授課經(jīng)驗的積累以及對這門課程了解的深入,作者越來越覺得誤差的講解應該成為整門課程講授的重點和核心。實際問題通過建立數(shù)學模型在計算機上得到解決,每一步都會產(chǎn)生誤差。只有一個對誤差進行詳盡分析的算法才能稱之為一個好的算法。下面就誤差對算法的影響以及算法的誤差分析等幾個方面進行闡述,從中可以看出將誤差分析在課堂講授中應當特別作為重點是很有實際意義的。
一、算法的穩(wěn)定性
用一個算法進行計算,由于初始數(shù)據(jù)誤差在計算中傳播使計算結(jié)果誤差增長很快,就是數(shù)值不穩(wěn)定的[2]。在大部分數(shù)值計算教材中都能見到這樣一個關于描述算法穩(wěn)定性的例子,式(1)與式(2)兩個公式是相互等價的,但是由于初始數(shù)據(jù)帶有誤差,計算結(jié)果就迥然不同。
In=I-nIn-1 n=2,3,L,7 (1)
In-1=■-■In-1 n=7,6,L,3,2 (2)
當初始數(shù)據(jù)帶有誤差時,式(1)的計算過程使得這個誤差急劇擴散,速度為n!,假設初始數(shù)據(jù)I0的誤差為δ,則當n=7時I7的誤差為δ的5040倍。而式(2)卻能夠在計算的過程中逐步地縮小誤差,控制誤差的傳播。這就是算法的穩(wěn)定性問題。在常微分方程初值問題的數(shù)值解法中也會發(fā)生這樣的問題。例如,分別用歐拉顯、隱式格式和改進的歐拉格式計算初值問題y'(x)=-30y(x)y(0)=1在區(qū)間[0,0.5]上的數(shù)值解。結(jié)果如圖1所示:
注意到在這個結(jié)果里,局部截斷誤差為2階的改進歐拉法在h=0.3,0.4,0.5的值相對于局部截斷誤差為1階的歐拉隱式公式在這些點的計算結(jié)果更加偏離了精確解。這是由于歐拉隱式公式的穩(wěn)定性高于改進歐拉法。從這一方面也能夠看出算法的穩(wěn)定性問題在實際計算中的重要性。理論上的截斷誤差并不能正確地反映一個算法計算結(jié)果的好壞。
二、病態(tài)問題
關于病態(tài)問題可以用一句“失之毫厘,謬以千里”來加以描述,在病態(tài)問題中,初值數(shù)據(jù)的微小偏差會引起結(jié)果的巨大差異。因此,在講述課程緒論的時候也提到了問題的病態(tài)性。例如線性方程組1 11 1.0001x1x2=23 (3)
它的精確解為x=(2,0)T。若常數(shù)項做微小變化,即考察線性方程組1 11 1.0001x1x2= 22.0001 (4)
此時它的精確解為x=(1,1)T,從這個例子可以看到常數(shù)項的第2個分量只有萬分之一的微小變化,然而方程組的解卻變化很大。這樣的方程組就稱之為病態(tài)方程組。病態(tài)方程組的影響在《數(shù)值分析》的幾個章節(jié)中都是很有必要在課堂中加以解釋的。因此,必須要去尋求避免出現(xiàn)此類問題的解決方案。在這種情形下可以引導學生進行思考,既要保持原有的解法,又要避免求解線性方程組。解決的方法就是以正交的函數(shù)族代替φi(x),用正交多項式做最小二乘曲線擬合,系數(shù)矩陣變?yōu)閷蔷仃?,就可以避免利用線性方程組,而能夠直接計算出系數(shù)。同樣的,在插值法的推導以及數(shù)值微積分中,由于考慮到求解線性方程組可能會遇到病態(tài)方程組或者計算過程比較繁雜,都需要另外尋求解決方案,由此可見,清晰而明了地提醒學生時時需要注意到求解方程組的病態(tài)問題,才能夠盡可能地避免在實際求解中實際值偏離理論值的情況,這一點,無論是在算法的講解還是在實際問題的求解中都是不可避免的。
三、利用誤差創(chuàng)造新算法
誤差的分析既可以對算法的優(yōu)劣進行判斷,還可以利用誤差來創(chuàng)造新的算法。例如,在數(shù)值微積分這一章節(jié)中的推導自適應的積分方法,復合梯形公式的余項公式中涉及到f(x)在η點的二階導數(shù)f"(η),在實際中由于f(x)復雜或未知,難以通過余項公式來估計誤差,而需要改變思路。也就是誤差的估計不能使用余項公式,但觀察余項公式后,可以引導學生考慮利用區(qū)間折半以后的復合梯形公式的余項中f"(η)與折半前復合梯形公式余項中的f"(ξ)近似相等,得到如下的式子:■=■≈■ (5)
對上式進行整理后得到:I-T2n≈■(T2n-Tn)從而只需要折半前后積分值的差的絕對值達到規(guī)定的誤差限,就可以停止折半的計算過程,最后一次算得的積分值就是滿足精度要求的近似值。另一方面,從式(5)還能推導出I≈■T2n-■Tn,仔細比對之后發(fā)現(xiàn)的計算結(jié)果恰好是復合Simpson公式,也就是說復合Simpson公式可以由復合梯形公式計算得到,而在已知點一樣的情況下,復合Simpson公式的計算精度明顯高于復合梯形公式,因此,可以用這種方法加速復合梯形公式的收斂。以此類推,在同樣的原理下,復合Simpson公式可以加速為復合Cotes公式,進一步加速為最終的Romberg公式。而這個有用公式的得到,就是源自對誤差的分析。
綜上所述,算法的誤差分析與課程每一個環(huán)節(jié)都息息相關,在講解算法的時候都很有必要提醒學生時刻注意到對誤差進行分析,如果脫離了誤差分析,而僅僅在于講授算法,就失去了算法應用于實際的意義。本文并沒有對算法的誤差分析方法進行討論,而是從誤差分析的另一個角度剖析了這個內(nèi)容在課程講授中的重要性,引導學生在學習過程中要注意實際問題中的舍入誤差帶來的影響和理論誤差公式的應用。通過強調(diào)誤差分析,能夠在一定程度上提升學生對待問題的嚴謹性與探索性,使得數(shù)值分析課程的教與學更加豐富,更加貼近工程計算的實質(zhì)。
參考文獻:
[1]白峰杉.數(shù)值計算引論第2版[M].高等教育出版社,2010.
[2]李慶揚,等.數(shù)值分析第5版[M].清華大學出版社,2008.endprint
摘要:數(shù)值分析的特點是抽象和嚴格的演繹,思維邏輯嚴密,討論的核心問題是誤差。在課程講授中,誤差分析理所當然應該成為不可避免的一個重要環(huán)節(jié)。本文從幾個方面對課堂教學中強調(diào)誤差分析的重要性進行了闡述,并舉了一系列的例子進行了論證。
關鍵詞:誤差理論;數(shù)值分析;教學
中圖分類號:G642.4 文獻標志碼:A 文章編號:1674-9324(2014)14-0118-02
計算機與數(shù)學的有機結(jié)合形成了“科學計算”的研究方法,它的核心內(nèi)容是以現(xiàn)代化的計算機以及數(shù)學軟件為工具,以數(shù)學模型為基礎進行模擬研究[1]。一個實際問題在計算機上的解決需要轉(zhuǎn)化成數(shù)學模型,當數(shù)學模型不能夠得到精確解時,通常要用數(shù)值方法求它的近似解,而后再編制成程序在計算機上運行。顯然,這些計算方法是數(shù)值分析課程研究的對象,只有構(gòu)造出好的算法才能有效的在計算機上解決數(shù)學問題。然而,構(gòu)造計算方法的手段是近似,研究并分析算法的核心問題則是近似對計算結(jié)果的影響。隨著授課經(jīng)驗的積累以及對這門課程了解的深入,作者越來越覺得誤差的講解應該成為整門課程講授的重點和核心。實際問題通過建立數(shù)學模型在計算機上得到解決,每一步都會產(chǎn)生誤差。只有一個對誤差進行詳盡分析的算法才能稱之為一個好的算法。下面就誤差對算法的影響以及算法的誤差分析等幾個方面進行闡述,從中可以看出將誤差分析在課堂講授中應當特別作為重點是很有實際意義的。
一、算法的穩(wěn)定性
用一個算法進行計算,由于初始數(shù)據(jù)誤差在計算中傳播使計算結(jié)果誤差增長很快,就是數(shù)值不穩(wěn)定的[2]。在大部分數(shù)值計算教材中都能見到這樣一個關于描述算法穩(wěn)定性的例子,式(1)與式(2)兩個公式是相互等價的,但是由于初始數(shù)據(jù)帶有誤差,計算結(jié)果就迥然不同。
In=I-nIn-1 n=2,3,L,7 (1)
In-1=■-■In-1 n=7,6,L,3,2 (2)
當初始數(shù)據(jù)帶有誤差時,式(1)的計算過程使得這個誤差急劇擴散,速度為n!,假設初始數(shù)據(jù)I0的誤差為δ,則當n=7時I7的誤差為δ的5040倍。而式(2)卻能夠在計算的過程中逐步地縮小誤差,控制誤差的傳播。這就是算法的穩(wěn)定性問題。在常微分方程初值問題的數(shù)值解法中也會發(fā)生這樣的問題。例如,分別用歐拉顯、隱式格式和改進的歐拉格式計算初值問題y'(x)=-30y(x)y(0)=1在區(qū)間[0,0.5]上的數(shù)值解。結(jié)果如圖1所示:
注意到在這個結(jié)果里,局部截斷誤差為2階的改進歐拉法在h=0.3,0.4,0.5的值相對于局部截斷誤差為1階的歐拉隱式公式在這些點的計算結(jié)果更加偏離了精確解。這是由于歐拉隱式公式的穩(wěn)定性高于改進歐拉法。從這一方面也能夠看出算法的穩(wěn)定性問題在實際計算中的重要性。理論上的截斷誤差并不能正確地反映一個算法計算結(jié)果的好壞。
二、病態(tài)問題
關于病態(tài)問題可以用一句“失之毫厘,謬以千里”來加以描述,在病態(tài)問題中,初值數(shù)據(jù)的微小偏差會引起結(jié)果的巨大差異。因此,在講述課程緒論的時候也提到了問題的病態(tài)性。例如線性方程組1 11 1.0001x1x2=23 (3)
它的精確解為x=(2,0)T。若常數(shù)項做微小變化,即考察線性方程組1 11 1.0001x1x2= 22.0001 (4)
此時它的精確解為x=(1,1)T,從這個例子可以看到常數(shù)項的第2個分量只有萬分之一的微小變化,然而方程組的解卻變化很大。這樣的方程組就稱之為病態(tài)方程組。病態(tài)方程組的影響在《數(shù)值分析》的幾個章節(jié)中都是很有必要在課堂中加以解釋的。因此,必須要去尋求避免出現(xiàn)此類問題的解決方案。在這種情形下可以引導學生進行思考,既要保持原有的解法,又要避免求解線性方程組。解決的方法就是以正交的函數(shù)族代替φi(x),用正交多項式做最小二乘曲線擬合,系數(shù)矩陣變?yōu)閷蔷仃?,就可以避免利用線性方程組,而能夠直接計算出系數(shù)。同樣的,在插值法的推導以及數(shù)值微積分中,由于考慮到求解線性方程組可能會遇到病態(tài)方程組或者計算過程比較繁雜,都需要另外尋求解決方案,由此可見,清晰而明了地提醒學生時時需要注意到求解方程組的病態(tài)問題,才能夠盡可能地避免在實際求解中實際值偏離理論值的情況,這一點,無論是在算法的講解還是在實際問題的求解中都是不可避免的。
三、利用誤差創(chuàng)造新算法
誤差的分析既可以對算法的優(yōu)劣進行判斷,還可以利用誤差來創(chuàng)造新的算法。例如,在數(shù)值微積分這一章節(jié)中的推導自適應的積分方法,復合梯形公式的余項公式中涉及到f(x)在η點的二階導數(shù)f"(η),在實際中由于f(x)復雜或未知,難以通過余項公式來估計誤差,而需要改變思路。也就是誤差的估計不能使用余項公式,但觀察余項公式后,可以引導學生考慮利用區(qū)間折半以后的復合梯形公式的余項中f"(η)與折半前復合梯形公式余項中的f"(ξ)近似相等,得到如下的式子:■=■≈■ (5)
對上式進行整理后得到:I-T2n≈■(T2n-Tn)從而只需要折半前后積分值的差的絕對值達到規(guī)定的誤差限,就可以停止折半的計算過程,最后一次算得的積分值就是滿足精度要求的近似值。另一方面,從式(5)還能推導出I≈■T2n-■Tn,仔細比對之后發(fā)現(xiàn)的計算結(jié)果恰好是復合Simpson公式,也就是說復合Simpson公式可以由復合梯形公式計算得到,而在已知點一樣的情況下,復合Simpson公式的計算精度明顯高于復合梯形公式,因此,可以用這種方法加速復合梯形公式的收斂。以此類推,在同樣的原理下,復合Simpson公式可以加速為復合Cotes公式,進一步加速為最終的Romberg公式。而這個有用公式的得到,就是源自對誤差的分析。
綜上所述,算法的誤差分析與課程每一個環(huán)節(jié)都息息相關,在講解算法的時候都很有必要提醒學生時刻注意到對誤差進行分析,如果脫離了誤差分析,而僅僅在于講授算法,就失去了算法應用于實際的意義。本文并沒有對算法的誤差分析方法進行討論,而是從誤差分析的另一個角度剖析了這個內(nèi)容在課程講授中的重要性,引導學生在學習過程中要注意實際問題中的舍入誤差帶來的影響和理論誤差公式的應用。通過強調(diào)誤差分析,能夠在一定程度上提升學生對待問題的嚴謹性與探索性,使得數(shù)值分析課程的教與學更加豐富,更加貼近工程計算的實質(zhì)。
參考文獻:
[1]白峰杉.數(shù)值計算引論第2版[M].高等教育出版社,2010.
[2]李慶揚,等.數(shù)值分析第5版[M].清華大學出版社,2008.endprint
摘要:數(shù)值分析的特點是抽象和嚴格的演繹,思維邏輯嚴密,討論的核心問題是誤差。在課程講授中,誤差分析理所當然應該成為不可避免的一個重要環(huán)節(jié)。本文從幾個方面對課堂教學中強調(diào)誤差分析的重要性進行了闡述,并舉了一系列的例子進行了論證。
關鍵詞:誤差理論;數(shù)值分析;教學
中圖分類號:G642.4 文獻標志碼:A 文章編號:1674-9324(2014)14-0118-02
計算機與數(shù)學的有機結(jié)合形成了“科學計算”的研究方法,它的核心內(nèi)容是以現(xiàn)代化的計算機以及數(shù)學軟件為工具,以數(shù)學模型為基礎進行模擬研究[1]。一個實際問題在計算機上的解決需要轉(zhuǎn)化成數(shù)學模型,當數(shù)學模型不能夠得到精確解時,通常要用數(shù)值方法求它的近似解,而后再編制成程序在計算機上運行。顯然,這些計算方法是數(shù)值分析課程研究的對象,只有構(gòu)造出好的算法才能有效的在計算機上解決數(shù)學問題。然而,構(gòu)造計算方法的手段是近似,研究并分析算法的核心問題則是近似對計算結(jié)果的影響。隨著授課經(jīng)驗的積累以及對這門課程了解的深入,作者越來越覺得誤差的講解應該成為整門課程講授的重點和核心。實際問題通過建立數(shù)學模型在計算機上得到解決,每一步都會產(chǎn)生誤差。只有一個對誤差進行詳盡分析的算法才能稱之為一個好的算法。下面就誤差對算法的影響以及算法的誤差分析等幾個方面進行闡述,從中可以看出將誤差分析在課堂講授中應當特別作為重點是很有實際意義的。
一、算法的穩(wěn)定性
用一個算法進行計算,由于初始數(shù)據(jù)誤差在計算中傳播使計算結(jié)果誤差增長很快,就是數(shù)值不穩(wěn)定的[2]。在大部分數(shù)值計算教材中都能見到這樣一個關于描述算法穩(wěn)定性的例子,式(1)與式(2)兩個公式是相互等價的,但是由于初始數(shù)據(jù)帶有誤差,計算結(jié)果就迥然不同。
In=I-nIn-1 n=2,3,L,7 (1)
In-1=■-■In-1 n=7,6,L,3,2 (2)
當初始數(shù)據(jù)帶有誤差時,式(1)的計算過程使得這個誤差急劇擴散,速度為n!,假設初始數(shù)據(jù)I0的誤差為δ,則當n=7時I7的誤差為δ的5040倍。而式(2)卻能夠在計算的過程中逐步地縮小誤差,控制誤差的傳播。這就是算法的穩(wěn)定性問題。在常微分方程初值問題的數(shù)值解法中也會發(fā)生這樣的問題。例如,分別用歐拉顯、隱式格式和改進的歐拉格式計算初值問題y'(x)=-30y(x)y(0)=1在區(qū)間[0,0.5]上的數(shù)值解。結(jié)果如圖1所示:
注意到在這個結(jié)果里,局部截斷誤差為2階的改進歐拉法在h=0.3,0.4,0.5的值相對于局部截斷誤差為1階的歐拉隱式公式在這些點的計算結(jié)果更加偏離了精確解。這是由于歐拉隱式公式的穩(wěn)定性高于改進歐拉法。從這一方面也能夠看出算法的穩(wěn)定性問題在實際計算中的重要性。理論上的截斷誤差并不能正確地反映一個算法計算結(jié)果的好壞。
二、病態(tài)問題
關于病態(tài)問題可以用一句“失之毫厘,謬以千里”來加以描述,在病態(tài)問題中,初值數(shù)據(jù)的微小偏差會引起結(jié)果的巨大差異。因此,在講述課程緒論的時候也提到了問題的病態(tài)性。例如線性方程組1 11 1.0001x1x2=23 (3)
它的精確解為x=(2,0)T。若常數(shù)項做微小變化,即考察線性方程組1 11 1.0001x1x2= 22.0001 (4)
此時它的精確解為x=(1,1)T,從這個例子可以看到常數(shù)項的第2個分量只有萬分之一的微小變化,然而方程組的解卻變化很大。這樣的方程組就稱之為病態(tài)方程組。病態(tài)方程組的影響在《數(shù)值分析》的幾個章節(jié)中都是很有必要在課堂中加以解釋的。因此,必須要去尋求避免出現(xiàn)此類問題的解決方案。在這種情形下可以引導學生進行思考,既要保持原有的解法,又要避免求解線性方程組。解決的方法就是以正交的函數(shù)族代替φi(x),用正交多項式做最小二乘曲線擬合,系數(shù)矩陣變?yōu)閷蔷仃?,就可以避免利用線性方程組,而能夠直接計算出系數(shù)。同樣的,在插值法的推導以及數(shù)值微積分中,由于考慮到求解線性方程組可能會遇到病態(tài)方程組或者計算過程比較繁雜,都需要另外尋求解決方案,由此可見,清晰而明了地提醒學生時時需要注意到求解方程組的病態(tài)問題,才能夠盡可能地避免在實際求解中實際值偏離理論值的情況,這一點,無論是在算法的講解還是在實際問題的求解中都是不可避免的。
三、利用誤差創(chuàng)造新算法
誤差的分析既可以對算法的優(yōu)劣進行判斷,還可以利用誤差來創(chuàng)造新的算法。例如,在數(shù)值微積分這一章節(jié)中的推導自適應的積分方法,復合梯形公式的余項公式中涉及到f(x)在η點的二階導數(shù)f"(η),在實際中由于f(x)復雜或未知,難以通過余項公式來估計誤差,而需要改變思路。也就是誤差的估計不能使用余項公式,但觀察余項公式后,可以引導學生考慮利用區(qū)間折半以后的復合梯形公式的余項中f"(η)與折半前復合梯形公式余項中的f"(ξ)近似相等,得到如下的式子:■=■≈■ (5)
對上式進行整理后得到:I-T2n≈■(T2n-Tn)從而只需要折半前后積分值的差的絕對值達到規(guī)定的誤差限,就可以停止折半的計算過程,最后一次算得的積分值就是滿足精度要求的近似值。另一方面,從式(5)還能推導出I≈■T2n-■Tn,仔細比對之后發(fā)現(xiàn)的計算結(jié)果恰好是復合Simpson公式,也就是說復合Simpson公式可以由復合梯形公式計算得到,而在已知點一樣的情況下,復合Simpson公式的計算精度明顯高于復合梯形公式,因此,可以用這種方法加速復合梯形公式的收斂。以此類推,在同樣的原理下,復合Simpson公式可以加速為復合Cotes公式,進一步加速為最終的Romberg公式。而這個有用公式的得到,就是源自對誤差的分析。
綜上所述,算法的誤差分析與課程每一個環(huán)節(jié)都息息相關,在講解算法的時候都很有必要提醒學生時刻注意到對誤差進行分析,如果脫離了誤差分析,而僅僅在于講授算法,就失去了算法應用于實際的意義。本文并沒有對算法的誤差分析方法進行討論,而是從誤差分析的另一個角度剖析了這個內(nèi)容在課程講授中的重要性,引導學生在學習過程中要注意實際問題中的舍入誤差帶來的影響和理論誤差公式的應用。通過強調(diào)誤差分析,能夠在一定程度上提升學生對待問題的嚴謹性與探索性,使得數(shù)值分析課程的教與學更加豐富,更加貼近工程計算的實質(zhì)。
參考文獻:
[1]白峰杉.數(shù)值計算引論第2版[M].高等教育出版社,2010.
[2]李慶揚,等.數(shù)值分析第5版[M].清華大學出版社,2008.endprint