趙 華
(黔南民族師范學(xué)院 物理與電子科學(xué)學(xué)院,貴州 都勻 558000)
近幾十年來,隨著計(jì)算機(jī)的普及和相關(guān)技術(shù)的迅速發(fā)展,許多使用方便、功能強(qiáng)大的數(shù)學(xué)計(jì)算軟件應(yīng)運(yùn)而生。相關(guān)課程的學(xué)習(xí)如果能和這些軟件的使用結(jié)合起來,就能夠?qū)W(xué)生從繁瑣的數(shù)學(xué)計(jì)算中解脫出來,取得事半功倍的效果[1]。一直以來,MATLAB是影響和應(yīng)用最廣泛的數(shù)學(xué)計(jì)算軟件之一。
MATLAB數(shù)值計(jì)算處理的對象是具體的數(shù)字。因此,應(yīng)將問題中所有的計(jì)算對象首先數(shù)值化,用矩陣的形式表示出來。即使是一個(gè)單獨(dú)的數(shù)字,也要視為一個(gè)1行1列的矩陣。MATLAB中所有量之間的相互計(jì)算都要滿足矩陣的運(yùn)算法則。這通??梢杂醚h(huán)語句或者相關(guān)命令實(shí)現(xiàn)。
另外,MATLAB中還定義了不同于一般矩陣運(yùn)算的群運(yùn)算,即兩個(gè)相同維數(shù)的矩陣對應(yīng)的元素直接進(jìn)行相應(yīng)的計(jì)算。為了與矩陣作為整體運(yùn)算相區(qū)別,群運(yùn)算在運(yùn)算符號前面加符號“.”。除了幾個(gè)專門說明的函數(shù)外,所有的MATLAB函數(shù)也都適用于元素的群運(yùn)算。這種運(yùn)算法則能夠極大的簡化編程,提高運(yùn)算效率。學(xué)習(xí)MATLAB數(shù)值計(jì)算,應(yīng)熟練掌握并能靈活運(yùn)用群運(yùn)算。
以函數(shù)y=xsin(x)為例說明。下面給出了x在[0,10]區(qū)間的函數(shù)及其一階和二階導(dǎo)數(shù)的函數(shù)曲線圖。需要注意的是對自變量做diff運(yùn)算后,數(shù)組元素的個(gè)數(shù)減少一個(gè),作圖的時(shí)候應(yīng)相應(yīng)的減少一個(gè)點(diǎn)。
clear all%清除所有變量
dx=0.01;%兩個(gè)相鄰自變量的間隔
x=0:dx:10;%自變量數(shù)值化
lx=length(x);%自變量樣點(diǎn)數(shù)目
y=x.*sin(x);%函數(shù)值數(shù)值化
dy=diff(y);%函數(shù)值差分
y1=dy/dx;%一階導(dǎo)數(shù)
y2=diff(y1)/dx;
plot(x,y)
hold on
%diff運(yùn)算后,矩陣元數(shù)量減少一個(gè),繪圖時(shí)要除去x的一個(gè)點(diǎn)
plot(x(1:(lx-1)),y1)
plot(x(2:(lx-1)),y2)
圖1 函數(shù)y=xsin(x)及其導(dǎo)函數(shù)曲線圖Fig.1 Curves of y=xsin(x) and its derivative functions
clear all %清除變量
a=linspace(0,3,100);
dx=0.01; %x步長
for m=1:100 %對a取不同的值分別計(jì)算
x=0:dx:a(m);%間隔dx對x進(jìn)行取樣
y=2/sqrt(pi)*exp(-x.^2);%x樣點(diǎn)上對應(yīng)的被積函數(shù)y值
n=length(x)-1;%[0,a]被分成區(qū)間的個(gè)數(shù)比x樣點(diǎn)個(gè)數(shù)少1
S(m)=sum(y(1:n))*dx;%歐拉法求解積分
end
plot(a,S)%繪制a與積分值之間的函數(shù)曲線圖
圖2 誤差函數(shù)隨其積分上限的函數(shù)曲線圖Fig.2 Error function as a function of its upper limit of integration
在數(shù)學(xué)中,泰勒級數(shù)用無限項(xiàng)的連加式來表示一個(gè)函數(shù)。泰勒級數(shù)是一個(gè)重要的數(shù)學(xué)工具,在函數(shù)分析和定理證明等方面有廣泛的應(yīng)用。另外,泰勒級數(shù)也是一個(gè)非常重要的近似計(jì)算處理手段。
clear all
dx=0.01;%自變量步長
x=-3:dx:3;%作圖范圍
lx=length(x);%自變量取樣點(diǎn)個(gè)數(shù)
y=sin(x);%被分析函數(shù)
plot(x,y);%被分析函數(shù)繪圖
hold on
x0=0;%泰勒級數(shù)展開位置
y0=sin(x0);%函數(shù)在x=0處的值
for n=1:10
fn=diff(y,n)/dx^n;%函數(shù)的n階導(dǎo)數(shù)
F0(n)=fn(round((lx-n)/2));%函數(shù)的n階導(dǎo)數(shù)在x0處對應(yīng)值
end
F(1,:)=sin(x0)+F0(1)*x;%函數(shù)的線性展開式
plot(x,F(1,:))%繪圖
for n=2:6
F(n,:)=F(n-1,:)+F0(n)*x.^n/factorial(n);%函數(shù)n階泰勒級數(shù)展開式
plot(x,F(n,:))%繪圖
end
中小型工業(yè)企業(yè)的創(chuàng)始人普遍都不是受過高等教育的高精尖人才,大多是憑著自身努力和鉆研起家的草根,雖然有很強(qiáng)的毅力和拼搏精神,但是由于缺乏理論教育,企業(yè)往往做每一件事都是摸著石頭過河。企業(yè)內(nèi)部工作中推諉扯皮現(xiàn)象屢見不鮮,每個(gè)人都覺得自己很忙,但是工作的結(jié)果又都往往很粗糙、漏洞百出。企業(yè)管理層面對這些現(xiàn)象,總是頭疼醫(yī)頭,腳疼醫(yī)腳,不知道主要問題出在哪里,也不清楚該采取哪種預(yù)案應(yīng)對這些不足,無法形成系統(tǒng)的管理體系。
圖3 正弦函數(shù)及其泰勒級數(shù)展開函數(shù)的曲線圖Fig.3 Curves of Sine function and its expansion functions of Taylor series
clear all %清除變量
T=2*pi;%周期
L=T/2;
dx=0.001;%自變量步長
x=-pi:dx:pi;%自變量取值范圍
lx=length(x);%數(shù)值計(jì)算樣點(diǎn)個(gè)數(shù)
f=abs(x)./x;%方波信號函數(shù)
plot(x,f)%方波信號曲線
x(lx)=[];
f(lx)=[];%除去最后一個(gè)樣點(diǎn)
a0=1/L*sum(f)*dx;%計(jì)算a0
%計(jì)算系數(shù)
for n=1:10
a(n)=1/L*sum(f.*cos(n*pi*x/L)*dx);
b(n)=1/L*sum(f.*sin(n*pi*x/L)*dx);
end
%展開到n=1級并作圖
F(1,:)=a0/2+a(1)*cos(pi*x/L)+b(1)*sin(pi*x/L);
plot(x,F(1,:))
%展開到n=2到n=10級并作圖
for n=2:10
F(n,:)=F(n-1,:)+a(n)*cos(n*pi*x/L)+b(n)*sin(n*pi*x/L);
plot(x,F(n,:))
end
圖4 方波信號函數(shù)及其傅里葉級數(shù)展開函數(shù)曲線圖Fig.4 Curves of square wave signal function and its expansion functions of Fourier series
在理工課程的學(xué)習(xí)中,大量的計(jì)算問題可以通過數(shù)值計(jì)算進(jìn)行分析,得到有意義的結(jié)果。數(shù)值計(jì)算從數(shù)學(xué)基本定義出發(fā),計(jì)算過程十分直觀,能夠很好地展示問題的數(shù)學(xué)本質(zhì)。本研究通過具體的例子,根據(jù)相關(guān)計(jì)算的基本數(shù)學(xué)定義,基于MATLAB軟件介紹了幾個(gè)常見數(shù)學(xué)問題數(shù)值計(jì)算處理方法。這對于MATLAB的初學(xué)者理解和掌握數(shù)值計(jì)算具有幫助。將MATLAB和理工課程的學(xué)習(xí)相結(jié)合,會顯著提高學(xué)生的學(xué)習(xí)效果,激發(fā)學(xué)習(xí)興趣,起到事半功倍的效果。