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