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