數(shù)學(xué)實(shí)驗(yàn)教程_第1頁
數(shù)學(xué)實(shí)驗(yàn)教程_第2頁
數(shù)學(xué)實(shí)驗(yàn)教程_第3頁
數(shù)學(xué)實(shí)驗(yàn)教程_第4頁
數(shù)學(xué)實(shí)驗(yàn)教程_第5頁
已閱讀5頁,還剩103頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

.、K4\A

刖s

數(shù)學(xué)實(shí)驗(yàn)這門課包括以下幾部分:

一、軟件基本操作介紹(Matlab和Mathematica);

二、據(jù)不同專業(yè)的要求和數(shù)學(xué)基礎(chǔ)課程的教學(xué)進(jìn)度而編寫的8個實(shí)驗(yàn);

1、軟件操作實(shí)驗(yàn):實(shí)驗(yàn)1、2是MATLAB的內(nèi)容;實(shí)驗(yàn)3、4是Mathematica

的內(nèi)容;

2、基礎(chǔ)實(shí)驗(yàn):原則上每個實(shí)驗(yàn)都可用MATLAB和Mathematica來作,

但實(shí)驗(yàn)1、2用MATLAB,實(shí)驗(yàn)3、4用Mathematica將更方便。

三、Matlab和Mathematica的基本命令。

第一篇數(shù)學(xué)軟件簡介

一、MATLAB軟件

一、概述

Matlab是由美國的Mathworks公司推出的一個科技應(yīng)用軟件。它的名字是由矩陣

(MATrix)和實(shí)驗(yàn)室(LABoratory)的頭三個字母組成。顧名思義,它相當(dāng)于把矩陣放在實(shí)

驗(yàn)里做實(shí)驗(yàn),Matlab是以矩陣為單位進(jìn)行處理的,也就是它把一切都當(dāng)作矩陣。即使是一

個數(shù)也是。比如:

-868

437

643,[357]

467

_759

Matlab是一種高性能的、用于工程計(jì)算的編程軟件,它把科學(xué)計(jì)算、結(jié)果的可視化和

編程都集中在一個使用非常方便的環(huán)境中。

一般來說,Matlab系統(tǒng)包括下面五個主要部分:

(1)編程語言:他是以矩陣和數(shù)組為基本單位的編程語言;

(2)工作環(huán)境:包括了一系列的應(yīng)用工具,提供編程和調(diào)試程序的環(huán)境;

(3)圖形處理:包括繪制二維、三維圖形和創(chuàng)建圖形用戶接口;

(4)數(shù)學(xué)庫函數(shù):包含了大量的數(shù)學(xué)函數(shù),也包括復(fù)雜的功能;

(5)應(yīng)用程序接口:提供接口程序,可使MATLAB與其它語言程序進(jìn)行交互。

Matlab典型的應(yīng)用包括以下兩方面:

(1)數(shù)值計(jì)算和符號計(jì)算;(2)建模和動態(tài)仿真

二、MATLAB基本的學(xué)習(xí)方法

作為一門高級語言,MATLAB和其它高級語言一樣,具有完善的幫助系統(tǒng)。如果同學(xué)

們能夠?qū)ATLAB的幫助系統(tǒng)很熟悉的話,自由運(yùn)用它進(jìn)行編程肯定沒有多大問題,另外

本講義附錄了有關(guān)命令,使得大家能夠更方便的使用幫助,更好的進(jìn)行學(xué)習(xí)。

1、help指令

在指令窗口中運(yùn)行help能夠獲得范圍不同的幫助信息,例如:

(1)運(yùn)行helphe電將得到如何使用help的提示;

(2)直接運(yùn)行help,會列出可以用于help顯示的所有主體(topic);

(3)helptopic可獲得每個topic的幫助;

比如,想對二維圖形(graph2d)編程有所了解,可運(yùn)行:

?helpgraph2d

(4)對每個teipic中的任何指令的用法,同樣可以用help來查看;

如對于二維圖形(graph2d)指令中的plot,用help查看則顯示如

?helpplot

2、lookfor指令

當(dāng)用戶要查找具有某種功能但不知道其準(zhǔn)確名字的指令時;help就無能為力了。而

lookfor可以根據(jù)用戶提供的完整或不完整的關(guān)鍵詞,去搜索出一組與之有關(guān)的指令,用戶

可從列表中挑選出滿足需要的指令。這被稱為“模糊查找。”不過這個命令所查找的范圍只

限于一個。

如利用lookfor指令查找矩陣求逆函數(shù)

?lookforinverse

3、doc、helpwin和helpdesk指令

在指令窗口中運(yùn)行doc、helpwin和helpdesk指令中的任何一個,都會打開一個名為[help]

的幫助窗口.大家自己在計(jì)算機(jī)上試一試。

4、demo指令

Demo指令用于查看集成于MATLAB環(huán)境內(nèi)的各種演示內(nèi)容。在MATLAB的指令窗口

鍵入Demo指令可以得到演示界面,從而可以方便的了解MATLAB的基本功能。

5、幫助菜單

啟動matlab應(yīng)用程序后,單擊[help]主菜單,則會彈出一系列子菜單,可以根據(jù)菜單直

接進(jìn)行操作

三、Matlab基礎(chǔ)知識介紹

1、MATLAB6工作環(huán)境簡介

①M(fèi)ATLAB6的啟動

?雙擊Windows桌面上的快捷圖標(biāo);

?從[開始]菜單的[程序]子菜單中的MATLAB6

2

?在MATLAB目錄中搜索到可執(zhí)行程序的matlab.exe,雙擊該程序使之啟動

啟動后的對話框如圖1,它大致包括以下幾個部分:

/Start|

圖1

?菜單項(xiàng);

?工具欄;

?[CommandWindow]窗口(指令窗口);

?[LaunchPad]窗口(分類幫助文件夾);

?[Workspace]窗口(工作臺);

?[CommandHistory]窗口(指令的歷史記錄);

?[CurrentDirectory]窗口(當(dāng)前目錄選項(xiàng))。

②MATLAB6菜單環(huán)境介紹

a)文件菜單[File]

文件菜單出了具有Windows一般應(yīng)用程序所具有的新建、打開、關(guān)閉、退出、

打印選項(xiàng)外,還包括如下選項(xiàng):

?[ImportData...]:有關(guān)數(shù)據(jù)的導(dǎo)入;

?[SaveWorkspaceAs...]:保存工作平臺;

?[Preferences…]:部分MATLAB工作環(huán)境的交互性設(shè)置

3

?[SetPath...]:設(shè)置當(dāng)前工作路徑。

b)編輯菜單[Edil]

編輯菜單出了具有Windows一般應(yīng)用程序所具有的撤消操作、重復(fù)操作、拷

貝、粘貼、全選選項(xiàng)外,還包括如下選項(xiàng)

?[ClearCommandWindow]:清除指令窗口;

?[ClearCommandHistory]:清除指令的歷史記錄;

?[ClearWorkspace]:清除工作臺。

c)視圖菜單(View)

視圖菜單為了改動MATLAB工作環(huán)境外觀,它可以決定顯不顯示界面上擺

布的一些窗口。大家可以對其中的每個菜單操作一下,看分別會出現(xiàn)什么效果。

d)網(wǎng)頁菜單[Web]

網(wǎng)頁菜單用于直接與MATLAB的生產(chǎn)商Mathworks工作的Internet聯(lián)網(wǎng),尋

求有關(guān)的幫助或獲得新的產(chǎn)品信息等。

e)窗口菜單[Window]

窗口菜單用于顯示當(dāng)前打開的M文件的文件名以及將它們一次全部關(guān)閉。

0幫助菜單[Help]

幫助菜單能為用戶及時提供所需要的幫助信息。

③常用窗口簡介

?指令窗口(CommandWindow):在提示符>>后直接輸入命令可以執(zhí)行相關(guān)的

命令

?指令歷史記錄窗口(CommandHistory):該窗口記錄著用戶每一次開啟

MATLAB的時間,以及每一次開啟MATLAB后在MATLAB指令窗口(Command

Window)中運(yùn)行過的所有指令行。這些指令行記錄可以被復(fù)制到指令窗口中再運(yùn)

行,從而減少了重新輸入的麻煩。選中該窗口中的任一指令記錄,然后單擊鼠標(biāo)右

鍵,則可根據(jù)菜單進(jìn)行相應(yīng)操作。

?工作臺窗口(Workspace):該程序窗口中列出了程序計(jì)算過程中產(chǎn)生的變量

及其對應(yīng)的數(shù)據(jù)的尺寸、字節(jié)和類型。選中一個變量,單擊鼠標(biāo)右鍵則可根據(jù)菜單

進(jìn)行相應(yīng)的操作。

2、語言規(guī)則

MATLAB要區(qū)分大小寫,它的命令全是小寫的;一行可以輸入幾個命令,用或

“,”隔開。如用“;”則該函數(shù)的執(zhí)行結(jié)果不顯示(圖形函數(shù)除外);如用“,”則該函數(shù)

的運(yùn)行結(jié)果要顯示。

4

3、數(shù)值與變量

①數(shù)值

MATLAB環(huán)境下的數(shù)值表示一般采用十進(jìn)制,可以帶小數(shù)點(diǎn)和正負(fù)號。下面的數(shù)

值都是合法的:

6+6-6.660.0066-60006.6e-6100e60-0.060e-012

在采用IEEE浮點(diǎn)算法的計(jì)算機(jī)上,數(shù)值的相對精度為eps,MATLAB規(guī)定一個

eps的值為2.2204e-016,即大約保持16位有效數(shù)字。

有時用戶希望在指令窗口中得到的是自己想要的數(shù)據(jù)形式,比如說是有理數(shù)

(Rational)形式,則可以通過在[File]主菜單中打開[Preferences]子菜單,并在對話框

中做相應(yīng)的選擇操作即可。

②變量

MATLAB是基于矩陣運(yùn)算的,因此其基本數(shù)據(jù)結(jié)構(gòu)只有一個:矩陣。一個數(shù)也是

矩陣。只不過它是1x1的矩陣。MATLAB中的變量可用來存放數(shù)據(jù),也可用來存放

向量或矩陣,并進(jìn)行各種運(yùn)算。

MALAB將所有變量均保存成double的形式,所以不需要經(jīng)過變量聲明。MATLAB

也會自動進(jìn)行內(nèi)存的使用和回收。

變量命名的規(guī)則為:

?變量名、函數(shù)名是對大小寫很敏感的,兩個字符串表示的變量,字母都相同,

大小寫不同,也視為不同的變量;

?第一個字母必須是英文字母;

?字符間不可留空格;

?最多只能有31個字符(只能用英文字母、數(shù)字和下連字符)

一行中“%”后的內(nèi)容僅作注釋用,對MATLAB的計(jì)算不產(chǎn)生任何影響。

③who、whos、clear和永久變量

who:用于檢查現(xiàn)存于空間(Workspace)的變量

whos:用于檢查現(xiàn)存于空間(Workspace)的變量的詳細(xì)資料

clear:用于刪除工作空間的變量;

永久變量:是變量的一種特殊情況,它在工作空間中看不到,但是使用者可直接

調(diào)用,如:pi等

④符號變量

在MATLAB中,如果沒有定義則不能對符號進(jìn)行引用,在對變量進(jìn)行引用時需要

先用syms命令創(chuàng)建符號變量和表達(dá)式。如:>>symsx

syms不僅可以聲明?個變量,還可以指定這個變量的數(shù)學(xué)特性,比如:

?聲明變量為實(shí)數(shù)類型,如:?symsxyreal

?聲明變量為整數(shù)類型,如:symsxypositive

?創(chuàng)建表達(dá)式,如:?f=syms(*cos(x)+sin(x),)

5

4、數(shù)據(jù)的輸入和輸出

(1)直接輸入:由于MATLAB都是將視為矩陣進(jìn)行操作,如果是單個元素則象計(jì)算

器?樣直接輸入元素,如果有多個元素,比如矩陣有多行多列的則用:

變量=表達(dá)式[;國U,]格式,其中行中元素間用“空格”或“,”分開;行與行之間用

或“回車”分開。如果一行寫不完,要用“…”作為繼行標(biāo)記(在英文狀態(tài)下輸入三

個句號);如果只有表達(dá)式,則會出現(xiàn)一個變量“ans”,“ans”為“answer”(答案)的縮寫,

引出運(yùn)算結(jié)果。值得注意的是整個矩陣分別用左右方括號和表示開始和結(jié)束。

比如:

?a=[l23;456;789]或

a=[l23

456

789]

(2)利用語句或函數(shù)產(chǎn)生

①“初值:步長:終值”產(chǎn)生一個行向量(行矩陣)。當(dāng)步長為1時可以省略。

如:?1:5;1:2:6,1:2:5

②特殊命令:

?linspace(x,x2,n):產(chǎn)生一個行向量,指定初值(x)、終值(x2)、向量資料(n)。

如:linspace(l,4,3);

?ones(n)或ones(n,m)或ones([n,m]):產(chǎn)生全一的矩陣。如:ones(5)。

?zeros(n)或zeros(n,m)或zeros([n,mj):產(chǎn)生全零的矩陣。如:zeros(5)。

?eye(n)或eye(n,m)或eye([n,m]):產(chǎn)生單位(或?qū)蔷€上為1)的矩陣。如:

eye(5);eye(2,4)。

?rand:產(chǎn)生平均分布的隨機(jī)矩陣。如:rand(3)。

?randn:產(chǎn)生正態(tài)分布的隨機(jī)矩陣

?diag(4,2)對角矩陣

?vander(2,4)范德蒙矩陣

(3)用input指令輸入單個參數(shù)

例如:小侯吃桃問題:有一天小侯摘下了若干個桃子,當(dāng)即吃掉了一半,還覺得

不過隱,又多吃了2個。第二天接著吃下剩下的一半,又多吃了2個。以后每天都是

吃掉尚存的一半零兩個。到第十天早上,小侯準(zhǔn)備吃桃子時,看到只剩下n個桃子了。

問小侯第一天共摘下多少個桃子?

分析:根據(jù)建立數(shù)學(xué)模型的步驟可以看到我們應(yīng)該怎樣分析這個問題,首先是根

據(jù)實(shí)際情況建立關(guān)系式,即我們說的數(shù)學(xué)模型,在建立模型時注意建立模型的各種常

用方法,這里用遞推法建立,然后運(yùn)用計(jì)算機(jī)來求解:

比如這個問題的答案與n有關(guān),設(shè)第k天的桃子數(shù)為Pk,變化規(guī)律(我們在建

立模型時實(shí)際上就是找到各個量之間的變化規(guī)律),首先令P0=n,利用遞推式

6

Pk-l=2(Pk+l)(k=10,9,8,...2)構(gòu)造循環(huán)算法。編寫Matlab程序如下:

n=input(4inputn:');

P(10)=n;

fork=10:-l:2

P(k-l)=2*(P(k)+2);

end

P(l)

(4)小型矩陣或用數(shù)據(jù)文件輸入

將資料以矩陣的形式輸入程序的開始部分,比如上次輸入了矩陣a,并保存到文

件:LABl.mat中,下次運(yùn)行時用loadLAB1(回車)就可以了,如果是用.M文件輸

入,則只要在命令窗口中輸入文件名就可以了。

5、矩陣元素的操作

(1)矩陣元素的提?。?/p>

現(xiàn)令a=[l23;456;789];b=[45-81];

?按矩陣元素的序號進(jìn)行提取:MATLAB是以列為單位計(jì)算的,它按列給矩陣

的元素編號,可用變量名加上下標(biāo)表示。如取b的第二個元素:b(2);取b的一二兩個元

素:b([l2])o

?按照矩陣的行列提?。篴(i,j):a矩陣的第i行與第j列的交叉元素的值,i與j

可以是向量,它們分別表示對矩陣的行和列進(jìn)行操作。如:

a(2,3):表示取第2行第3列的元素6;

a(2,[13]):表示取a第2行的第1列和第3列的元素4和6:

a([23],[13J):表示取a第2、3行的第1、3列的四個元素;

a(l,l:3):表示取a的第1行的第1列到第3列的所有元素;

a(l,:):表示取a的第1行的所有元素。

這里a(l,:)中的“:”是把列號省略的意思,就是所有的列,a(:,1)中的“:”是

把行號省略的意思。

(2)小矩陣構(gòu)造大矩陣

?c=[a;P21]]表示在矩陣a中加一行構(gòu)成矩陣c(列數(shù)必須相等)。

"11_

?現(xiàn)令d=[l23]\d2=[d,d]表示構(gòu)造d2=22、

_33_

?這里還有一?種矩陣的構(gòu)造方法:x(ml:m2,nl:n2)=a。注a是n行m列的矩陣,

生成的x是m2行n2列的矩陣,其中,m2-ml+l=n;n2-nl+『m,對應(yīng)元素為a的值,其余

的全為零。

7

如:x(l:4,2:4)=a;y(2:5,2:4)=a;

(3)口:可以用它來刪除矩陣的行列,或整個矩陣。

如:y(l,:)=[],x=[]

6、M文件的編輯與建立

MATLAB6可以有兩種常用的工作方式:一種是直接交互的指令行操作方式;另一種是M

文件的編程方式(程序的寫法見后)。前一種MATLAB給當(dāng)做一種高級的數(shù)學(xué)演算和計(jì)算可

視化器來使用。后一種相當(dāng)于集成環(huán)境。

M文件有兩種形式:命令文件和函數(shù)文件。這兩種文件的擴(kuò)展名相同,都是“.m”。當(dāng)

用戶要運(yùn)行的指令較多時,可以直接從鍵盤上逐行輸入指令,但這樣做顯得很麻煩;而命

令文件則可以較好的解決這一問題。用戶可以將一組相關(guān)命令編輯在同一個ASCH碼命令

中,運(yùn)行時只需輸入文件名,MATLAB就會自動按順序執(zhí)行文件中的命令,這類似于批處理

文件。函數(shù)文件是另一種形式的M文件,它的第一句可執(zhí)行語句是以function引導(dǎo)的定義

語句。在函數(shù)文件中的變量都是局部變量,它們在函數(shù)執(zhí)行過程中駐留在內(nèi)存中,在函數(shù)

執(zhí)行結(jié)束時自動消失。函數(shù)文件不單單具有命令文件的功能,更重要的是它提供了與其它

MATLAB函數(shù)和程序的接口,因此功能更強(qiáng)大。

(1)命令文件

命令文件中的語句可以訪問MATLAB工作空間(Workspace)中的所有數(shù)據(jù)。在運(yùn)行的

過程中所產(chǎn)生的變量均是全局變量。這些變量一旦生成,就?直保存在內(nèi)存空間中,除非

用戶將它們清除(如clear命令)。運(yùn)行一個命令文件等價于從指令窗U中按順序連續(xù)執(zhí)行

文件中的指令。由于命令文件只是一串指令的結(jié)合,因此程序不需要預(yù)先定義,而只需按

在指令窗口中的指令輸入順序,依次將指令編輯在命令文件中就可以(在指令窗口中的新

建m文件中進(jìn)入這個編輯窗口)。如果某個命令的結(jié)果不需要顯示出則在該命令后加上“:”,

注意文件名一定是“.m”。如

100

求下列1,2,3,4,…,100的和:s=Z〃程序如下:

n=\

s=0;

forn=l:100

s=s+n;

end

s

(2)函數(shù)文件

如果M文件的第一行包含function,則該文件就是函數(shù)文件。每個函數(shù)文件都定義一

個函數(shù)。從形式上看,函數(shù)文件于命令文件的區(qū)別在于:命令文件的變量在文件執(zhí)行完后

8

保留在內(nèi)存;而函數(shù)文件內(nèi)定義的變量僅在函數(shù)文件內(nèi)部起作用,當(dāng)函數(shù)文件執(zhí)行完成后,

這些內(nèi)部變量將被清除。

定義函數(shù)格式如下:

function因變量名=函數(shù)名(自變量名)

注意:函數(shù)名應(yīng)該和M文件名相同。

例:functiony=f(x)

y=sin(x);

7、運(yùn)算符及特殊字符

(1)算術(shù)運(yùn)算符

+加法運(yùn)算。適用于兩個數(shù)相加或兩個同階矩陣相加。如果是一個矩陣和一個數(shù)

字相加,則這個數(shù)字自動擴(kuò)展為與矩陣同維的一個矩陣。

減法運(yùn)算。適用于兩個數(shù)相加或兩個同階矩陣相加。如果是一個矩陣和一個數(shù)

字相減,則這個數(shù)字自動擴(kuò)展為與矩陣同維的一個矩陣。

*乘法運(yùn)算。適用于兩個數(shù)相乘或兩個可乘矩陣相乘。

.*點(diǎn)乘運(yùn)算。適用于兩個同階矩陣對應(yīng)元素相乘。

./點(diǎn)除運(yùn)算。適用于兩個同階矩陣對應(yīng)元素相除。

A乘幕運(yùn)算。適用于一個方陣的多少次方。

\反斜杠表示左除。如x=A\B可以得到矩陣方程Ax=B的解。

除、左除:a2/a3與a2*inv(a3)等價,a3\a2與等價inv(a3)*a2,要求a3的逆存在。inv

是求逆。

(2)關(guān)系運(yùn)算符

==等于如果矩陣A和B都為矩陣,則A和B必須具有相同的維數(shù),運(yùn)算時將

A中的元素和B中對應(yīng)元素進(jìn)行比較,如果相等,則在輸出矩陣的對應(yīng)位置輸出1,反之

輸出0。如果其中一個為數(shù),則將這個數(shù)與另一個矩陣的所有元素進(jìn)行比較。無論何種情

況,返回結(jié)果都與運(yùn)算的矩陣具有相同維數(shù)的由0和1組成的矩陣。函數(shù)eq(A,B)得到結(jié)果

一樣。

~=不等于如果矩陣A和B都為矩陣,則A和B必須具有相同的維數(shù),運(yùn)算時

將A中的元素和B中對應(yīng)元素進(jìn)行比較,如果相等,則在輸出矩陣的對應(yīng)位置輸出0,反

之輸出1。如果其中一個為數(shù),則將這個數(shù)與另個矩陣的所有元素進(jìn)行比較。無論何種

情況,返回結(jié)果都與運(yùn)算的矩陣具有相同維數(shù)的由。和1組成的矩陣。函數(shù)ne(A,B)得到結(jié)

果一樣。

<小于如果矩陣A和B都為矩陣,則A和B必須具有相同的維數(shù),運(yùn)算時將

A中的元素和B中對應(yīng)元素進(jìn)行比較,如果是小于關(guān)系,則在輸出矩陣的對應(yīng)位置輸出1,

反之輸出0。如果其中一個為數(shù),則將這個數(shù)與另一個矩陣的所有元素進(jìn)行比較。無論何

種情況,返回結(jié)果都與運(yùn)算的矩陣具有相同維數(shù)的由0和1組成的矩陣。函數(shù)lt(A,B)得到

9

結(jié)果一樣。

>大于如果矩陣A和B都為矩陣,則A和B必須具有相同的維數(shù),運(yùn)算時將

A中的元素和B中對應(yīng)元素進(jìn)行比較,如果是大于關(guān)系,則在輸出矩陣的對應(yīng)位置輸出1,

反之輸出0。如果其中一個為數(shù),則將這個數(shù)與另一個矩陣的所有元素進(jìn)行比較。無論何

種情況,返回結(jié)果都與運(yùn)算的矩陣具有相同維數(shù)的山0和1組成的矩陣。函數(shù)gt(A,B)得到

結(jié)果一樣。

<=小于等于如果矩陣A和B都為矩陣,則A和B必須具有相同的維數(shù),運(yùn)算

時將A中的元素和B中對應(yīng)元素進(jìn)行比較,如果是小于或等于關(guān)系,則在輸出矩陣的對應(yīng)

位置輸出1.反之輸出0。如果其中一個為數(shù),則將這個數(shù)與另一個矩陣的所有元素進(jìn)行比

較。無論何種情況,返回結(jié)果都與運(yùn)算的矩陣具有相同維數(shù)的由0和1組成的矩陣。函數(shù)

le(A,B)得到結(jié)果一樣。

>=大于等于如果矩陣A和B都為矩陣,則A和B必須具有相同的維數(shù),運(yùn)算

時將A中的元素和B中對應(yīng)元素進(jìn)行比較,如果是大于或等于關(guān)系,則在輸出矩陣的對應(yīng)

位置輸出1,反之輸出0。如果其中一個為數(shù),則將這個數(shù)與另一個矩陣的所有元素進(jìn)行比

較。無論何種情況,返回結(jié)果都與運(yùn)算的矩陣具有相同維數(shù)的山0和1組成的矩陣。函數(shù)

ge(A,B)得到結(jié)果一樣。

8、數(shù)學(xué)函數(shù)及其運(yùn)算

MATLAB中函數(shù)的函數(shù)都有?個共同的特點(diǎn):若自變量x為矩陣,則函數(shù)值也為x的

同階矩陣。即對x的每一元素分別求函數(shù)值;若自變量x為通常情況下的一個數(shù)據(jù),則函

數(shù)值是對應(yīng)于x的?個數(shù)據(jù)。MATLAB的函數(shù)有很多,后面有按照功能分類的各種函數(shù)和

工具箱,有興趣的同學(xué)可以通過幫助學(xué)習(xí),這里只介紹基本的函數(shù)。(在學(xué)習(xí)的過程中注意

利用幫助中的例子)。

(1)三角函數(shù)

sin(x)正弦函數(shù)asin(x)反正弦函數(shù)

cos(x)余弦函數(shù)acos(x)反余弦函數(shù)

tan(x)正切函數(shù)atan(x)反正切函數(shù)

(2)基本數(shù)學(xué)函數(shù)

abs(x)絕對值max(x)最大值

min(x)最小值sum(x)元素求和

sqrt(x)開平方exp(x)以e為底的指數(shù)

log(x)自然對數(shù)loglO(x)求以10為底數(shù)的函數(shù)

sign(x)正負(fù)符號函數(shù)fix(x)朝零方面取整

round(x)四舍五入到最近的整數(shù)floor(x)朝負(fù)無窮方向取整

rem(x,y)求兩整數(shù)相除的余數(shù)ceil(x)朝正無窮方向取整

10

conj(x)求復(fù)數(shù)的共軌imag(x)求復(fù)數(shù)的虛部

real(x)求復(fù)數(shù)的實(shí)部eig(x)求矩陣x的特征值

[x,d]=eig(A)求A的特征向量矩陣x及對角陣D

orth(x)將非奇異矩陣x正交規(guī)范化

(3)矩陣及其運(yùn)算

norm(A)求向量或矩陣的范數(shù)rank(A)求矩陣的秩

det(A)求矩陣的行列式trace(A)求矩陣的跡

inv(A)求方陣的逆矩陣

eig(A)求特征值及特征向量

schur(A)求矩陣的舒爾分解

rref(X)求矩陣X階梯形的行最簡形式

size(A)求矩陣的階數(shù)

(4)常用數(shù)值計(jì)算

①多項(xiàng)式的表示方法及其運(yùn)算

MATLAB中用行矢量表示多項(xiàng)式的系數(shù),行矢量中的各元素按照多項(xiàng)式的項(xiàng)的次數(shù)從

高到低排列。如p(x)=/+2x-3可以表示為p=[l02_3]。求此多項(xiàng)式當(dāng)x=5時的值p(4),

可以使用函數(shù)polyval(p,4);

polyvalm(p,X):第二個參數(shù)X是方陣,表示求以矩陣為自變量的多項(xiàng)式的值;

roots(p):找出一個多項(xiàng)式的根。

②多項(xiàng)式的曲線擬合

根據(jù)一組已知的自變量和函數(shù)值,應(yīng)用最小二乘法,求出多項(xiàng)式的擬合曲線,在

MATLAB中可以通過ployfit函數(shù)實(shí)現(xiàn)。函數(shù)形式為:p=polyfit(x,y,n)?

其中,前兩個輸入?yún)?shù)x,y都是矢量,表示已知的自變量取值和函數(shù)值,n為擬合多項(xiàng)

式的次數(shù)。

如:?x=[l2345];y=[5.640150250498.6];polyfit(x,y,3)

③求函數(shù)的最小值和零點(diǎn)

?求解一元函數(shù)的最小值:通過fminbnd(以前版本是fmin函數(shù))來求指定區(qū)間上的

函數(shù)的局部極小值。fminbndC函數(shù)名,,起點(diǎn),終點(diǎn));

?多元函數(shù)最小值:用fminsearch(以前版本是fmins)來求,它可以指定一個開始

的矢量,并非指定一個區(qū)間。此函數(shù)返回一個矢量為多元函數(shù)局部最小值對應(yīng)的自變量的

取值?!竚insearch('函數(shù)名',初始矢量);

?求函數(shù)的零點(diǎn):MATLAB中使用fzero來實(shí)現(xiàn),尋找零點(diǎn)時可以指定一個開始的

位置,或者指定一個區(qū)間。如果指定一個開始點(diǎn),函數(shù)首先在開始點(diǎn)附近尋找一個使函數(shù)

值變號的區(qū)間,如果不存在,則返回NaN。如果知道函數(shù)值在某個區(qū)間上變號,則可以把

這個區(qū)間作為參數(shù)。>>fzero(,函數(shù)名"[起點(diǎn),終點(diǎn)])或fzero。函數(shù)名"初始位置)。

④積分和微分運(yùn)算

?函數(shù)的定積分:quad.被積函數(shù),,積分下限,積分上限);

11

?微分運(yùn)算:diff(多項(xiàng)式矢量,微分階數(shù)),微分階數(shù)為1時可以省略。

⑤方程求解

?求解代數(shù)方程的根:用solve函數(shù),調(diào)用格式:p=solve(eq)

如:?symsxy

?[x,y]=solve('xA2+x*y+y=3','xA2-4*x+3=0')

有多少個未知數(shù)則需要在前面分別列出,如本例中的[x,y];如果等式的值為0,也可

以只寫等式右邊,$ll[x,y]=solve('xA2+x*y+y=3','xA2-4*x+3,);一般情況下,如果不能得到數(shù)

值解也會得到符號解,這是需要指出未知數(shù),如果沒有指出則表示x為未知數(shù)。如下例中

以b為未知數(shù):

?symsxb

?solve('xA2+x*b+b=3,,'b')

?微分方程:當(dāng)常微分方程能夠解析求解時,可以用MATLAB的符號工具箱中的

功能找到精確解。在微分方程難以獲得解析的情況下,可以方便的通過數(shù)值計(jì)算求解,高

階微分方程必須等價地變換成一階微分方程組進(jìn)行求解。這時用[t,y]=ode23(,函數(shù);的初

值,t的終值,y的初值)。

例381:描述震蕩器的經(jīng)典范得波(VarderPol)微分方程卓一(1一/)與+x=0

對于上述微分方程,通過重新定義兩個新的變量,來實(shí)現(xiàn)這種變換。令月=%且為=也,

dt

則高階微分方程變?yōu)閮蓚€低階的微分方程:

要解這個方程首先要建立一個M文件varr.m,內(nèi)容如下:

functionder=var(t,y)

der=[y(2)2*(1-y(1)八2)*y(2)-y(1)]';

函數(shù)的參數(shù)是時間t和一個二維向量,返回值是一個列向量,代表的是導(dǎo)數(shù)的值。

?[t,yj=ode23('var',[020M20J);

第一個參數(shù)是函數(shù)名,第二個是時間跨度,第三個是初值。

返回的t是一個矢量,y是個矩陣,分別代表微分方程兩個自變量在時間t的取值。

12

9、使用繪圖命令

使用MATLAB的繪圖命令,可以根據(jù)數(shù)據(jù)(或函數(shù))在計(jì)算機(jī)屏幕上繪制出對應(yīng)的圖

形,便于可視化計(jì)算,其圖形的操作請同學(xué)們根據(jù)菜單選項(xiàng)自己試一試,下面介紹兒個最

常用的繪圖命令:

①plot:繪制二維線性圖形及兩個坐標(biāo)軸;plot(x,y)表示以x為橫坐標(biāo),y為縱坐標(biāo)的

圖形。如:?x=0:pi/100:2*pi;y=sin(x);plot(x,y)

②pk)t3:繪制三維線性圖形及三個坐標(biāo)軸;一般格式:plot3(x,y,z)

如:?t=0:pi/100:6*pi;x=cos(t);y=sin(t);z=2*t;plot3(y,x,z)

③hist:統(tǒng)計(jì)直方圖,hist(X)

13

如:?x=randn(10000,1);hist(x)

10、數(shù)據(jù)處理

max求向量或矩陣最大值

min求向量或矩陣最小值

mean求向量或矩陣的平均值

median求向量或矩陣的中間值

sum求向量或矩陣的元素和

prod求向量或矩陣的元素乘積

find求向量中滿足條件的元素

length求向量所含元素個數(shù)

corrcoef求向量或矩陣的相關(guān)系數(shù)

四、Matlab的編程

由于使用MATLAB編程運(yùn)算與人進(jìn)行科學(xué)計(jì)算的思路和表達(dá)方式完全一致,這使MATLAB

受到廣大科技工作者的青睞,下面簡單介紹MATLAB編程所涉及的常用語句。

14

1、條件語句

在Matlab中,可以利用條件語句來實(shí)現(xiàn)分支算法,最簡單的條件語句是if語句。當(dāng)

條件滿足時,執(zhí)行條件后的指令;當(dāng)條件不滿足時,則不執(zhí)行條件后的指令。其具體格式

為:

if〈條件〉

.........)語句

end

在if語句的〈條件〉選項(xiàng)中通常應(yīng)有一個(或多個)邏輯表達(dá)式,但表達(dá)式的邏輯值

為真,則執(zhí)行〈條件〉后面的語句塊包含的指令;否則跳過〈條件〉后面的語句塊。在建

立邏輯表達(dá)式時,常用到的關(guān)系符有下面(見表)有九個符號:

名稱意義

==雙等號等于

<小于號小于

>大于號大于

<=小于等于號小于等于

>=大于等于號大于等于

Z-上波號與等號不等于

&與號邏輯與

1豎杠邏輯或

?

上波號邏輯非

einX

例1求函數(shù)/。)=藝匕的值。當(dāng)自變量X取值為零時,補(bǔ)充定義函數(shù)值為1。求該函數(shù)

X

值的程序用到了分支算法。用于分支算法的if語句,其格式為:

15

W1.1

if〈條件1〉x-inputinputx:1);

......................)語句塊1ifx==Q

else

y=1;

.........................)語句塊2

else

end

y=sin(x)/x;

end

y

上面語句的算法結(jié)構(gòu)是:當(dāng)條件1滿足時,執(zhí)行語句

塊1;當(dāng)條件不滿足時,則執(zhí)行語句塊2;當(dāng)條件較多時必須用分支算法,用于多分支算法

的if語句,其格式為:

if〈條件1)

......................)語句塊1

elseif〈條件2>

.........................)語句塊2

else

.............)語句塊3

end

2、循環(huán)語句

Matlab的循環(huán)語句有for循環(huán)語句和while循環(huán)語句兩種。

for循環(huán)語句用于重復(fù)執(zhí)行某些操作,直至循環(huán)變量達(dá)到終止為止。具體格式為:

for〈循環(huán)變量〉=〈初值〉:[步長]:〈終值〉

.............循環(huán)體

end

for循環(huán)語句常用于由數(shù)控制的循環(huán)算法。當(dāng)初值小于終值時,步長為正數(shù);當(dāng)初值大

16

于終值時,步長為負(fù)數(shù);當(dāng)步長被省略時,Matlab默認(rèn)值為1。

例2、

例2用雙重循環(huán)編寫程序生成4階Hilbert矩陣.

fori=1:4

forj=l:4

H(zJ)=l/(z+j-l);

end

end

111

1---

234

1111

1--

--

2345

-1

111-

1-

--X

345O

1111

1--

--

4567

while循環(huán)語句適用于由條件控制的循環(huán)算法的實(shí)現(xiàn).反復(fù)執(zhí)行某些操作,直到條件不

滿足為止.其具體格式為

while〈條件〉,

............循環(huán)

end

例3產(chǎn)生裴波拉奇數(shù)列:1,1,2,5,8,13,21,….要求數(shù)列之中最后一個數(shù)不超過1000.

數(shù)列產(chǎn)生的遞推公式為:九2=A+=1,2....),/,=1,/2=1.

f=[11];1=1;

while/(z)+/(z+l)<1000,

f(i+2)=f(i)+f(i+l);

i=i+1;

end

17

下面是將for語句和if語句結(jié)合起來一達(dá)到特殊的目的的一個例子.

在實(shí)現(xiàn)循環(huán)算法時常用到轉(zhuǎn)移語句.Matlab中的轉(zhuǎn)換語句是以if〈條件〉break,end

的格式來定義的.

例4用if…break語句跳出while循環(huán).計(jì)算無窮級數(shù)(-1)1彳的近似值.要求誤差

不超過l()To.

=l;s=1"==2;

whilen>1

an-an!n\

ifan<le—0l0ybreaksend

f=-f\s=s+/="+1;

end

S

這段程序執(zhí)行的結(jié)果,5=0.6321,誤差界限不超過

=1.1471-011(即1.1471x10-“).如果沒有轉(zhuǎn)移語句,程序見按照公式求和并一直進(jìn)

行下去永不休止,形成死循環(huán).

3、switch----case----end分支結(jié)構(gòu)

switch語句是多分支選擇語句,雖然在某些場合switch的功能可以由if語句的多層嵌

套來完成,但是會使程序變得復(fù)雜和難于修改維護(hù),而利用switch語句構(gòu)造多分支選擇時

顯得更加簡單明了、容易理解。

switch的基本用法為:

switch表達(dá)式

case常量表達(dá)式1

語句塊1

case常量表達(dá)式2

語句塊2

case{常量表達(dá)式n,常量表達(dá)式n+1,常量表達(dá)式n+2…}

語句塊n

18

otherwise

語句塊n+1

end

switch后面的表達(dá)式可以為任何類型,如字符串、矩陣等

當(dāng)表達(dá)式的值與case后面的某個表達(dá)式的值相等時,就執(zhí)行這個case后面的語句塊,

如果所有的常量表達(dá)式的值都與此表達(dá)式的值不匹配時,就執(zhí)行otherwise后面的語句塊。

與if語句不同的是,各個case和otherwise語句出現(xiàn)的先后順序并不會影響程序的執(zhí)

行結(jié)果,將otherwise語句放到case語句的前面也是合法的。

每個case后面的常量表達(dá)式可以有多個,而且可以是不同的類型,每個case中常量表

達(dá)式的值是可以重復(fù)的,這在語法上沒有錯誤,只是在執(zhí)行時后面那些符合條件的case語

句將被忽略,不會起作用。

每次只執(zhí)行一個語塊,執(zhí)行完一個語句塊后就退出switch語句。

例5我國新稅法規(guī)定:個體工商戶的生產(chǎn)、經(jīng)營所得和對事業(yè)單位的承包經(jīng)營、承租經(jīng)營

所得應(yīng)交納的個人所得稅為:全年收入中應(yīng)納稅所得稅部分稅率(%)

1、不超過5000元的5

2、超過5000元至10000元的部分10

3^超過10000元至30000元的部分20

4、超過30000元至50000元的部分30

5、超過50000元的部分35

functiony=shui(x)

x=input('inputx:1)

n=fix(x/1000);

switchn

case{0,1,2,3,4}

y=x*0.05;

case{5,6,7,8,9}

y=x*0.1;

case{10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29}

y=x*0.2;

case{30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49}

y=x*0.3;

otherwise

y=x*0.35;

end

19

第二章Mathematica

一、概述

Mathematica是美國Wolfram研究公司開發(fā)的目前較流行的數(shù)學(xué)軟件之一。它將幾何、

數(shù)值計(jì)算與代數(shù)有機(jī)結(jié)合到一起,可用于解決各種領(lǐng)域內(nèi)涉及的復(fù)雜符號計(jì)算和數(shù)值計(jì)算

問題。

系統(tǒng)自動按用戶輸入順序確定一個輸入號。用戶在確認(rèn)輸入后,系統(tǒng)自動進(jìn)行計(jì)算處

理,并輸出“In[輸入號]:="(作為輸入關(guān)鍵字)和其后緊跟的輸入內(nèi)容,以及“Out[輸入

號上="(作為輸出關(guān)鍵字)和輸出的對應(yīng)結(jié)果。

二、Mathematica基本學(xué)習(xí)方法

作為一門高級語言,Mathematica和其它高級語言一樣,具有完善的幫助系統(tǒng)。如果用

戶能夠?qū)athematica的幫助系統(tǒng)很熟悉的話,自由運(yùn)用它進(jìn)行編程肯定沒有多大問題,

另外本講義附錄了有關(guān)命令,使得大家能夠更方便的使用幫助,更好的進(jìn)行學(xué)習(xí)。

Mathematica中每個函數(shù)名及其詳細(xì)用法都可以通過菜單欄中的“Help”按鈕直接查到

(或用F1鍵)

點(diǎn)擊“Help”菜單下的HelpBrowser…后,出現(xiàn)如圖1的屏幕:

20

圖1

單擊MasterIndex按鈕可對命令作按字母順序查詢;單擊TheMathematicaBook按鈕

可閱讀內(nèi)置的Mathematica手冊;單擊Add-ons按鈕,可看到Mathematica的內(nèi)部可增加功

能與外部可增加功能;單擊GettingStarted/Demos按鈕,可順序觀看諸如:Malhemalica的

功能簡介、工作環(huán)境、安裝與反安裝、各種示例等信息;單擊OtherInformation按鈕,其

中包含有菜單介紹的有關(guān)內(nèi)容。若要查詢函數(shù)的具體用法,只須在上方對話框中鍵入函數(shù)

名(比如Sqrt),用鼠標(biāo)點(diǎn)擊GoTo,即得(如圖2)

圖2

我們可以看下面的FurtherExamples,這個下面有很關(guān)于這個函數(shù)的用法,大家可以把

里面的語句拷貝到我們的Mathematica運(yùn)行環(huán)境當(dāng)中,運(yùn)行就可以了!

21

三、Mathematica基礎(chǔ)知識介紹

1、Mathematica4.0工作環(huán)境簡介

①M(fèi)athematica4.0的啟動

?雙擊Windows桌面上的快捷圖標(biāo);

?從[開始]菜單的[程序]子菜單中的Mathematica4.0

②Mathematica4.0菜單環(huán)境介紹

a)文件菜單[File]

文件菜單出了具有Windows一般應(yīng)用程序所具有的新鍵、打開、關(guān)閉、退出、打

印選項(xiàng)外,還包括如下選項(xiàng):

?[SaveAsSpecial...]:用特殊格式保存:

?[OpenSpecial...]:用來打開非Mathematica默認(rèn)文件;

?[Import...]:打開一個Mathematica文件,并將其插入到當(dāng)前的NoteBook中;

?[SendTo...]:直接將NoteBook中的內(nèi)容插入到Email窗口;

?LPalettesJ:列出了目前可以使用的空模板;

?[NoteBooks]:列出了目前已經(jīng)打開的NoteBook窗口

?[GeneratePalettefromSelection]:將當(dāng)前NoteBook窗口轉(zhuǎn)換成模板

?[PrintSetting]:打印設(shè)置。其中包括頁面設(shè)置、打印設(shè)置、頁眉頁腳設(shè)置

?IPrintJ:打印

?[PrintSelection]:打印選擇內(nèi)容

?[Exit]:推出系統(tǒng)

b)編輯菜單[Edit]

該菜單主要是針對Mathematica系統(tǒng)的NoteBook區(qū)域的,它主要列出了對該區(qū)域

進(jìn)行的編輯與操作。該菜單出了具有Windows一般應(yīng)用程序所具有的撤消操作、重復(fù)操作、

拷貝、粘貼、全選選項(xiàng)外,還包括如下選項(xiàng)

?[InsertObject]:用來在當(dāng)前的NoteBook中插入圖片等對象;

?IMotion]:一些用鼠標(biāo)可以進(jìn)行的操作,如刪除、光標(biāo)移動等;

?[ExpressionInput]:表達(dá)式輸入的一些模板。

c)細(xì)胞菜單[Cell]

Mathematica系統(tǒng)中的Cell是指NoteBook中的用藍(lán)色中括號括起來的部分,大

Cell中可以包含很多層小Cell,它可以定義為各級標(biāo)題、計(jì)算區(qū)、重組等操作。主要包括

以下選項(xiàng):

?[Convent。]:將所選Cell轉(zhuǎn)換成的格式、DisplayAs顯示方式、DefaultInput

FormatType>DefaultOutputFormatType>DefaultIniineFormatType

一般使用StandardForm標(biāo)準(zhǔn)格式;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論