竇立巖,汪麗梅
(吉林建筑大學,吉林 長春 130018)
Matlab語言是國內大學電子信息和通信工程類專業必修的工具基礎課,但從其產生及發展的歷程來看,強大的數據分析處理能力更能體現其核心價值,因此,Matlab的應用范圍絕不僅僅局限于某些目前比較熱門的學科領域,而應該作為一種用途廣泛的常用工具軟件加以推廣。本文旨在從基礎化學本科教學的內容中列舉一些實例來闡述Matlab的輔助教學作用。目前化學本科教學的基礎內容包括無機、有機、分析、物理化學、物質結構及相關實驗內容,除無機和有機主要涉及結構反應外,其他幾門課程都包括大量的計算和實驗數據處理,在已基本保證學生人手一臺筆記本電腦的基礎上,把Matlab軟件納入到必備學習工具軟件的范疇里,提高學生利用現代工具的能力,將進一步靠近高校當前的培養目標。
實例1:草酸在水溶液中存在的形式是:H2C2O4, HC2O4-, C2O42-, 已知Ka1=5.9e-2,Ka2=6.4e-5,請繪制出HC2O4-在不同pH值下分布曲線圖。
Matlab程序如下:
Ka1=5.9e-2;
Ka2=6.4e-5;
pH=0:0.1:7;
H=10.^(-pH);
d1=Ka1*H./(H.^2+Ka1*H+Ka1*Ka2);
plot(pH,d1);
xlabel('pH值');
ylabel('分布系數');
title('分布曲線')

圖1 HC2O4- 在不同pH值下分布曲線
從上例可以看出,通過簡短的Matlab語句表達,就可以將HC2O4-隨pH值的變化規律以曲線的形式清晰的展示出來,而且任意pH值下的分布系數也都可以獲取,體現了強大的數據處理能力。
實例2:某溫度下乙醛分解反應為C2H4O(g)→CH4(g)+CO(g),根據以下數據判斷其反應級數。

表1 乙醛濃度與時間對應關系

表2 乙醛濃度與反應速率對應關系
將(1)式兩端取對數得:lnr=lnk+nlnC,隨之可使用Matlab繼續解題,語句如下:
c=[5.85,4.46,3.83,2.81,2.01];c=log(c)
r=[0.013,0.010,0.006,0.004,0.002];
r=log(r);
p=polyfit(c,r,1);
ci=linspace(log2.0,log6.0,50);
ri=polyval(p,ci);
plot(c,r,'o',ci,ri,':')
xlabel('logc');ylabel('logr')
p
回車后運行:
p =
1.7833 -7.4197

圖2 乙醛反應速率與濃度對數關系
舍掉負值后得p(斜率)=1.7833,故判斷反應級數為2級。
在本例中遇到一個非常重要的Matlab函數,polyfit即擬合函數,它的作用是可以把若干獲得的已知數據進行處理,最終達到擬合到一條函數曲線上的目的,相當于根據數據的變化規律來建立相應的數學模型。對于本例,該法有些大材小用,因為僅僅是一級擬合,如有大量數據需要處理,而且對擬合精度有很高要求,需進行多項式擬合,人工計算是無論如何都不能比擬的。與擬合函數同等重要的另外一個函數是插值函數,命令通常為interp1,即一維插值,與擬合函數不同,插值函數除一維插值外,還包括其他插值方式,如二維插值、N維數據插值、三次樣條插值等,其中以一維插值最為常用,示例如下:
實例3: 某檢測參數w隨時間采樣結果如表3所示,用數據插值法求出t=3,18,26時的w值。

表3 參數w隨時間采樣結果
Matlab語句如下:
t=[0,5,10,15,20,25,30];
w=[1.6,10.2,88.3,225.3,786.2,1365.2,3368.5];
X=[3,18,26];
w1=interp1(t,w,X);
w1
回車后運行結果:
w1 =
1.0e+003 *
0.0068 0.5618 1.7659
不難看出,利用插值方法可以得到此時間范圍內所有對應結果,前提是要獲取若干采樣結果,從而找到其變化規律,實際上這里面已經暗含了擬合的過程,因此插值可以看作是數據擬合基礎上的進一步應用。
Matlab語句如下:
r=0:1:500;
a0=52.9;
a=sqrt(1/pi*a0^3).*exp(-r/a0);
Dr=4*pi*r.^2.*a.^2;
plot(r,Dr,'-*b');
xlabel('核外半徑')
ylabel('電子出現概率')
title('基態氫原子徑向分布函數圖')

圖3 電子出現概率與核外半徑關系
本例從功能方面來看,與實例1并無區別,都體現了計算和數據處理能力,但從計算量來看要大得多,說明Matlab完全可以處理更加復雜的計算,而對于物質結構這類研究微觀領域電子云分布函數涉及到大量復雜公式的科學,正可作為Matlab軟件用武之地。
Matlab在國外早已成為流行的學習工具軟件,其受歡迎之處不僅在于其功能幾乎覆蓋了目前所有的重要科技領域,而且是入門極易的一門語言,短期的學習即可掌握其基本語言。對于化學領域的工作者來說,一旦具備了利用Matlab進行計算及數據處理能力,使許多抽象的公式以圖形曲線的形式展現出來,不僅會對問題的理解更加直觀,而且也增添了趣味性,尤其是學生平日的學習也能培養出善于樂于使用Matlab解答學科問題的習慣,對于其日后發展將產生不可估量的作用。