牛瀟萌
數(shù)值分析是研究數(shù)據(jù)結(jié)構(gòu)和數(shù)量關系的數(shù)學分支,在信息與計算科學、物理學、數(shù)學與應用數(shù)學等專業(yè)的教學中都是一門很重要的專業(yè)課.其內(nèi)容包括插值方法、數(shù)值積分、數(shù)值微分、常微分方程的差分方法、方程求根的迭代法,線性方程組的迭代法和線性方程組的直接法等.
在許多情況下,要獲得精確解是十分困難的,有時是不可能的,例如,由于找不到的原函數(shù),所以用牛頓-萊布尼茨公式就不能求解定積分到因此研究各種數(shù)學問題的近似解變得非常重要了,數(shù)值分析就是專門研究各種數(shù)學問題的近似解的一門課程.因而數(shù)值分析是現(xiàn)代計算科學的必要理論基礎,作為數(shù)學與應用數(shù)學專業(yè)選修課,數(shù)值分析對學習其它專業(yè)課是必不可少的.
《數(shù)值分析》課程學習的主要困難在運算過程、運算公式復雜,不能簡單的靠一支筆就能算出來,而需要通過計算機來執(zhí)行運算[1-3].本文將以《數(shù)值分析》課本中一些容易實現(xiàn)的例子來說明MATLAB在《數(shù)值分析》課程教學過程中的重要應用.
數(shù)值分析課本中有很多流程圖,需要上機實驗,在數(shù)值分析課程的實驗教學中可以讓學生按如下步驟做數(shù)值分析實驗并寫出數(shù)值分析實驗報告:
(1)算法描述;
(2)編寫算法實現(xiàn)的M文件;
(3)用具體實例運行M文件,得出運行結(jié)果或者圖形.
下面以秦九韶算法為例,讓學生對數(shù)值分析上機實驗有所了解.
(1)秦九韶算法的公式[4]
(2)算法流程圖
(3)秦九韶算法實現(xiàn)的M文件
根據(jù)上述流程圖,用MATLAB編寫算法的M文件,代碼如下:
function v=qinjiushao(x,a)
%其中a是多項式的系數(shù)
[hang,lie]=size(a);
n=lie;
v=a(n);
k=1;
while k~=n
v=x*v+a(n-k);
k=k+1;
end
(4)用具體實例運行M文件,得出運行結(jié)果
利用編寫的M文件計算如下多項式:
在x=3處的值.
在MATLAB命令窗口輸入如下命令
x=3;a=[1-1 4 0-3 1];
qinjiushao(x,a)
得到結(jié)果是34.
數(shù)值分析課程中有許多例子比較抽象,難于理解,教師可以利用MATALB強大的繪圖功能,將這些例子直觀化,便于學生理解,加深印象.下面以高次插值的龍格現(xiàn)象說明此問題.
在講解高次插值的龍格現(xiàn)象時,教師可以用MATLAB編寫程序演示,讓學生直觀上認識到隨著插值節(jié)點的增加,高次插值多項式的逼近效果有時是不理想的.考慮如下函數(shù)
首先編寫如下M文件:
function f=myrunge(i)
x=linspace(-5,5,i);
y=1./(1+x.^2);
p=polyfit(x,y,i-1);
xx=-5:0.01:5;
yy=polyval(p,xx);
plot(xx,yy);
其次在區(qū)間[-5,5]內(nèi)取6個節(jié)點和11個節(jié)點來畫圖,驗證龍格現(xiàn)象.
hold on
myrunge(6)
gtext('p_5(x)')
myrunge(11)
gtext('p_{10}(x)')
xx=-5:0.01:5;
plot(xx,1./(1+xx.^2),'r')
gtext('f(x)')
title('龍格現(xiàn)象')
得到如下圖像.
本文通過數(shù)值分析課本上的幾個例子,給出了MATLAB軟件在數(shù)值分析教學過程中的應用.數(shù)值分析教學過程中使用MATALB軟件可以解決教學過程中很多題目無法手算的難題.這也有助于培養(yǎng)學生的編程能力,將數(shù)值分析應用到實際問題中的能力.