Matlab語言基礎(chǔ)編程教程11_第1頁
Matlab語言基礎(chǔ)編程教程11_第2頁
Matlab語言基礎(chǔ)編程教程11_第3頁
Matlab語言基礎(chǔ)編程教程11_第4頁
Matlab語言基礎(chǔ)編程教程11_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第頁MATLAB入門教程1.MATLAB的基本知識1-1、基本運算及函數(shù)在MATLAB下進行基本數(shù)學(xué)運算,只需將運算式直接打入提示號(>>)之後,并按入Enter鍵即可。例如:>>(5*2+1.3-0.8)*10/25ans=4.2000MATLAB會將運算結(jié)果直接存入一變數(shù)ans,代表MATLAB運算後的答案(Answer)并顯示其數(shù)值於螢?zāi)簧?。小提示?>>"是MATLAB的提示符號(Prompt),但在PC中文視窗系統(tǒng)下,由於編碼方式不同,此提示符號常會消失不見,但這并不會影響到MATLAB的運算結(jié)果。我們也可將上述運算式的結(jié)果設(shè)定給另一個變數(shù)x:x=(5*2+1.3-0.8)*10^2/25x=42此時MATLAB會直接顯示x的值。由上例可知,MATLAB認識所有一般常用到的加(+)、減(-)、乘(*)、除(/)的數(shù)學(xué)運算符號,以及冪次運算(^)。小提示:MATLAB將所有變數(shù)均存成double的形式,所以不需經(jīng)過變數(shù)宣告(Variabledeclaration)。MATLAB同時也會自動進行記憶體的使用和回收,而不必像C語言,必須由使用者一一指定.這些功能使的MATLAB易學(xué)易用,使用者可專心致力於撰寫程式,而不必被軟體枝節(jié)問題所干擾。若不想讓MATLAB每次都顯示運算結(jié)果,只需在運算式最後加上分號(;)即可,如下例:y=sin(10)*exp(-0.3*4^2);若要顯示變數(shù)y的值,直接鍵入y即可:>>yy=-0.0045在上例中,sin是正弦函數(shù),exp是指數(shù)函數(shù),這些都是MATLAB常用到的數(shù)學(xué)函數(shù)。下表即為MATLAB常用的基本數(shù)學(xué)函數(shù)及三角函數(shù):小整理:MATLAB常用的基本數(shù)學(xué)函數(shù)abs(x):純量的絕對值或向量的長度angle(z):復(fù)數(shù)z的相角(Phaseangle)sqrt(x):開平方real(z):復(fù)數(shù)z的實部imag(z):復(fù)數(shù)z的虛部conj(z):復(fù)數(shù)z的共軛復(fù)數(shù)round(x):四舍五入至最近整數(shù)fix(x):無論正負,舍去小數(shù)至最近整數(shù)floor(x):地板函數(shù),即舍去正小數(shù)至最近整數(shù)ceil(x):天花板函數(shù),即加入正小數(shù)至最近整數(shù)rat(x):將實數(shù)x化為分數(shù)表示rats(x):將實數(shù)x化為多項分數(shù)展開sign(x):符號函數(shù)(Signumfunction)。當x<0時,sign(x)=-1;當x=0時,sign(x)=0;當x>0時,sign(x)=1。>小整理:MATLAB常用的三角函數(shù)sin(x):正弦函數(shù)cos(x):馀弦函數(shù)tan(x):正切函數(shù)asin(x):反正弦函數(shù)acos(x):反馀弦函數(shù)atan(x):反正切函數(shù)atan2(x,y):四象限的反正切函數(shù)sinh(x):超越正弦函數(shù)cosh(x):超越馀弦函數(shù)tanh(x):超越正切函數(shù)asinh(x):反超越正弦函數(shù)acosh(x):反超越馀弦函數(shù)atanh(x):反超越正切函數(shù)變數(shù)也可用來存放向量或矩陣,并進行各種運算,如下例的列向量(Rowvector)運算:x=[1352];y=2*x+1y=37115小提示:變數(shù)命名的規(guī)則1.第一個字母必須是英文字母2.字母間不可留空格3.最多只能有19個字母,MATLAB會忽略多馀字母我們可以隨意更改、增加或刪除向量的元素:y(3)=2%更改第三個元素y=3725y(6)=10%加入第六個元素y=3725010y(4)=[]%刪除第四個元素,y=372010在上例中,MATLAB會忽略所有在百分比符號(%)之後的文字,因此百分比之後的文字均可視為程式的注解(Comments)。MATLAB亦可取出向量的一個元素或一部份來做運算:x(2)*3+y(4)%取出x的第二個元素和y的第四個元素來做運算ans=9y(2:4)-1%取出y的第二至第四個元素來做運算ans=61-1在上例中,2:4代表一個由2、3、4組成的向量若對MATLAB函數(shù)用法有疑問,可隨時使用help來尋求線上支援(on-linehelp):helplinspace小整理:MATLAB的查詢命令help:用來查詢已知命令的用法。例如已知inv是用來計算反矩陣,鍵入helpinv即可得知有關(guān)inv命令的用法。(鍵入helphelp則顯示help的用法,請試看看?。﹍ookfor:用來尋找未知的命令。例如要尋找計算反矩陣的命令,可鍵入lookforinverse,MATLAB即會列出所有和關(guān)鍵字inverse相關(guān)的指令。找到所需的命令後,即可用help進一步找出其用法。(lookfor事實上是對所有在搜尋路徑下的M檔案進行關(guān)鍵字對第一注解行的比對,詳見後敘。)將列向量轉(zhuǎn)置(Transpose)後,即可得到行向量(Columnvector):z=x'z=4.00005.20006.40007.60008.800010.0000不論是行向量或列向量,我們均可用相同的函數(shù)找出其元素個數(shù)、最大值、最小值等:length(z)%z的元素個數(shù)ans=6max(z)%z的最大值ans=10min(z)%z的最小值ans=4小整理:適用於向量的常用函數(shù)有:min(x):向量x的元素的最小值max(x):向量x的元素的最大值mean(x):向量x的元素的平均值median(x):向量x的元素的中位數(shù)std(x):向量x的元素的標準差diff(x):向量x的相鄰元素的差sort(x):對向量x的元素進行排序(Sorting)length(x):向量x的元素個數(shù)norm(x):向量x的歐氏(Euclidean)長度sum(x):向量x的元素總和prod(x):向量x的元素總乘積cumsum(x):向量x的累計元素總和cumprod(x):向量x的累計元素總乘積dot(x,y):向量x和y的內(nèi)積cross(x,y):向量x和y的外積(大部份的向量函數(shù)也可適用於矩陣,詳見下述。)若要輸入矩陣,則必須在每一列結(jié)尾加上分號(;),如下例:A=[1234;5678;9101112];A=123456789101112同樣地,我們可以對矩陣進行各種處理:A(2,3)=5%改變位於第二列,第三行的元素值A(chǔ)=123456589101112B=A(2,1:3)%取出部份矩陣BB=565A=[AB']%將B轉(zhuǎn)置後以行向量并入AA=123455658691011125A(:,2)=[]%刪除第二行(:代表所有列)A=13455586911125A=[A;4321]%加入第四列A=134555869111254321A([14],:)=[]%刪除第一和第四列(:代表所有行)A=5586911125這幾種矩陣處理的方式可以相互疊代運用,產(chǎn)生各種意想不到的效果,就看各位的巧思和創(chuàng)意。小提示:在MATLAB的內(nèi)部資料結(jié)構(gòu)中,每一個矩陣都是一個以行為主(Column-oriented)的陣列(Array)因此對於矩陣元素的存取,我們可用一維或二維的索引(Index)來定址。舉例來說,在上述矩陣A中,位於第二列、第三行的元素可寫為A(2,3)(二維索引)或A(6)(一維索引,即將所有直行進行堆疊後的第六個元素)。此外,若要重新安排矩陣的形狀,可用reshape命令:B=reshape(A,4,2)%4是新矩陣的列數(shù),2是新矩陣的行數(shù)B=5891256115小提示:A(:)就是將矩陣A每一列堆疊起來,成為一個行向量,而這也是MATLAB變數(shù)的內(nèi)部儲存方式。以前例而言,reshape(A,8,1)和A(:)同樣都會產(chǎn)生一個8x1的矩陣。MATLAB可在同時執(zhí)行數(shù)個命令,只要以逗號或分號將命令隔開:x=sin(pi/3);y=x^2;z=y*10,z=7.5000若一個數(shù)學(xué)運算是太長,可用三個句點將其延伸到下一行:z=10*sin(pi/3)*...sin(pi/3);若要檢視現(xiàn)存於工作空間(Workspace)的變數(shù),可鍵入who:whoYourvariablesare:testfilex這些是由使用者定義的變數(shù)。若要知道這些變數(shù)的詳細資料,可鍵入:whosNameSizeBytesClassA2x464doublearrayB4x264doublearrayans1x18doublearrayx1x18doublearrayy1x18doublearrayz1x18doublearrayGrandtotalis20elementsusing160bytes使用clear可以刪除工作空間的變數(shù):clearAA???Undefinedfunctionorvariable'A'.另外MATLAB有些永久常數(shù)(Permanentconstants),雖然在工作空間中看不到,但使用者可直接取用,例如:pians=3.1416下表即為MATLAB常用到的永久常數(shù)。小整理:MATLAB的永久常數(shù)i或j:基本虛數(shù)單位eps:系統(tǒng)的浮點(Floating-point)精確度inf:無限大,例如1/0nan或NaN:非數(shù)值(Notanumber),例如0/0pi:圓周率p(=3.1415926...)realmax:系統(tǒng)所能表示的最大數(shù)值realmin:系統(tǒng)所能表示的最小數(shù)值nargin:函數(shù)的輸入引數(shù)個數(shù)nargin:函數(shù)的輸出引數(shù)個數(shù)1-2、重復(fù)命令最簡單的重復(fù)命令是for圈(for-loop),其基本形式為:for變數(shù)=矩陣;運算式;end其中變數(shù)的值會被依次設(shè)定為矩陣的每一行,來執(zhí)行介於for和end之間的運算式。因此,若無意外情況,運算式執(zhí)行的次數(shù)會等於矩陣的行數(shù)。舉例來說,下列命令會產(chǎn)生一個長度為6的調(diào)和數(shù)列(Harmonicsequence):x=zeros(1,6);%x是一個16的零矩陣fori=1:6,x(i)=1/i;end在上例中,矩陣x最初是一個16的零矩陣,在for圈中,變數(shù)i的值依次是1到6,因此矩陣x的第i個元素的值依次被設(shè)為1/i。我們可用分數(shù)來顯示此數(shù)列:formatrat%使用分數(shù)來表示數(shù)值disp(x)11/21/31/41/51/6for圈可以是多層的,下例產(chǎn)生一個16的Hilbert矩陣h,其中為於第i列、第j行的元素為h=zeros(6);fori=1:6,forj=1:6,h(i,j)=1/(i+j-1);endenddisp(h)11/21/31/41/51/61/21/31/41/51/61/71/31/41/51/61/71/81/41/51/61/71/81/91/51/61/71/81/91/101/61/71/81/91/101/11小提示:預(yù)先配置矩陣在上面的例子,我們使用zeros來預(yù)先配置(Allocate)了一個適當大小的矩陣。若不預(yù)先配置矩陣,程式仍可執(zhí)行,但此時MATLAB需要動態(tài)地增加(或減小)矩陣的大小,因而降低程式的執(zhí)行效率。所以在使用一個矩陣時,若能在事前知道其大小,則最好先使用zeros或ones等命令來預(yù)先配置所需的記憶體(即矩陣)大小。在下例中,for圈列出先前產(chǎn)生的Hilbert矩陣的每一行的平方和:fori=h,disp(norm(i)^2);%印出每一行的平方和end1299/871282/551650/2343524/2933559/4431831/8801在上例中,每一次i的值就是矩陣h的一行,所以寫出來的命令特別簡潔。令一個常用到的重復(fù)命令是while圈,其基本形式為:while條件式;運算式;end也就是說,只要條件示成立,運算式就會一再被執(zhí)行。例如先前產(chǎn)生調(diào)和數(shù)列的例子,我們可用while圈改寫如下:x=zeros(1,6);%x是一個16的零矩陣i=1;whilei<=6,x(i)=1/i;i=i+1;endformatshort1-3、邏輯命令最簡單的邏輯命令是if,...,end,其基本形式為:if條件式;運算式;endifrand(1,1)>0.5,disp('Givenrandomnumberisgreaterthan0.5.');endGivenrandomnumberisgreaterthan0.5.1-4、集合多個命令於一個M檔案若要一次執(zhí)行大量的MATLAB命令,可將這些命令存放於一個副檔名為m的檔案,并在MATLAB提示號下鍵入此檔案的主檔名即可。此種包含MATLAB命令的檔案都以m為副檔名,因此通稱M檔案(M-files)。例如一個名為test.m的M檔案,包含一連串的MATLAB命令,那麼只要直接鍵入test,即可執(zhí)行其所包含的命令:pwd%顯示現(xiàn)在的目錄ans=D:\MATLAB5\bincdc:\data\mlbook%進入test.m所在的目錄typetest.m%顯示test.m的內(nèi)容%ThisismyfirsttestM-file.%RogerJang,March3,1997fprintf('Startoftest.m!\n');fori=1:3,fprintf('i=%d>i^3=%d\n',i,i^3);endfprintf('Endoftest.m!\n');test%執(zhí)行test.mStartoftest.m!i=1>i^3=1i=2>i^3=8i=3>i^3=27Endoftest.m!小提示:第一注解行(H1helpline)test.m的前兩行是注解,可以使程式易於了解及管理。特別要說明的是,第一注解行通常用來簡短說明此M檔案的功能,以便lookfor能以關(guān)鍵字比對的方式來找出此M檔案。舉例來說,test.m的第一注解行包含test這個字,因此如果鍵入lookfortest,MATLAB即可列出所有在第一注解行包含test的M檔案,因而test.m也會被列名在內(nèi)。嚴格來說,M檔案可再細分為命令集(Scripts)及函數(shù)(Functions)。前述的test.m即為命令集,其效用和將命令逐一輸入完全一樣,因此若在命令集可以直接使用工作空間的變數(shù),而且在命令集中設(shè)定的變數(shù),也都在工作空間中看得到。函數(shù)則需要用到輸入引數(shù)(Inputarguments)和輸出引數(shù)(Outputarguments)來傳遞資訊,這就像是C語言的函數(shù),或是FORTRAN語言的副程序(Subroutines)。舉例來說,若要計算一個正整數(shù)的階乘(Factorial),我們可以寫一個如下的MATLAB函數(shù)并將之存檔於fact.m:functionoutput=fact(n)%FACTCalculatefactorialofagivenpositiveinteger.output=1;fori=1:n,output=output*i;end其中fact是函數(shù)名,n是輸入引數(shù),output是輸出引數(shù),而i則是此函數(shù)用到的暫時變數(shù)。要使用此函數(shù),直接鍵入函數(shù)名及適當輸入引數(shù)值即可:y=fact(5)y=120(當然,在執(zhí)行fact之前,你必須先進入fact.m所在的目錄。)在執(zhí)行fact(5)時,MATLAB會跳入一個下層的暫時工作空間(Temperaryworkspace),將變數(shù)n的值設(shè)定為5,然後進行各項函數(shù)的內(nèi)部運算,所有內(nèi)部運算所產(chǎn)生的變數(shù)(包含輸入引數(shù)n、暫時變數(shù)i,以及輸出引數(shù)output)都存在此暫時工作空間中。運算完畢後,MATLAB會將最後輸出引數(shù)output的值設(shè)定給上層的變數(shù)y,并將清除此暫時工作空間及其所含的所有變數(shù)。換句話說,在呼叫函數(shù)時,你只能經(jīng)由輸入引數(shù)來控制函數(shù)的輸入,經(jīng)由輸出引數(shù)來得到函數(shù)的輸出,但所有的暫時變數(shù)都會隨著函數(shù)的結(jié)束而消失,你并無法得到它們的值。小提示:有關(guān)階乘函數(shù)前面(及後面)用到的階乘函數(shù)只是純粹用來說明MATLAB的函數(shù)觀念。若實際要計算一個正整數(shù)n的階乘(即n!)時,可直接寫成prod(1:n),或是直接呼叫g(shù)amma函數(shù):gamma(n-1)。MATLAB的函數(shù)也可以是遞式的(Recursive),也就是說,一個函數(shù)可以呼叫它本身。舉例來說,n!=n*(n-1)!,因此前面的階乘函數(shù)可以改成遞式的寫法:functionoutput=fact(n)%FACTCalculatefactorialofagivenpositiveintegerrecursively.ifn==1,%Terminatingconditionoutput=1;return;endoutput=n*fact(n-1);在寫一個遞函數(shù)時,一定要包含結(jié)束條件(Terminatingcondition),否則此函數(shù)將會一再呼叫自己,永遠不會停止,直到電腦的記憶體被耗盡為止。以上例而言,n==1即滿足結(jié)束條件,此時我們直接將output設(shè)為1,而不再呼叫此函數(shù)本身。1-5、搜尋路徑在前一節(jié)中,test.m所在的目錄是d:\mlbook。如果不先進入這個目錄,MATLAB就找不到你要執(zhí)行的M檔案。如果希望MATLAB不論在何處都能執(zhí)行test.m,那麼就必須將d:\mlbook加入MATLAB的搜尋路徑(Searchpath)上。要檢視MATLAB的搜尋路徑,鍵入path即可:pathMATLABPATHd:\matlab5\toolbox\matlab\generald:\matlab5\toolbox\matlab\opsd:\matlab5\toolbox\matlab\langd:\matlab5\toolbox\matlab\elmatd:\matlab5\toolbox\matlab\elfund:\matlab5\toolbox\matlab\specfund:\matlab5\toolbox\matlab\matfund:\matlab5\toolbox\matlab\datafund:\matlab5\toolbox\matlab\polyfund:\matlab5\toolbox\matlab\funfund:\matlab5\toolbox\matlab\sparfund:\matlab5\toolbox\matlab\graph2dd:\matlab5\toolbox\matlab\graph3dd:\matlab5\toolbox\matlab\specgraphd:\matlab5\toolbox\matlab\graphicsd:\matlab5\toolbox\matlab\uitoolsd:\matlab5\toolbox\matlab\strfund:\matlab5\toolbox\matlab\iofund:\matlab5\toolbox\matlab\timefund:\matlab5\toolbox\matlab\datatypesd:\matlab5\toolbox\matlab\dded:\matlab5\toolbox\matlab\demosd:\matlab5\toolbox\tourd:\matlab5\toolbox\simulink\simulinkd:\matlab5\toolbox\simulink\blocksd:\matlab5\toolbox\simulink\simdemosd:\matlab5\toolbox\simulink\deed:\matlab5\toolbox\local此搜尋路徑會依已安裝的工具箱(Toolboxes)不同而有所不同。要查詢某一命令是在搜尋路徑的何處,可用which命令:whichexpod:\matlab5\toolbox\matlab\demos\expo.m很顯然c:\data\mlbook并不在MATLAB的搜尋路徑中,因此MATLAB找不到test.m這個M檔案:whichtestc:\data\mlbook\test.m要將d:\mlbook加入MATLAB的搜尋路徑,還是使用path命令:path(path,'c:\data\mlbook');此時d:\mlbook已加入MATLAB搜尋路徑(鍵入path試看看),因此MATLAB已經(jīng)"看"得到test.m:whichtestc:\data\mlbook\test.m現(xiàn)在我們就可以直接鍵入test,而不必先進入test.m所在的目錄。小提示:如何在其啟動MATLAB時,自動設(shè)定所需的搜尋路徑?如果在每一次啟動MATLAB後都要設(shè)定所需的搜尋路徑,將是一件很麻煩的事。有兩種方法,可以使MATLAB啟動後,即可載入使用者定義的搜尋路徑:1.MATLAB的預(yù)設(shè)搜尋路徑是定義在matlabrc.m(在c:\matlab之下,或是其他安裝MATLAB的主目錄下),MATLAB每次啟動後,即自動執(zhí)行此檔案。因此你可以直接修改matlabrc.m,以加入新的目錄於搜尋路徑之中。2.MATLAB在執(zhí)行matlabrc.m時,同時也會在預(yù)設(shè)搜尋路徑中尋找startup.m,若此檔案存在,則執(zhí)行其所含的命令。因此我們可將所有在MATLAB啟動時必須執(zhí)行的命令(包含更改搜尋路徑的命令),放在此檔案中。每次MATLAB遇到一個命令(例如test)時,其處置程序為:1.將test視為使用者定義的變數(shù)。2.若test不是使用者定義的變數(shù),將其視為永久常數(shù)。3.若test不是永久常數(shù),檢查其是否為目前工作目錄下的M檔案。4.若不是,則由搜尋路徑尋找是否有test.m的檔案。5.若在搜尋路徑中找不到,則MATLAB會發(fā)出嗶嗶聲并印出錯誤訊息。以下介紹及MATLAB搜尋路徑相關(guān)的各項命令。1-6、資料的儲存及載入有些計算曠日廢時,那麼我們通常希望能將計算所得的儲存在檔案中,以便將來可進行其他處理。MATLAB儲存變數(shù)的基本命令是save,在不加任何選項(Options)時,save會將變數(shù)以二進制(Binary)的方式儲存至副檔名為mat的檔案,如下述:save:將工作空間的所有變數(shù)儲存到名為matlab.mat的二進制檔案。savefilename:將工作空間的所有變數(shù)儲存到名為filename.mat的二進制檔案。savefilenamexyz:將變數(shù)x、y、z儲存到名為filename.mat的二進制檔案。以下為使用save命令的一個簡例:who%列出工作空間的變數(shù)Yourvariablesare:BhjyansixzsavetestBy%將變數(shù)B及y儲存至test.matdir%列出現(xiàn)在目錄中的檔案.2plotxy.docfact.msimulink.doctest.m~$1basic.doc..3plotxyz.docfirst.doctemp.doctest.mat1basic.docbook.dotgo.mtemplate.doctestfile.datdeletetest.mat%刪除test.mat以二進制的方式儲存變數(shù),通常檔案會比較小,而且在載入時速度較快,但是就無法用普通的文書軟體(例如pe2或記事本)看到檔案內(nèi)容。若想看到檔案內(nèi)容,則必須加上-ascii選項,詳見下述:savefilenamex-ascii:將變數(shù)x以八位數(shù)存到名為filename的ASCII檔案。Savefilenamex-ascii-double:將變數(shù)x以十六位數(shù)存到名為filename的ASCII檔案。另一個選項是-tab,可將同一列相鄰的數(shù)目以定位鍵(Tab)隔開。小提示:二進制和ASCII檔案的比較在save命令使用-ascii選項後,會有下列現(xiàn)象:save命令就不會在檔案名稱後加上mat的副檔名。因此以副檔名mat結(jié)尾的檔案通常是MATLAB的二進位資料檔。若非有特殊需要,我們應(yīng)該盡量以二進制方式儲存資料。load命令可將檔案載入以取得儲存之變數(shù):loadfilename:load會尋找名稱為filename.mat的檔案,并以二進制格式載入。若找不到filename.mat,則尋找名稱為filename的檔案,并以ASCII格式載入。loadfilename-ascii:load會尋找名稱為filename的檔案,并以ASCII格式載入。若以ASCII格式載入,則變數(shù)名稱即為檔案名稱(但不包含副檔名)。若以二進制載入,則可保留原有的變數(shù)名稱,如下例:clearall;%清除工作空間中的變數(shù)x=1:10;savetestfile.datx-ascii%將x以ASCII格式存至名為testfile.dat的檔案loadtestfile.dat%載入testfile.datwho%列出工作空間中的變數(shù)Yourvariablesare:testfilex注意在上述過程中,由於是以ASCII格式儲存及載入,所以產(chǎn)生了一個及檔案名稱相同的變數(shù)testfile,此變數(shù)的值和原變數(shù)x完全相同。1-7、結(jié)束MATLAB有三種方法可以結(jié)束MATLAB:1.鍵入exit2.鍵入quit3.直接關(guān)閉MATLAB的命令視窗(Commandwindow)數(shù)值函數(shù)N[expr]表達式的機器精度近似值N[expr,n]表達式的n位近似值,n為任意正整數(shù)NSolve[lhs==rhs,var]求方程數(shù)值解NSolve[eqn,var,n]求方程數(shù)值解,結(jié)果精度到n位NDSolve[eqns,y,{x,xmin,xmax}]微分方程數(shù)值解NDSolve[eqns,{y1,y2,...},{x,xmin,xmax}]微分方程組數(shù)值解FindRoot[lhs==rhs,{x,x0}]以x0為初值,尋找方程數(shù)值解FindRoot[lhs==rhs,{x,xstart,xmin,xmax}]NSum[f,{i,imin,imax,di}]數(shù)值求和,di為步長NSum[f,{i,imin,imax,di},{j,..},..]多維函數(shù)求和NProduct[f,{i,imin,imax,di}]函數(shù)求積NIntegrate[f,{x,xmin,xmax}]函數(shù)數(shù)值積分優(yōu)化函數(shù):FindMinimum[f,{x,x0}]以x0為初值,尋找函數(shù)最小值FindMinimum[f,{x,xstart,xmin,xmax}]ConstrainedMin[f,{inequ},{x,y,..}]inequ為線性不等式組,f為x,y..之線性函數(shù),得到最小值及此時的x,y..取值ConstrainedMax[f,{inequ},{x,y,..}]同上LinearProgramming[c,m,b]解線性組合c.x在m.x>=b&&x>=0約束下的最小值,x,b,c為向量,m為矩陣LatticeReduce[{v1,v2...}]向量組vi的極小無關(guān)組數(shù)據(jù)處理:Fit[data,funs,vars]用指定函數(shù)組對數(shù)據(jù)進行最小二乘擬和data可以為{{x1,y1,..f1},{x2,y2,..f2}..}多維的情況emp:Fit[{10.22,12,3.2,9.9},{1,x,x^2,Sin[x]},x]Interpolation[data]對數(shù)據(jù)進行差值,data同上,另外還可以為{{x1,{f1,df11,df12}},{x2,{f2,.}..}指定各階導(dǎo)數(shù)InterpolationOrder默認為3次,可修改ListInterpolation[array]對離散數(shù)據(jù)插值,array可為n維ListInterpolation[array,{{xmin,xmax},{ymin,ymax},..}]FunctionInterpolation[expr,{x,xmin,xmax},{y,ymin,ymax},..]以對應(yīng)expr[xi,yi]的為數(shù)據(jù)進行插值Fourier[list]對復(fù)數(shù)數(shù)據(jù)進行付氏變換InverseFourier[list]對復(fù)數(shù)數(shù)據(jù)進行付氏逆變換Min[{x1,x2...},{y1,y2,...}]得到每個表中的最小值Max[{x1,x2...},{y1,y2,...}]得到每個表中的最大值Select[list,crit]將表中使得crit為True的元素選擇出來Count[list,pattern]將表中匹配模式pattern的元素的個數(shù)Sort[list]將表中元素按升序排列Sort[list,p]將表中元素按p[e1,e2]為True的順序比較list的任兩個元素e1,e2,實際上Sort[list]中默認p=Greater集合論:Union[list1,list2..]表listi的并集并排序Intersection[list1,list2..]表listi的交集并排序Complement[listall,list1,list2...]從全集listall中對listi的差集九、虛數(shù)函數(shù)Re[expr]復(fù)數(shù)表達式的實部Im[expr]復(fù)數(shù)表達式的虛部Abs[expr]復(fù)數(shù)表達式的模Arg[expr]復(fù)數(shù)表達式的輻角Conjugate[expr]復(fù)數(shù)表達式的共軛十、數(shù)的頭及模式及其他操作Integer_Integer整數(shù)Real_Real實數(shù)Complex_Complex復(fù)數(shù)Rational_Rational有理數(shù)(*注:模式用在函數(shù)參數(shù)傳遞中,如MyFun[Para1_Integer,Para2_Real]規(guī)定傳入?yún)?shù)的類型,另外也可用來判斷If[Head[a]==Real,...]*)IntegerDigits[n,b,len]數(shù)字n以b近制的前l(fā)en個碼元RealDigits[x,b,len]類上FromDigits[list]IntegerDigits的反函數(shù)Rationalize[x,dx]把實數(shù)x有理化成有理數(shù),誤差小于dxChop[expr,delta]將expr中小于delta的部分去掉,dx默認為10^-10Accuracy[x]給出x小數(shù)部分位數(shù),對于Pi,E等為無限大Precision[x]給出x有效數(shù)字位數(shù),對于Pi,E等為無限大SetAccuracy[expr,n]設(shè)置expr顯示時的小數(shù)部分位數(shù)SetPrecision[expr,n]設(shè)置expr顯示時的有效數(shù)字位數(shù)十一、區(qū)間函數(shù)Interval[{min,max}]區(qū)間[min,max](*Solve[3x+2==Interval[{-2,5}],x]*)IntervalMemberQ[interval,x]x在區(qū)間內(nèi)嗎?IntervalMemberQ[interval1,interval2]區(qū)間2在區(qū)間1內(nèi)嗎?IntervalUnion[intv1,intv2...]區(qū)間的并IntervalIntersection[intv1,intv2...]區(qū)間的交十二、矩陣操作a.b.c或Dot[a,b,c]矩陣、向量、張量的點積Inverse[m]矩陣的逆Transpose[list]矩陣的轉(zhuǎn)置Transpose[list,{n1,n2..}]將矩陣list第k行及第nk列交換Det[m]矩陣的行列式Eigenvalues[m]特征值Eigenvectors[m]特征向量Eigensystem[m]特征系統(tǒng),返回{eigvalues,eigvectors}LinearSolve[m,b]解線性方程組m.x==bNullSpace[m]矩陣m的零空間,即m.NullSpace[m]==零向量RowReduce[m]m化簡為階梯矩陣Minors[m,k]m的所有k*k階子矩陣的行列式的值(伴隨陣,好像是)MatrixPower[mat,n]陣mat自乘n次Outer[f,list1,list2..]listi中各個元之間相互組合,并作為f的參數(shù)的到的矩陣Outer[Times,list1,list2]給出矩陣的外積SingularValues[m]m的奇異值,結(jié)果為{u,w,v},m=Conjugate[Transpose[u]].DiagonalMatrix[w].vPseudoInverse[m]m的廣義逆QRDecomposition[m]QR分解SchurDecomposition[m]Schur分解LUDecomposition[m]LU分解Mathematica函數(shù)大全--運算符及特殊符號一、運算符及特殊符號 Line1;執(zhí)行Line,不顯示結(jié)果Line1,line2順次執(zhí)行Line1,2,并顯示結(jié)果?name關(guān)于系統(tǒng)變量name的信息??name關(guān)于系統(tǒng)變量name的全部信息!command執(zhí)行Dos命令n!N的階乘!!filename顯示文件內(nèi)容<<filename讀入文件并執(zhí)行Expr>>filename打開文件寫Expr>>>filename打開文件從文件末寫()結(jié)合率[]函數(shù){}一個表<*MathFun*>在c語言中使用math的函數(shù)(*Note*)程序的注釋#n第n個參數(shù)##所有參數(shù)rule&把rule作用于后面的式子%前一次的輸出%%倒數(shù)第二次的輸出%n第n個輸出var::note變量var的注釋"Astring"字符串Context`上下文a+b加a-b減a*b或ab乘a/b除a^b乘方base^^num以base為進位的數(shù)lhs&&rhs且lhs||rhs或!lha非++,--自加1,自減1+=,-=,*=,/=同C語言>,<,>=,<=,==,!=邏輯判斷(同c)lhs=rhs立即賦值lhs:=rhs建立動態(tài)賦值lhs:>rhs建立替換規(guī)則lhs->rhs建立替換規(guī)則expr//funname相當于filename[expr]expr/.rule將規(guī)則rule應(yīng)用于exprexpr//.rule將規(guī)則rule不斷應(yīng)用于expr知道不變?yōu)橹筽aram_名為param的一個任意表達式(形式變量)param__名為param的任意多個任意表達式(形式變量)二、系統(tǒng)常數(shù)Pi3.1415的無

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論