《數(shù)學(xué)實驗》是云南省“數(shù)學(xué)模型”一類精品課程建設(shè)項目的成果。全書包括23個實驗和1個附錄,內(nèi)容取材于高等代數(shù)、空間解析幾何、數(shù)學(xué)分析(微積分)、運籌學(xué)、概率統(tǒng)計、數(shù)值分析課程中的基本概念、基本方法和基本運算,以及6個具有代表性的數(shù)學(xué)建模問題。《數(shù)學(xué)實驗》重點培養(yǎng)學(xué)生的創(chuàng)新精神和用計算機解決實際問題的能力,增強學(xué)生數(shù)學(xué)應(yīng)用、數(shù)學(xué)建模的能力,讓學(xué)生在解決問題的過程中學(xué)習(xí)、探索、發(fā)現(xiàn)數(shù)學(xué)規(guī)律!稊(shù)學(xué)實驗》主要以MATLAB 6.5作為軟件平臺,運籌學(xué)實驗部分簡要介紹LINDO和LINGO軟件。
教材的使用對象是開設(shè)數(shù)學(xué)實驗課程的師范院校及理工、經(jīng)管類院校本、?茖W(xué)生及相關(guān)讀者。
更多科學(xué)出版社服務(wù),請掃碼獲取。
《數(shù)學(xué)實驗》內(nèi)容包括23個實驗和1個附錄,大致可以分成MATLAB軟件簡介(實驗1)、高等代數(shù)實驗(實驗2)、空間解析幾何實驗(實驗3)、數(shù)學(xué)分析(微積分)實驗(實驗4—7)、運籌學(xué)實驗(實驗9—11)、概率統(tǒng)計實驗(實驗12—14)、數(shù)值分析實驗(實驗15—18)、數(shù)學(xué)建模實驗(實驗19—23)和MATLAB軟件相關(guān)工具箱簡介9個部分。云南師范大學(xué)李鋒擬定全書編寫提綱、框架
實驗1 MATLAB軟件基礎(chǔ)與矩陣基本運算
1.1 引 言
MATLAB(matrixlaboratory)是MathWorks公司于1984年開發(fā)的,目前國際上最流行、應(yīng)用最廣泛的科學(xué)與工程計算軟件,可以實現(xiàn)數(shù)值分析、優(yōu)化、微分方程數(shù)值解、信號處理、圖像處理等若干領(lǐng)域的計算,也是國內(nèi)外高校和研究部門進(jìn)行許多科學(xué)研究的重要工具.它具有強大的計算和繪圖功能、大量穩(wěn)定可靠的算法庫和簡潔高效的編程語言,事實上已成為數(shù)學(xué)計算工具方面的標(biāo)準(zhǔn).
MATLAB建立在向量、數(shù)組和矩陣的基礎(chǔ)上,使用方便,人機界面直觀,輸出結(jié)果可視化,深受用戶歡迎.本書采用MATLAB6.5版.
1.2 MATLAB軟件的基本命令
當(dāng)在計算機中成功安裝了MATLAB6.5版后,雙擊MATLAB軟件的圖標(biāo)即可進(jìn)入MATLAB的界面.MATLAB的通用操作界面包括9個常用的窗口,分別是命令窗口(CommandWindow)、歷史命令窗口(CommandHistory)、當(dāng)前目錄瀏覽器窗口(CurrentDirectoryBrowser)、工作空間瀏覽器窗口(WorkspaceBrowser)、數(shù)組編輯器窗口(ArrayEditor)、交互界面分類目錄窗口(LaunchPad)、M文件編輯/調(diào)試器窗口(Editor/Debugger)、幫助/瀏覽器窗口(HelpNavi?gator/Browser)和程序性能剖析窗口(Profiler).
在命令窗口中出現(xiàn)“>>”后即可輸入命令,如cos(pi/2),然后按下回車鍵即可執(zhí)行相應(yīng)的命令.
1.2.1 數(shù)學(xué)運算符號
MATLAB中常用的數(shù)學(xué)運算符號如表1.1所示.
表1.1 數(shù)學(xué)運算符號表
運算符 數(shù)學(xué)意義 運算符 數(shù)學(xué)意義
+ 加法運算 .\ 點除運算
- 減法運算 ∧ 乘冪運算
* 乘法運算 \ 左除運算
. * 點乘運算 / 右除運算
例1.1 要計算2+3×(6-1)-52/4 , 可在命令窗口中輸入
>>2+3*(6-1)-5^2/4ans= 10.7500例1.2 要計算2/3+
2,可在命令窗口中輸入>>2/3+2^(1/2) %“/”表示右除,3為分母ans= 2.0809百分號“%”在MATLAB中只起到注釋作用,可以在“%”后面輸入對本行命
令的注釋,注釋的作用是幫助閱讀程序,注釋內(nèi)容不影響程序運行.因此,也可以如
下這樣輸入:
>>3\2+sqrt(2) %“\”表示左除,3為分母
ans=
2.0809
例1.3 要計算2+π,可在命令窗口中輸入
>>2+pi %pi表示圓周率π
ans=
5.1416
1.2.2 函數(shù)
MATLAB軟件提供了大量的庫函數(shù),表1.2給出了一些常用的函數(shù),函數(shù)的自變量要放在小括號“()”內(nèi).
表1.2 常用的函數(shù)
函數(shù) 數(shù)學(xué)含義 函數(shù) 數(shù)學(xué)含義 函數(shù) 數(shù)學(xué)含義
fix (x ) 向零方向取整 sin(x) sin x tan(x) tan x
max([x1,x2,.]) max{x1,x2,.} cos(x) cot x cot(x) cot x
min([x1,x2,.]) min{x1,x2,.} factorial(n) n ! abs(x) |x |
sign(x) x 的符號函數(shù) nchoosek(n,k) Ck n asin(x) arcsin x
sqrt (x ) x 的算術(shù)平方根 real(z) z 的實部 acos(x) arccos x
angle(z) z 的輻角主值 ceil(x) 向上取整 atan(x) arctan x
round(x) 四舍五入取整 log (x ) ln x acot(x) arccotx
floor(x) 向下取整 imag(z) z 的虛部 log10(x) log10x
exp(x) ex conj(z) z 的共軛
例1.4 求在y=sinx+lnx+ex +
x+arctanx在x=π/4時的值,可在命令窗口中輸入
>>x=pi/4; %分號之前的命令不顯示結(jié)果
y=sin(x)+log(x)+exp(x)+sqrt(x)+atan(x) %自變量要用小括號括起來
y= 4.2108做做看:去掉語句“x=pi/4;”中的分號“;”,看運行結(jié)果有什么不同.
1.2.3 變量
MATLAB中變量的命名規(guī)則如下:
(1)變量名區(qū)分字母的大小寫.例如,“a”和“A”是不同的變量.
(2)變量名不能超過63個字符.
(3)變量名必須以字母開頭,變量名的組成可以是任意字母、數(shù)字或下劃線,
但不能含有空格和標(biāo)點符號.例如,“1A”,“A%”都是不合法的變量名.MATLAB還有一些特殊變量,如表1.3所示.
表1.3 特殊變量表
特殊變量 取值
ans 運算結(jié)果的默認(rèn)變量名
pi 圓周率π
eps 計算機的最小數(shù)
flops 浮點運算數(shù)
inf 無窮大,如1/0
NaN或nan 非數(shù),如0/0,∞/∞ ,0 × ∞
特殊變量取值
i或ji=j(luò)=
-1nargin函數(shù)的輸入變量數(shù)目ngrgout函數(shù)的輸出變量數(shù)目realmin最小的可用正實數(shù)realmax最大的可用正實數(shù)
1.3 矩陣和數(shù)組
MATLAB是Matrixlaboratory,即矩陣實驗室的縮寫,因此,MATLAB最基本、最重要的功能就是進(jìn)行矩陣的運算.
1.3.1 矩陣輸入
MATLAB中的矩陣表示應(yīng)遵循以下基本規(guī)則:
(1)矩陣元素應(yīng)用方括號[]括;
(2)每行內(nèi)的元素間用逗號或空格隔開;
(3)行與行之間用分號或回車鍵隔開;
(4)元素可以是數(shù)值或表達(dá)式.
1. 通過顯式元素列表輸入矩陣或向量
例1.5 >>A=[1,2,3;456;7,3*1,8]%[]表示矩陣,分號分隔行,逗號或空格分隔元素
A=
1 2 3
4 5 6
7 3 8
也可以如下這樣輸入:
>>A=[123
456
789] %用回車分隔行
2. 由矩陣生成函數(shù)產(chǎn)生特殊矩陣
MATLAB提供了很多能夠產(chǎn)生特殊矩陣的函數(shù),各函數(shù)的功能如表1.4所示.
表1.4 矩陣生成函數(shù)
函數(shù)名功能
zeros(m,n)產(chǎn)生m×n的全0矩陣
ones(m,n)產(chǎn)生m×n的全1矩陣rand(m,n)產(chǎn)生m×n的均勻分布的隨機矩陣,元素在0到1之間取值randn(m,n)產(chǎn)生m×n的正態(tài)分布的隨機矩陣magic(n)產(chǎn)生n階魔方矩陣(矩陣的行、列和對角線上元素的和相等)eye(m,n)產(chǎn)生m×n的單位矩陣
例A= 1.6 >>A=zeros(2,3)
0 0 0 0 0 0>>B=eye(3)%只有一個參數(shù)時,產(chǎn)生3階單位方陣B= 1 0 0 0 1 0 0 0 1
1.3.2 矩陣的元素操作
MATLAB利用下標(biāo)訪問矩陣的元素.
例1.7 >>A=[123;456;789];
>>a1=A(1,2) %A的第1行第2列的元素
a1=
2
>>B1=A(2,:) %A的第2行
B1=
4 5 6
>>B2=A(:,1) %A的第1列
B2=
1
4
7
>>B3=A(1:3,2:3) %取A的第1~3行,第2~3列構(gòu)成的新矩陣
B3=
2 3
5 6
8 9
>>B4=A(3:-1:1,:) %以逆序提取A的第3~1行,構(gòu)成新矩陣
B4=
7 8 9
4 5 6
1 2 3
>>A(1:2,:)=[] %刪除A的第1~2行
A=
7 8 9
>>C=[ones(2),eye(2)]%將兩個矩陣拼接成一個新矩陣
C=
1 1 1 0
1 1 0 1>>D=[ones(2);eye(2)] %將兩個矩陣拼接成一個新矩陣D=
1 1
1 1 1 0 0 1
1.3.3 矩陣的基本運算
矩陣的基本運算如下:
(1)矩陣加法:A+B;
(2)矩陣乘法:A*B;
(3)數(shù)與矩陣的乘法:c*A;
(4)矩陣的轉(zhuǎn)置:A';
(5)方陣的行列式:det(A);
(6)方陣的逆:inv(A);
(7)方陣的特征值與特征向量:[V,D]=eig(A).例1.8 >>A=[12;34];B=[23;14];c=2;>>A+B
ans= 3 5 4 8>>A*Bans= 4 11 10 25>>c*Aans= 2 4 6 8>>A'%矩陣A的轉(zhuǎn)置ans= 1 3 2 4>>det(A) %矩陣A的行列式值ans= -2>>inv(A)%矩陣A的逆矩陣ans=