陳愛斌,張釗源
(中南林業(yè)科技大學 計算機與信息工程學院,湖南 長沙 410004)
數值分析(numerical analysis)是研究分析用計算機求解數學計算問題的數值計算方法及其理論的學科,是數學的一個分支,它以數字計算機求解數學問題的理論和方法為研究對象,為計算數學的主體部分。計算數學會把這門課擴充為數值代數、數值逼近、常微分方程數值解和偏微分方程數值解等多門更加深入的課程,但對于非數學類理工科學生,數值分析僅單設一門課,內容主要包括插值法、曲線擬合、數值積分、數值微分、解線性方程組的直接方法、解線性方程組的迭代法、非線性方程求根、常微分方程的數值解法等。
隨著電子計算機的迅速發(fā)展、普及以及新型數值軟件的不斷開發(fā),特別是人工智能應用的不斷擴展,數值分析對自然科學和工程、技術科學的影響越來越大。在國民經濟建設中,許多重大項目如水壩、飛機、船舶、橋梁建筑的建設、油田勘探、氣象預報以及人口預測、宏觀經濟管理等都離不開數值分析。現在,不論是在高科技領域還是在一些傳統(tǒng)學科領域,數值計算均是不可缺少的環(huán)節(jié),它已經成為科學工作者和工程技術人員都應當掌握的知識和工具,成為智能+各行各業(yè)的數學基礎。目前理工科院校人工智能專業(yè)大都為學生開設了數值分析(或稱“數值計算方法”“計算方法”)課程。
數值分析課程和其他的課程不一樣,它有著一些非常獨特的課程特點,加強對這些特點的了解,可以讓人工智能專業(yè)的學生對數值分析課程有一個整體的印象,一定程度上能夠消除學生對這門課程學習的壓力。
人工智能專業(yè)數值分析課程的教學內容主要包括插值法、曲線擬和、數值積分、數值微分、解線性方程組的直接方法、解線性方程組的迭代法、非線性方程求根、常微分方程的數值解法等,各類教材都是將這些內容各設一章,但不同教材各章的先后順序不完全相同,這一點與其他課程是很不相同的,原因就是數值分析的以上教學內容之間具有相對獨立性,也就是說它們之間沒有前續(xù)和后續(xù)之分,先講哪個內容后講哪個內容是不受影響的。數值分析課程的這一特點讓學習者不會有太大的學習壓力,因為如果你對某一章內容還沒有完全學好,不會影響你學習其他部分內容。
數值分析每一章的小節(jié)安排都有一個共同的特點,那就是首先給出這一問題的初步解決方法,然后從算法的時間復雜度和算法的收斂性等方面對算法進行不斷地優(yōu)化。以數值積分為例,首先會給出非等分求積節(jié)點的機械型求積公式,然后講解等距求積節(jié)點的牛頓-柯特斯求積公式,先介紹幾種低階的求積公式,然后介紹復化求積公式,最后在介紹變步長的求積公式的基礎上,導出龍貝格求積公式,這是一個求積精度不斷提高的過程。
從數學專業(yè)的角度出發(fā),數值分析課程一般是由公式定理開始,從研究相關問題的定義、性質再到定理證明與應用。但是人工智能專業(yè)數值分析課程主要目的在于應用數值分析已有的理論來解決各行各業(yè)工程實際中的相關問題,其教學也就有不同的特點。
針對智能+的各個交叉學科,往往拿到手的只是通過實驗得到的數據,目的是利用數值分析對這些數據進行分析、驗證,最后得到指導工程實踐的一些結論,這就是工科數值分析的任務。對于人工智能專業(yè)本科生,應用才是目的,學習過程中只需要掌握數值分析的方法、算法,至于這些方法、算法是如何推導過來的,甚至是基于什么定理定義等都不是很重要。同時相對于數學專業(yè)的學生來說,人工智能專業(yè)學生的數學基礎較弱,對一些數學理論推導和分析的進行深刻理解還存在一些困難。因此,人工智能專業(yè)的數值分析教學大可不必強調相關定理的證明,主要側重于算法的講解,包括算法的思想、算法的實現以及算法的不斷改進,而對于相關的定理,只需要強調其用途以及應用該定理時的限定條件等。
人工智能專業(yè)的數值分析課程不能像普通數學專業(yè)一樣講授,而是要結合各專業(yè)特點進行講解。講授過程中的一些例題和課后習題要盡可能來源于各專業(yè)的工程實際,而不是純數學問題。例如給學生講曲線擬合時,我們結合自行車車道的合理設計,所采用的數據是來自9 條街道的自行車車道的寬度和自行車與行駛中的汽車之間的平均距離,讓學生用最小二乘法對這些數據進行擬合,并求當自行車與行駛中的汽車之間的平均最小安全距離為2m 時,最小自行車道寬度。只有像這樣緊密結合學生所學專業(yè)實踐進行講解,才能提高學生的聽課興趣,并且所授內容也更容易被學生理解。
在我們的十多年工科數值分析教學過程中,先后采用了多本教材,如李慶揚的《數值分析》(清華大學出版社)[1],王能超的《數值分析簡明教程》(華中科技大學出版社)[2],鄧建軍的《計算方法》(西安交通大學出版社)[3]和劉師少的《計算方法》(科學出版社)[4]等。這些教材有的偏重于數學理論,有的雖然內容適合工科學生,但與工科專業(yè)相關工程應用結合不強。真正適合人工智能專業(yè)數值分析課程教學的教材一定要從教學內容選擇上偏重工程應用、算法講解和算法實現,在教學例題和課后習題方面緊密結合相關各工科專業(yè)的工程實踐問題,這樣不僅增強學生的數值應用能力,還可以提高學習趣味性。例如在設計曲線擬合的例題或習題時,可以結合實際工程問題設計如下。
在設計道路前,往往會統(tǒng)計并預測道路的交通量,以此為依據確定所設計路段的道路等級和結構層厚度。表1 是一段道路的交通量統(tǒng)計,試對相關數據進行曲線擬合,并預測2020 年的交通量。
人工智能專業(yè)學生學習數值分析歸根到底是要動手解決工程實踐中的實際問題,因此該門課程的教學必須強調實際動手能力的訓練。雖然數值分析的相關算法均有成熟的代碼資源,但是如果學生每學完一種算法能夠通過自己編程實現的話,對該算法的理解肯定會更加深刻,以后應用起來也才能舉一反三。人工智能專業(yè)學生基本上都有Python 語言編程基礎,學生用Python 語言實現所有相關算法,并可以更加熟練地掌握Python 編程。例如用Python 實現高斯消元法時,因為要用到矩陣做函數的參數,學生會發(fā)現一個關于矩陣變量傳遞的問題,怎樣像C 語言一樣進行數值傳遞呢?最后會發(fā)現利用matrix 內置的method copy 可以實現這個功能。

表1 某道路交通量統(tǒng)計表 輛/日
目前人工智能專業(yè)的數值分析課安排的實踐教學學時較少,建議在以后的培養(yǎng)方案中適當增加實踐教學學時,萬一沒有安排實踐課時,任課老師也要適時布置一些實踐動手的作業(yè)讓學生自行完成。
人工智能專業(yè)的課程考試可以形式多樣,不一定都用理論試卷進行閉卷考試。在我們的數值分析教學實踐中采用了多種形式的考試,有理論考試,也有在理論考試試卷中安排1~2 道編程題目,例如“利用Python 語言編程實現矩陣的克洛特分解,寫出相應的程序或程序段”,通過這類題目可以考查學生使用Python 等語言解決工程計算問題的能力。
此外還可以采用開卷考試的形式,讓學生自己設計、分析并解答一個工程實踐問題,例如“請結合工程實踐自己設計一道曲線擬合問題,并選取教材中的一種計算方法對該問題進行分析和求解”。由于數值分析涉及的算法比較多,可以將學生分成多個小組,分別針對插值、曲線擬合、數值積分、數值微分、解線性方程組、非線性方程求根、常微分方程的數值解法等每個課程內容模塊,在廣泛查閱資料的基礎上,給出一道來源于工程專業(yè)實踐的問題,并要求對該問題進行分析,選擇一種算法進行求解并得到結果。這種考試方式可以提高學生利用所學知識解決實際問題的能力。
針對數值分析課程的教學已經有很多討論和教學實踐[5-6],我們給出的以上分析和教學改革建議均來源于自己多年的教學實踐,雖然不可避免地會存在部分不妥之處,但希望我們的這些分析和建議能夠給從事人工智能專業(yè)數值分析課程教學的老師們和直接學習數值分析的眾多工科類學生們一些啟發(fā)。