Mathematica的基本語法特征
第一次此使用Mathematica,需謹(jǐn)記以下幾點(diǎn):
Mathematica中大寫小寫是有區(qū)別的,如Name、name、NAME等是不同的變量名或函數(shù)名。
系統(tǒng)所提供的功能大部分以系統(tǒng)函數(shù)的形式給出,內(nèi)部函數(shù)一般寫全稱,而且一定是以大寫英文字母開頭,如Sin[x],Conjugate[z]等。
乘法即可以用*,又可以用空格表示,如2 3=2*3=6 ,x y,2Sin[x]等;乘冪可以用“^”表示,如x^0.5,Tan[x]^y。
自定義的變量可以取幾乎任意的名稱,長度不限,但不可以數(shù)字開頭。
當(dāng)你賦予變量任何一個值,除非你明顯地改變該值或使用Clear[變量名]或“變量名=.”取消該值為止,它將始終保持原值不變。
一定要注意四種括號的用法:()圓括號表示項(xiàng)的結(jié)合順序,如(x+(y^x+1/(2x)));[]方括號表示函數(shù),如Log[x],BesselJ[x,1];{}大括號表示一個“表”(一組數(shù)字、任意表達(dá)式、函數(shù)等的集合),如{2x,Sin[12Pi],{1+A,y*x}};[[]]雙方括號表示“表”或“表達(dá)式”的下標(biāo),如a[[2,3]]、{1,2,3}[[1]]=1。
Mathematica的語句書寫十分方便,一個語句可以分為多行寫,同一行可以寫多個語句(但要以分號間隔)。當(dāng)語句以分號結(jié)束時,語句計算后不做輸出(輸出語句除外),否則將輸出計算的結(jié)果。
數(shù)的表示及計算
在Mathematica中你不必考慮數(shù)的精確度,因?yàn)槌悄阒付ㄝ敵鼍龋琈athematica總會以絕對精確的形式輸出結(jié)果。例如:你輸入In[1]:=378/123,系統(tǒng)會輸出Out[1]:=126/41,如果想得到近似解,則應(yīng)輸入In[2]:=N[378/123,5],即求其5位有效數(shù)字的數(shù)值解,系統(tǒng)會輸出Out[2]:=3.0732,另外Mathematica還可以根據(jù)你前面使用的數(shù)字的精度自動地設(shè)定精度。
Mathematica與眾不同之處還在于它可以處理任意大、任意小及任意位精度的數(shù)值,如100^7000,2^(-2000)等數(shù)值可以很快地求出,但在其他語言或系統(tǒng)中這是不可想象的,你不妨試一試N[Pi,1000]。
Mathematica還定義了一些系統(tǒng)常數(shù),如上面提到的Pi(圓周率的精確值),還有E(自然對數(shù)的底數(shù))、I(復(fù)數(shù)單位),Degree(角度一度,Pi/180),Infinity(無窮大)等,不要小看這些簡單的符號,它們包含的信息遠(yuǎn)遠(yuǎn)大于我們所熟知的它們的近似值,它們的精度也是無限的。
“表”及其用法
“表”是Mathematica中一個相當(dāng)有用的數(shù)據(jù)類型,它即可以作為數(shù)組,又可以作為矩陣;除此以外,你可以把任意一組表達(dá)式用一個或一組大括號{}括起來,進(jìn)行運(yùn)算、存儲??梢哉f表是任意對象的一個集合。它可以動態(tài)地分配內(nèi)存,可以方便地進(jìn)行插入、刪除、排序、翻轉(zhuǎn)等等幾乎所有可以想象到的操作。
如果你建立了一個表,你可以通過下表操作符[[]](雙方括號)來訪問它的每一個元素,如我們定義table={2,Pi,Sin[x],{aaa,A*I}}為一個表,那么table[[1]]就為2,table[[2]]就是Pi,而table[[3,1]]表示嵌套在table中的子表{aaa,A*I}的第一個元素即aaa,table[[3,2]]表示{aaa,A*I}第二個元素即A*I。總之,表每一層次上并列的部分用逗號分割,表可以無窮嵌套。
你可以通過Append[表,表達(dá)式]或Prepend[表,表達(dá)式]把表達(dá)式添加到表的最前面或最后面,如Append[{1,2,3},a]表示{1,2,3,a}。你還可以通過Union[表1,表2,......],Jion[表1,表2,......]來把幾個表合并為一個表,二者不同在于Union在合并時刪除了各表中重復(fù)的元素,而后者僅是簡單的合并;你還可以使用Flatten[表]把表中所有子表"抹平"合并成一個表,而Patition[表,整數(shù)n]把表按每n個元素分段作為子表,集合成的表。如Flatten[{1,2,{Sin[x],dog},{{y}}}]表示{1,2,Sin[x],y},而Partition[{1,2,Sin[x],y},2]把表每兩個分段,結(jié)果為{{1,2},{Sin[x],y}};還可以通過Delete[表,位置]、Insert[表,位置]來向表中按位置插入或刪除元素,如要刪除上面提到的table中的aaa,你可以用Delete[table,{3,1}]來實(shí)現(xiàn);Sort[表]給出了表中各元素的大小順序,Reverse[表]、RotateLeft[表,整數(shù)n]、RotateRight[表,整數(shù)n]可以分別將一個表進(jìn)行翻轉(zhuǎn)、左轉(zhuǎn)n個元素、右轉(zhuǎn)n個元素等操作,Length[表]給出了表第一個層次上的元素個數(shù),Position[表,表達(dá)式]給出了表中出現(xiàn)該表達(dá)式的位置,Count[表,表達(dá)式]則給出表達(dá)式出現(xiàn)的次數(shù)。各種表的操作函數(shù)還有很多,這里就不再一一介紹了。
圖形函數(shù)
Mathematica的圖形函數(shù)十分豐富,用寥寥幾句就可以畫出復(fù)雜的圖形,而且可以通過變量和文件存儲和顯示圖形,具有極大的靈活性。
圖形函數(shù)中最有代表性的函數(shù)為Plot[表達(dá)式,{變量,下限,上限},可選項(xiàng)],(其中表達(dá)式還可以是一個“表達(dá)式表”,這樣可以在一個圖里畫多個函數(shù));變量為自變量;上限和下限確定了作圖的范圍;可選項(xiàng)可要可不要,不寫系統(tǒng)會按默認(rèn)值作圖,它表示對作圖的具體要求。——
例如Plot[Sin[x],{x,0,2*Pi},AspectRatio-1]表示在0<x<2Pi的范圍內(nèi)作函數(shù)Sin[x]的圖象,AspectRatio為可選項(xiàng),表示圖的x向y向比例,AspectRatio-1表示縱橫比例為1:1,如果不寫這一項(xiàng),系統(tǒng)默認(rèn)比例為1:GodenRatio,即黃金分割的比例(注意,可選項(xiàng)的寫法為可選項(xiàng)名-可選項(xiàng)值),Plot還有很多可選項(xiàng),如PlotRange表示作圖的值域,PlotPoint表畫圖中取樣點(diǎn)的個數(shù),越大則圖越精細(xì),PlotStyle來確定所畫圖形的線寬、線型、顏色等特性,AxesLabel表式在坐標(biāo)軸上作標(biāo)記等等。
除Plot外,還有二維參數(shù)方程作圖的ParametricPlot[{x(t),y(t)},{t,下限,上限},可選項(xiàng)]、三維作圖的Plot3D[二維函數(shù)表達(dá)式,{變量1,下限,上限},{變量2,下限,上限},可選項(xiàng)}]、三維參數(shù)方程作圖的ParametricPlot3D[{x(u,v),y(u,v),z(u,v)},{u,下限,上限},{v,下限,上限},可選項(xiàng)]、畫二維等高線圖ContourPlot[二元表達(dá)式,{變量1,下限,上限},{變量2,下限,上限},可選項(xiàng)}]、畫二維密度圖的DensityPlot[二元表達(dá)式,{變量1,下限,上限},{變量2,下限,上限},可選項(xiàng)}]等等不一而足。
除使用上述函數(shù)作圖以外,Mathematica還可以象其他語言一樣使用圖形元語言作圖,如畫點(diǎn)函數(shù)Point[x,y],畫線函數(shù)Line[x1,y1,x2,y2],畫圓的Circle[x,y,r],畫矩形和多邊形的Rectangle和Polygon,字符輸出的Text[字符串,輸出坐標(biāo)],還有顏色函數(shù)RGBColor[red,green,blue]、Hue[],GrayLevel[gray]來描述顏色的亮度、灰度、飽和度,用PointSize[相對尺度]、Thickness[相對尺度]來表示點(diǎn)和線的寬度。總之Mathematica可以精確地調(diào)節(jié)圖形的每一個特征。圖一和圖二就是用Plot3D和Plot作出的圖形。
數(shù)學(xué)函數(shù)的用法
Mathematica系統(tǒng)內(nèi)核提供了豐富的數(shù)學(xué)計算的函數(shù),包括極限、積分、微分、最值、極值、統(tǒng)計、規(guī)劃等數(shù)學(xué)的各個領(lǐng)域,復(fù)雜的數(shù)學(xué)問題簡化為對函數(shù)的調(diào)用,極大地提高了解決問題的效率。
Mathematica提供了所有的三角、反三角、雙曲、反雙曲、各種特殊函數(shù)(如貝塞爾函數(shù)系、橢圓函數(shù)等),各種復(fù)數(shù)函數(shù)(如Im[z],Re[z],Conjugate[z],Abs[z],Arg[z]),各種隨機(jī)函數(shù)(如Random[n]可以通過不同的參數(shù)產(chǎn)生任意范圍內(nèi)整型、實(shí)型任意分布的隨機(jī)數(shù)),矩陣運(yùn)算函數(shù)(如求特征值特征向量的EigenVector[],EigenValue[],求逆的Inverse[]等)?!?br /> Mathematica還提供了大量數(shù)學(xué)操作的函數(shù),如取極限的Limit[f[x],{x,a}],求微分的D[f[x],x],全微分的Dt[f[x],x],不定積分的Integrate[f[x],x]和定積分的Integrate[f[x],{x,a,b}],解任意方程的Solve[lhs=rhs,x]及微分方程的DSolve[lhs=rhs,x],解冪級數(shù)和付立葉展開的Series[f[x]],F(xiàn)ourier[f[x]]及其逆變化InverseSeries,InverseFourier,求和函數(shù)Sum[],求積函數(shù)Product[],以上函數(shù)均可以適用于多維函數(shù)或多維方程?!?br /> Mathematica中還有相當(dāng)數(shù)量的數(shù)值計算函數(shù),最常用的是N[表達(dá)式,整數(shù)]可以求出表達(dá)式精確到指定有效數(shù)字的數(shù)值解,還有如數(shù)值求積分的NIntegrate[],求方程數(shù)值根的NSolve[]和NDSolve[],最小、最大值的NFindMinimum[]和NFindMaximum[]等等?!?br /> Mathematica還有各種表達(dá)式操作的函數(shù),如取分子、分母的 Numerator[expr] ,Denormator[expr],取系數(shù)的Coefficient[expr],因式分解的Factor[expr],以及展開的Expand[expr]和ExpandAll[expr],表達(dá)式化簡的Simplify[expr]等。expr代表一個任意的表達(dá)式。
程序流程控制
作為一種語言,Mathematica提供了分支、循環(huán)、跳轉(zhuǎn)等程序控制語句,如If[test,block1,block2]表明滿足條件test,則執(zhí)行語句塊block1,否則執(zhí)行block2;Switch[expr,test1,block1,test2,block2,....]表示如果表達(dá)式expr的值等于第i個testi的值,則執(zhí)行語句塊blocki。
循環(huán)語句有For[賦初值,循環(huán)條件,增量語句,語句塊]表示如果滿足循環(huán)條件,則執(zhí)行語句塊和增量語句,直到不滿足條件為止,While[test,block]表明如果滿足條件test則反復(fù)執(zhí)行語句塊block,否則跳出循環(huán),Do[block,{i,imin,imax,istep}]與前者功能是相同的。還有Goto[lab],Label[lab]提供了程序中無條件跳轉(zhuǎn),Continue[]和Break[]提供了繼續(xù)循環(huán)或跳出循環(huán)的控制,Catch[語句塊1]和Throw[語句塊2]提供了運(yùn)算中對異常情況的處理。另外,在程序中書寫注釋可以用一對"(* *)"括起來,注釋可以嵌套。
其他
使用軟件時需注意以下幾點(diǎn)∶
1.使用幫助,Mathematica的幫助文件提供了Mathematica內(nèi)核的基本用法的說明,十分詳細(xì),可以參照學(xué)習(xí)。
2. 你可以使用“?符號名”或“??符號名”來獲得關(guān)于該符號(函數(shù)名或其他)的粗略或詳細(xì)介紹。符號名中還可以使用通配符,例如?M*,則系統(tǒng)將給出所有以M開頭的關(guān)鍵詞和函數(shù)名,再如??For將會得到關(guān)于For語句的格式和用法的詳細(xì)情況?!?br /> 3.在Mathematica的編輯界面中輸入語句和函數(shù),確認(rèn)光標(biāo)處于編輯狀態(tài)(不斷閃爍),然后按Insert鍵來對這一段語句進(jìn)行求值。如果語句有錯,系統(tǒng)將用紅色字體給出出錯信息,你可以對已輸入的語句進(jìn)行修改,再運(yùn)行。如果運(yùn)行時間太長,你可以通過Alt+.(Alt+句號)來中止求值。
4. 對函數(shù)名不確定的,可先輸入前面幾個字母(開頭一定要大寫),然后按Ctrl+K,系統(tǒng)會自動補(bǔ)全該函數(shù)名。
愛華網(wǎng)


