




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第三章Mathematica繪圖3.1二維繪圖3.2三維繪圖3.3動畫Mathematica軟件具有強(qiáng)大的繪圖功能,甚至被用來制作電影特效。針對科學(xué)計算的結(jié)果展示而言,其二維繪圖和三維繪圖功能十分完備。本章將介紹Mathematica最常用的二維繪圖函數(shù)和三維繪圖函數(shù),并結(jié)合科技論文中插圖的要求,闡述這些繪圖函數(shù)的常用參數(shù)和典型用法。3.4圖像處理基礎(chǔ)3.1二維繪圖3.1.1Plot函數(shù)Mathematica軟件集成了大量的二維繪圖函數(shù),這里重點討論常用的12種函數(shù),即Plot、DiscretePlot、ListPlot、ListLinePlot、Graphics、PolarPlot、ParametricPlot、ContourPlot、BarChart、PieChart、Show和Graphics函數(shù),并主要討論這些函數(shù)常用的參數(shù)配置和典型用法。Plot函數(shù)的基本語法為:Plot[函數(shù),{變量,初值,終值}],其典型實例如圖所示在圖3-1中,使用Plot函數(shù)繪制了正弦函數(shù)在0至2間的圖像,Plot函數(shù)在默認(rèn)參數(shù)下將繪制坐標(biāo)軸和曲線,這里的函數(shù)為Sin[x],變量為x,初值為0,終值為2。下面給圖3-1添加一些繪圖選項,使得圖3-1更加美觀,這些選項包括:(1)Axes選項,默認(rèn)為True,即顯示坐標(biāo)軸,如果設(shè)為False,則不顯示坐標(biāo)軸;(2)Frame選項,默認(rèn)為False,即不顯示邊框,如果設(shè)為True,則顯示邊框;(3)FrameLabel選項,用于設(shè)置邊框的標(biāo)簽,格式為“{{左標(biāo)簽,右標(biāo)簽},{下標(biāo)簽,上標(biāo)簽}}”,如果某個標(biāo)簽不顯示,則設(shè)為None;(4)LabelStyle選項,用于設(shè)置標(biāo)簽的顯示樣式,如標(biāo)簽字體等;(5)PlotStyle選項,用于設(shè)置繪圖的樣式,如線的粗細(xì)和顏色等;(6)ImageSize選項,用于設(shè)置顯示圖像的大小。在設(shè)置標(biāo)簽樣式時,常用于Style[表達(dá)式,樣式]函數(shù),該函數(shù)用于設(shè)置“表達(dá)式”的顯示“標(biāo)式”。在圖3-1的基礎(chǔ)上,添加一些選項設(shè)置,得到如圖3-2所示的圖形。Plot函數(shù)可以同時繪制多個函數(shù),要求這些函數(shù)的定義域相同。如圖3-3所示,Plot函數(shù)同時繪制了正弦函數(shù)和余弦函數(shù)在第一個正周期內(nèi)的圖形。Plot函數(shù)常用的選項參數(shù)還有AxesOrigin、PlotRange和Epilog等。其中,AxesOrigin指定坐標(biāo)軸的“原點”放置的位置,即指定坐標(biāo)軸的交叉點位置,僅用于顯示美觀。PlotRange用于指定顯示的范圍,如果為Full,則顯示全部數(shù)據(jù)的范圍;如果為Automatic,則為了顯示美觀,可能有些異常數(shù)據(jù)不顯示。Epilog選項非常重要,用于在圖形中插入圖形對象,典型實例如圖3-4所示。Epilog在繪制分段函數(shù)時尤其有用,如圖3-5所示。在繪制圓盤時,如果不使用Offset函數(shù)設(shè)置絕對半徑,而是使用語法Disk[{x,y},r]繪制半徑為r的圓盤,此時,r可以設(shè)為0.03,這時,應(yīng)使用如下的語句:3.1二維繪圖3.1.2DiscretePlot函數(shù)DiscretePlot函數(shù)用于繪制散離(時間)序列的圖形,其基本語法為“DiscretePlot[序列,{n,最小值,最大值,步長}]”,其中,“最小值”為1可省略,步長為1可省略;“序列”可以為多個序列,當(dāng)有多個序列時,使用花括號“{}”括起來。DiscretePlot函數(shù)的典型實例如圖3-6所示。在圖3-6中,“In[25]”使用Table函數(shù)生成了一個正弦函數(shù)序列x,使用了分號“;”結(jié)尾,表示這一行代碼的輸出不顯示在Notebook中。然后,“In[26]”調(diào)用DiscretePlot函數(shù)繪制離散序列圖,其中,各個參數(shù)或選項的作用如下:3.1.2DiscretePlot函數(shù)在圖3-7中,繪制的曲線為{x[[n]],x[[n]]+1}。DiscretePlot函數(shù)可用于繪制離散時間信號,多用于《信號與系統(tǒng)》等課程中。DiscretePlot函數(shù)可用于同時繪制多個離散序列,如圖3-7所示3.1.2DiscretePlot函數(shù)3.1二維繪圖3.1.3ListPlot函數(shù)ListPlot函數(shù)用于列表的繪制,典型語法為“ListPlot[列表或多個列表]”,如果為“多個列表”,需使用花括號“{}”將“多個列表”括起來,即以嵌套列表的形式。ListPlot函數(shù)最常用的選項為Filling和PlotMarkers。ListPlot函數(shù)的典型應(yīng)用實例如圖3-8所示。Epilog在繪制分段函數(shù)時尤其有用,如圖3-5所示。3.1.3ListPlot函數(shù)Filling選項用于指定點列的“填充”,如圖3-9所示Epilog在繪制分段函數(shù)時尤其有用,如圖3-5所示。3.1.3ListPlot函數(shù)ListPlot函數(shù)的參數(shù)為{{x1,y1},{x2,y2},{x3,y3},……}時,將以{xi,yi}為點的橫縱坐標(biāo)繪點,如圖3-10所示。3.1二維繪圖3.1.4ListLinePlot函數(shù)ListLinePlot函數(shù)與ListPlot函數(shù)的輸入?yún)?shù)相同,其各個參數(shù)的含義也相同,但是ListPlot繪制列表中的各個點,而ListLinePlot函數(shù)繪制列表中各個點的連線(不標(biāo)記各個點)。將圖3-10中“In[70]”的ListPlot函數(shù)更換為ListLinePlot函數(shù),此時將不繪制各個點,而是繪制連通各個點的連線,其結(jié)果如圖3-11所示。3.1二維繪圖3.1.4ListLinePlot函數(shù)在圖3-11中,為了使得圓的顯示效果更佳,這里在Table循環(huán)中,使用了步長0.01(在圖3-10中,步長為0.1)。(1)圓Circle[{x,y},r]生成圓心在坐標(biāo){x,y}處半徑為r的圓。(3)文本Text[字符串,{x,y}]在坐標(biāo){x,y}處顯示“字符串”。(2)圓盤Disk[{x,y},r]生成圓心在坐標(biāo){x,y}處半徑為r的填充圓盤。(4)點Point[{x,y}]生成坐標(biāo){x,y}處的點。Graphics函數(shù)用于將二維圖形數(shù)據(jù)轉(zhuǎn)化為可視圖形,其基本語法為:Graphics[二維圖形數(shù)據(jù),參數(shù)],這里最常用的“參數(shù)”為“Frame->True,FrameLabel->{{左邊框,右邊框},{下邊框,上邊框}}”,表示繪制邊框,并為邊框添加標(biāo)簽;而常用的“二維圖形數(shù)據(jù)”由如下的函數(shù)生成:3.1二維繪圖3.1.5Graphics函數(shù)(5)線段Line[{{x1,y1},{x2,y2},…}]生成連接{x1,y1}、{x2,y2}等點的線段。(7)三角形Triangle[{{x1,y1},{x2,y2},{x3,y3}}]生成以點{x1,y1}、{x2,y2}和{x3,y3}為頂點的實心三角形。6)矩形Rectangle[{x1,y1},{x2,y2}]以{x1,y1}為左下角、以{x2,y2}為右上角生成實心矩形。(8)多邊形Polygon[{{x1,y1},{x2,y2},…}]生成以點{x1,y1}和{x2,y2}等為頂點的實心多邊形。Graphics函數(shù)用于將二維圖形數(shù)據(jù)轉(zhuǎn)化為可視圖形,其基本語法為:Graphics[二維圖形數(shù)據(jù),參數(shù)],這里最常用的“參數(shù)”為“Frame->True,FrameLabel->{{左邊框,右邊框},{下邊框,上邊框}}”,表示繪制邊框,并為邊框添加標(biāo)簽;而常用的“二維圖形數(shù)據(jù)”由如下的函數(shù)生成:3.1二維繪圖3.1.5Graphics函數(shù)3.1.5Graphics函數(shù)上述介紹的函數(shù)均用于生成圖形數(shù)據(jù)。圖形往往具有多種屬性,例如線型和顏色等,這里需要借助于Directive函數(shù)將它們包括起來,例如,Directive[Blue,Thick,Dashed],指定屬性為藍(lán)色粗虛線。此外,常用EdgeForm和FaceForm指定圖形的邊和圖面的屬性。其他常用的屬性通過Thickness、RGBColor、Opacity、GrayLevel、Dashing和PointSize等函數(shù)指定,分別表示粗細(xì)、顏色、透明度、灰度、虛線和點的大小等。Graphics函數(shù)的功能十分強(qiáng)大;而Plot等函數(shù)由于本身已生成了Graphics對象,而無需使用Graphics進(jìn)行處理,例如:和是相同的功能。這里重點介紹上述8種“二維圖形數(shù)據(jù)”生成函數(shù)借助于Graphics函數(shù)生成二維圖形的實例,如圖3-12所示。3.1.5Graphics函數(shù)在圖3-12中,F(xiàn)ramed函數(shù)用于給整個圖形添加一個邊框;Graphics函數(shù)中共繪制了四個圖形和一個文本,依次為:使用藍(lán)色粗虛線作的圓(半徑為1.5,圓心坐標(biāo)為{0,0})、紅色的內(nèi)接正四邊形、綠色的圓盤(作為正四邊形的內(nèi)切圓)、藍(lán)色的正三角形(圓盤的內(nèi)接正三角形)和一個黑色的文本“Graphs”。圖3-12中,圖形的坐標(biāo)均使有了絕對坐標(biāo)。3.1二維繪圖3.1.6PolarPlot函數(shù)ParametricPlot函數(shù)是Plot函數(shù)的參數(shù)方程版本,其基本語法為:3.1二維繪圖3.1.7ParametricPlot函數(shù)ParametricPlot[{x(u,v),y(u,v)},{u,初值,終值},{v,初值,終值}]ParametricPlot[{x(t),y(t)},{t,初值,終值}]其中,x(t)表示曲線在x軸上的取值為t的函數(shù),y(t)表示曲線在y軸上的取值為t的函數(shù)。當(dāng)繪制多條曲線時,使用{{x1(t),y1(t)},{x2(t),y2(t)},…}替換{x(t),y(t)}已知長軸為5、短軸為3的橢圓曲線的參數(shù)方程為下面在圖3-14中繪制了上述參數(shù)方程的圖形ContourPlot函數(shù)用于繪制等高線,例如,繪制平面上函數(shù)f的等高線圖,使用“ContourPlot[f,{x,xmin,xmax},{y,ymin,ymax}]”;同時,ContourPlot函數(shù)也可用于繪制隱函數(shù)的曲線,即“ContourPlot[f==g,{x,xmin,xmax},{y,ymin,ymax}]”。ContourPlot函數(shù)的典型應(yīng)用實例如圖3-15所示。3.1二維繪圖3.1.8ContourPlot函數(shù)圖3-15中,繪制了兩個隱函數(shù)的圖形,其中,x2+y2=2為圓,而xSin(y)=0.1為關(guān)于原點的中心對稱曲線。BarChart函數(shù)用于繪制序列的條形圖,基本用法為“BarChart[列表,選項]”,常用的選項有ChartLabels和ChartElements,分別用于指定每個柱形元素的標(biāo)簽和形狀,典型應(yīng)用實例如圖3-16所示。3.1二維繪圖3.1.9BarChart函數(shù)在圖3-16中,“In[3]”輸入一個嵌套列表dat;“In[4]”使用BarChart函數(shù)繪制列表dat的柱狀圖,選項ChartLabels用于標(biāo)注每個柱狀圖的標(biāo)簽;“In[8]”在“In[4]”的基礎(chǔ)上,添加了一個選項ChartElements,用于指定繪制柱狀圖的圖形元素,這里使用黃色、綠色和藍(lán)綠色的圓盤繪制柱狀圖。PieChart函數(shù)用于制作餅狀圖,其基本語法為“PieChart[列表,選項]”,常用的選項有ChartLabels和SectorSpacing,用于確定各部分的標(biāo)簽和距離。PieChart函數(shù)的典型應(yīng)用實例如圖3-17所示。圖3-17中,“In[21]”輸入一個列表dat1;“In[22]”調(diào)用PieChart函數(shù)繪制列表dat1的餅狀圖,這里,ChartLabels用于為各個部分指定標(biāo)簽名;“In[23]”生成一個二維列表dat2;“In[26]”調(diào)用PieChart繪制dat2的餅狀圖,選項SectorSpacing用于指定各個扇形的間距(這里是0.1)和同心的不同餅圖的間距(這里為0.3)。3.1二維繪圖3.1.10PieChart函數(shù)3.1二維繪圖3.1.11Show函數(shù)Show函數(shù)有兩個作用,其一用作為已有的圖像填加新的選項,使之具有所需要的顯示效果;其二為將多個圖像疊加顯示。Show函數(shù)的典型應(yīng)用實例如圖3-18所示。3.1二維繪圖3.1.11Show函數(shù)在圖3-18中,“In[29]”使用PolarPlot函數(shù)繪制了圖形g1;“In[32]”使用Graphics輸出了紅色的圓圈g2;“In[33]”調(diào)用Show函數(shù)將兩者疊加在一幅圖像中。3.1二維繪圖3.1.12GraphicsGrid函數(shù)GraphicsGrid函數(shù)將多個圖形按矩陣組合進(jìn)行顯示,其語法為:“GraphicsGrid[{{g11,g12,…},{g21,g22,…},…}]”,其中的參數(shù)為二維嵌套列表,每個子列表對應(yīng)著一行圖形對象,子列表的個數(shù)為組合圖像的行數(shù)。GraphicsGrid函數(shù)的典型用法實例如圖3-19所示。3.1二維繪圖3.1.12GraphicsGrid函數(shù)在圖3-19中,“In[39]”繪制了正弦信號Sin(x)的圖形g1,這里使用了分號“;”表示圖形g1不顯示;同理,“In[40]”至“In[42]”依次繪制了正弦信號Sin(2x)、Sin(3x)和Sin(4x)的圖形g2、g3和g4。“In[43]”調(diào)用GraphicsGrid函數(shù)生成兩行兩列的圖像顯示陣列,第一行顯示g1和g2;第二行顯示g3和g4,如圖3-19中的“Out[43]”所示。這里的GraphicsGrid函數(shù)和Show函數(shù)可以用于三維圖形的顯示。3.2.1Plot3D函數(shù)3.2三維繪圖Mathematica軟件具有強(qiáng)大的三維繪圖功能,這里重點討論常用的10種函數(shù),即Plot3D、DiscretePlot3D、ParametricPlot3D、RevolutionPlot3D、SphericalPlot3D、ListPlot3D、ContourPlot3D、ListContourPlot3D、ListSurfacePlot3D和Graphics3D函數(shù),并主要討論這些函數(shù)常用的參數(shù)配置和典型用法。在三維直角坐標(biāo)系中繪制函數(shù)z=f(x,y)的圖形(空間曲面)使用函數(shù)Plot3D,其基本語法為Plot3D[{f1(x,y),f2(x,y),…},{x,xmin,xmax},{y,ymin,ymax},選項]Plot3D[f(x,y),{x,xmin,xmax},{y,ymin,ymax},選項]后者用于繪制多個圖形。這里常用的選項有Mesh和BoxRatios,分別用于設(shè)置曲面上的網(wǎng)絡(luò)線和三個坐標(biāo)軸的比例(默認(rèn)為1:1:0.4)Plot3D函數(shù)的典型用法實例如圖3-20所示在圖3-20中,繪制了兩個關(guān)于x-y平面對稱的曲面,其中選項BoxRatios設(shè)為Automatic,表示三個坐標(biāo)軸的尺度比例相同;Mesh設(shè)為None,表示在曲面上不繪制網(wǎng)格線;RegionFunction用于設(shè)定函數(shù)的取值區(qū)域,借助于Function函數(shù)(純函數(shù))指定范圍,這里的設(shè)定表示繪制z軸上z=4和z=9兩個平面間的曲面。3.2.2DiscretePlot3D函數(shù)3.2三維繪圖DiscretePlot3D函數(shù)繪制在平面上離散取值的函數(shù)值圖形,典型用法為:DiscretePlot3D[f(i,j),{i,{i1,i2,…}},{j,{j1,j2,…}}]DiscretePlot3D[f(i,j),{i,imin,imax,di},{j,jmin,jmax,dj}]其中,“{i,imin,imax,di}”表示i從imin按步長di增至imax,當(dāng)步長di為1時可以省略。同理,“{j,jmin,jmax,dj}”表示j從jmin按步長dj增至jmax,當(dāng)步長dj為1時可以省略。“{i,{i1,i2,…}}”表示i從列表{i1,i2,…}中取值;“{j,{j1,j2,…}}”表示j從列表{j1,j2,…}中取值。DiscretePlot3D函數(shù)的典型用法實例如圖3-21所示3.2.3ParametricPlot3D函數(shù)3.2三維繪圖ParametricPlot3D函數(shù)基于參數(shù)方程繪制三維曲線或曲面,典型語法為:ParametricPlot3D[{fx,fy,fz},{u,umin,umax},{v,vmin,vmax}]ParametricPlot3D[{fx,fy,fz},{u,umin,umax}]這里的fx、fy和fz分別為x、y和z方向上的函數(shù)。ParametricPlot3D函數(shù)的典型實例如圖3-22所示在圖3-22中,“In[76]”調(diào)用ParametricPlot3D函數(shù)繪制了一個三維曲線;而“In[93]”調(diào)用ParametricPlot3D函數(shù)繪制了一個球面3.2.4RevolutionPlot3D函數(shù)3.2三維繪圖RevolutionPlot3D函數(shù)用繪制繞z軸旋轉(zhuǎn)的曲面,其常用語法如下:(2)RevolutionPlot3D[{fx,fz},{t,tmin,tmax}]這里fx和fz為t的參數(shù)方程(1)RevolutionPlot3D[fz,{x,xmin,xmax}]這里fz為x的函數(shù)(3)RevolutionPlot3D[{fx,fz},{t,tmin,tmax},{?,?min,?max}]這里的?為繞z軸轉(zhuǎn)動的角度在圖3-23中,“In[106]”繪制了z=x2繞z軸旋轉(zhuǎn)的曲面;而“In[110]”繪制了(x-2)2+z2=1(以參數(shù)方程形式)繞z軸旋轉(zhuǎn)180度形成的曲面。3.2.5SphericalPlot3D函數(shù)3.2三維繪圖基于球坐標(biāo)繪制曲面使用函數(shù)SphericalPlot3D,其基本語法為:SphericalPlot3D[r,{?,?min,?max},{Φ,Φmin,Φmax}]其中,?為緯度方向上從z軸正方向開始的角度,而Φ為徑度方向上從x軸正方向開始的角度。SphericalPlot3D函數(shù)典型實例如圖3-24所示。在圖3-24中,Φ的輸入方法為“Esc鍵+f+Esc鍵”。“In[1]”繪制了一個半徑為1的單位球;“In[7]”繪制了r=2+2Sin(3)的曲面3.2.6ListPlot3D函數(shù)3.2三維繪圖ListPlot3D函數(shù)在三維空間中根據(jù)點列繪制曲面圖,其基本語法為:ListPlot3D[{{x1,y1,z1},{x2,y2,z2},…}]即繪制點列(x1,y1,z1)、(x2,y2,z2)等等ListPlot3D函數(shù)的典型用法實例如圖3-25所示在圖3-25中,“In[35]”生成一個嵌套列表dat1,“In[36]”將dat1的第一層壓平,得到列表dat2,此時dat2具有形式{{x1,y1,z1},{x2,y2,z2},…}。“In[37]”調(diào)用ListPlot3D函數(shù)基于dat2繪制曲面,如“Out[37]”所示。“In[40]”使用Plot3D繪制的z=1/(1+x2+y2)的圖形,如“Out[40]”所示。比較“Out[37]”和“Out[40]”可知,兩者相似(由于采樣間隔1較大,故Out[37]在曲面突變處更陡峭)。3.2.7ContourPlot3D函數(shù)3.2三維繪圖ContourPlot3D函數(shù)有兩種功能:其一,繪制三維空間的等高面圖,即“ContourPlot3D[f,{x,xmin,xmax},{y,ymin,ymax},{z,zmin,zmax}]”;其二,繪制等值面圖,即“ContourPlot3D[f==g,{x,xmin,xmax},{y,ymin,ymax},{z,zmin,zmax}]”。ContourPlot3D函數(shù)典型用法實例如圖3-26所示3.2.7ContourPlot3D函數(shù)3.2三維繪圖在圖3-26中,“In[46]”繪制了f(x,y,z)=x2/2+y2/4-z2/6的等高面圖;而“In[47]”繪制了x2/2+y2/4=z2/6的等值面圖。3.2.8ListContourPlot3D函數(shù)3.2三維繪圖ListContourPlot3D函數(shù)基于表示離散序列的列表繪制等高面圖,其典型語法為:“ListContourPlot3D[{{x1,y1,z1,f1},{x2,y2,z2,f2},….}]”,這里,fn表示fn(xn,yn,zn)。ListContourPlot3D函數(shù)典型用法實例如圖3-27所示3.2.8ListContourPlot3D函數(shù)3.2三維繪圖圖3-27中“Out[56]”顯示的圖形與圖3-26中“Out[46]”中的圖形相似,由于在“In[54]”中使用了步長0.1,使得“Out[56]”中的圖形不夠平滑。在圖3-27中,“In[54]”生成離散的三維點列dat1;“In[55]”將dat1壓平為兩層的嵌套列表dat2,使其具有形式{{x1,y1,z1,f1},{x2,y2,z2,f2},….};“In[56]”調(diào)用ListContourPlot3D函數(shù)繪制列表dat2的等高面圖3.2.9ListSurfacePlot3D函數(shù)3.2三維繪圖ListSurfacePlot3D函數(shù)根據(jù)三維空間的點列擬合得到其曲面圖,其典型語法為“ListSurfacePlot3D[{{x1,y1,z1},{x2,y2,z2},{x3,y3,z3},….}]”,典型實例如圖3-28所示。3.2.9ListSurfacePlot3D函數(shù)3.2三維繪圖在圖3-28中,“In[100]”生成了半徑為2的球面列表數(shù)據(jù)dat1,“In[101]”將壓平dat1的第一層得到列表dat2,使dat2具有形式{{x1,y1,z1},{x2,y2,z2},{x3,y3,z3},….}。“In[102]”調(diào)用ListSurfacePlot3D函數(shù)繪制dat2的擬合曲面。3.2.10Graphics3D函數(shù)3.2三維繪圖(1)點Point[{x,y,z}]生成在坐標(biāo)(x,y,z)處的點。(2)線Line[{{x1,y1,z1},{x2,y2,z2},…}]生成連接各個點的線段。(3)實心三角形Triangle[{{x1,y1,z1},{x2,y2,z2},{x3,y3,z3}}]生成連接三個點的填充三角形。(4)填充多邊形Polygon[{{x1,y1,z1},{x2,y2,z2},{x3,y3,z3},…}]生成連接多個點的填充多邊形。(5)文本Text[表達(dá)式,{x,y,z}]在(x,y,z)坐標(biāo)處以文本形式顯示表達(dá)式。Graphics3D函數(shù)將一些函數(shù)產(chǎn)生的圖形數(shù)據(jù)轉(zhuǎn)化為圖形顯示出來,其中常用的三維圖形數(shù)據(jù)生成函數(shù)包括:3.2.10Graphics3D函數(shù)3.2三維繪圖(6)填充球Ball[{x,y,z},r]生成球心在(x,y,z)半徑為r的球。(7)填充立方體Cube[{x,y,z},a]生成中心在(x,y,z)邊長為a的立方體。(8)填充四面體Tetrahedron[{{x1,y1,z1},{x2,y2,z2},{x3,y3,z3},{x4,y4,z4}]生成以四個點為頂點的實心四面體;Tetrahedron[{x,y,z},a]生成以(x,y,z)為中心、邊長為a的四面體。(9)圓錐體Cone[{{x1,y1,z1},{x2,y2,z2}},r]生成一個圓錐體,底面圓半徑為r,中心為(x1,y1,z1),頂點為(x2,y2,z2)。(10)圓柱體Cylinder[{{x1,y1,z1},{x2,y2,z2}},r]生成一個圓柱體,頂面和底面圓的圓心坐標(biāo)分別為(x1,y1,z1)和(x2,y2,z2),半徑為r。Graphics3D函數(shù)將一些函數(shù)產(chǎn)生的圖形數(shù)據(jù)轉(zhuǎn)化為圖形顯示出來,其中常用的三維圖形數(shù)據(jù)生成函數(shù)包括:上述函數(shù)生成的圖形數(shù)據(jù),需要借助于Graphics3D函數(shù)展示出來。Graphics3D函數(shù)典型用法實例如圖3-29所示。在圖3-29中,使用Graphics3D函數(shù)和Cylinder函數(shù)繪制一個圓柱體3.2.10Graphics3D函數(shù)3.3.1Animate函數(shù)3.3動畫Mathematica軟件可以創(chuàng)建具有復(fù)雜物理學(xué)動力特征的動畫。本節(jié)重點借助于常用的Animate函數(shù)和Manipulate函數(shù),通過改變繪圖函數(shù)的參數(shù)實現(xiàn)動畫效果。Animate函數(shù)用于播放動畫,其語法為“Animate[繪圖表達(dá)式,{u,umin,umax,step}]”或“Animate[繪圖表達(dá)式,{u,{u1,u2,…,un}}]”。其中,“{u,umin,umax,step}”表示控制參數(shù)u從umin依步長step增加到umax,當(dāng)步長step為1時可省略;“{u,{u1,u2,…,un}}”表示u在列表“{u1,u2,…,un}”中取值。同時,Animate函數(shù)還可以有多個控制參量。Animate函數(shù)的典型用法實例如圖3-30所示。3.3.1Animate函數(shù)Animate函數(shù)可以實現(xiàn)多個圖形疊加的動畫。下面繪制一個小圓球沿圓形軌道運行的動畫,如圖3-31所示。3.3.1Animate函數(shù)在圖3-31中,“In[20]”繪制了一個圓心在原點、半徑為2的圓g1;“In[30]”為自定義函數(shù)(參數(shù)第7.1.3節(jié))g2,表示繪制圓心在(x,y)、半徑為0.1的圓盤;在“In[22]”中通過Show函數(shù),將g1和g2疊加顯示,Animate函數(shù)通過控制參數(shù)t實現(xiàn)g2的動態(tài)變化,從而達(dá)到小圓盤g1沿著g2旋轉(zhuǎn)的動畫目的。3.3.2Manipulate函數(shù)3.3動畫Manipulate函數(shù)是可以控制參數(shù)變化的函數(shù),它與Animate函數(shù)的區(qū)別在于:Animate函數(shù)中控制參數(shù)是自動變化的;而Manipulate函數(shù)中控制參數(shù)是可以手動調(diào)節(jié)的(也能以播放的方式自動變化)。在Manipulate函數(shù)中可以查看控制參數(shù)在各個取值下的圖形形狀,因此,Manipulate函數(shù)的輸出中帶有控件,它的常用語法為“Manipulate[繪圖表達(dá)式,{u,umin,umax,step}]”或“Manipulate[繪圖表達(dá)式,{u,{u1,u2,…,un}}]”,其中,“{u,umin,umax,step}”表示控制參數(shù)u從umin依步長step增加到umax,當(dāng)步長step為1時可省略;“{u,{u1,u2,…,un}}”表示u在列表“{u1,u2,…,un}”中取值。同時,Manipulate函數(shù)還可以有多個控制參量,并為控制參數(shù)賦初始值u0,此時,用{u,u0}替換u。3.4.1圖像轉(zhuǎn)化為矩陣3.4圖像處理基礎(chǔ)Mathematica具有豐富的圖像處理函數(shù),這里重點討論圖像與矩陣間的轉(zhuǎn)換,即將矩陣轉(zhuǎn)化為圖像的方法和將圖像轉(zhuǎn)化為矩陣的方法。Mathematica在線資源庫中集成了常用的測試圖像,可以通過ExampleData函數(shù)讀取(計算機(jī)需要聯(lián)網(wǎng)),可以通過ColorConvert函數(shù)將彩色圖像轉(zhuǎn)化為灰度圖像,通過ImageResize調(diào)整圖像大小,通過ImageData得到與圖像對應(yīng)的數(shù)據(jù)矩陣(二維嵌套列表)。借助于ExampleData函數(shù)讀取Lena圖像的方法如圖3-33所示。3.4.1圖像轉(zhuǎn)化為矩陣圖3-33從Mathematica在線資源庫中讀取Lena圖像(注:原圖為彩色)可將圖3-33中的彩色Lena圖像轉(zhuǎn)化為灰度圖像,如圖3-34所示。3.4.1圖像轉(zhuǎn)化為矩陣通過ImageResize函數(shù)將圖3-34中的圖像轉(zhuǎn)化為256×256大小的灰度圖像,如圖3-35所示。3.4.1圖像轉(zhuǎn)化為矩陣借助ImageData函數(shù)獲得圖像數(shù)據(jù),如圖3-36所示。3.4.1圖像轉(zhuǎn)化為矩陣在圖3-36中,p4為圖3-35中p3圖像的數(shù)據(jù)矩陣,從圖像的左上角逐行生成矩陣的行,直到圖像的右下角。Dimensions函數(shù)返回矩陣p4(本質(zhì)上是二維嵌套列表)的大小;可以通過“[[]]”讀取圖像矩陣中的元素值。3.4.2矩陣轉(zhuǎn)化為圖像3.4圖像處理基礎(chǔ)借助于Image函數(shù)可矩陣轉(zhuǎn)化為圖像顯示,這里基于圖3-36中的p4進(jìn)行處理,如圖3-37所示。3.4.2矩陣轉(zhuǎn)化為圖像3.4圖像處理基礎(chǔ)在圖3-37中,UnitStep函數(shù)為單位階躍函數(shù),當(dāng)參數(shù)小于0時,返回0;否則,返回1。因此,“”將p4小于128的值轉(zhuǎn)化為0,大于128的值轉(zhuǎn)化為255。然后,借助于Image函數(shù)將p5轉(zhuǎn)化為圖像,如圖3-37中的“Out[60]”所示。顯然,p6是Lena圖像的“二值”圖像。本章詳細(xì)討論了Mathematica中二維圖形和三維圖形的繪圖方法。對于二維繪圖,重點討論了Plot函數(shù)、ListPlot函數(shù)和Show函數(shù)等12種函數(shù);對于三維繪圖,重點介紹了Plot3D函數(shù)、ParametricPlot3D函數(shù)和RevolutionPlot3D函數(shù)等10種繪圖函數(shù)。然后,闡述了Mathematica實現(xiàn)動畫的方法,借助于Animate函數(shù)和Manipulate函數(shù),基于各種繪圖函數(shù)可實現(xiàn)動畫顯示。最后,分析了Mathematica中圖像與矩陣相互轉(zhuǎn)化的常用函數(shù),這些函數(shù)廣泛應(yīng)用在圖像信息安全中。03本章小結(jié)第四章Mathematica微積分4.1極限4.2導(dǎo)數(shù)與偏導(dǎo)數(shù)4.3積分本章介紹使用Mathematica實現(xiàn)微積分運算的方法,重點闡述極限、導(dǎo)數(shù)、偏導(dǎo)數(shù)、積分和常微分方程等的計算方法。本章內(nèi)容可幫助理工科學(xué)生借助于Mathematica軟件解決《高等數(shù)學(xué)》中的問題,增強(qiáng)其微積分學(xué)習(xí)樂趣。微積分不僅是現(xiàn)代數(shù)學(xué)的基石,也是經(jīng)濟(jì)學(xué)的主要數(shù)學(xué)工具,還是相對論的主要數(shù)學(xué)方法。微積分是現(xiàn)代大學(xué)生必須掌握的基礎(chǔ)數(shù)學(xué)知識,而Mathematica針對微積分提供了完備的算法庫。極限運算是微積分的基礎(chǔ),本章將首先介紹極限運算。4.4常微分方程4.1極限01Limit[函數(shù)f,{x->x0},選項參數(shù)]計算自變量x趨于x0時的函數(shù)f的極限值02Limit[函數(shù)f,{x1->x10,x2->x20,…,xn->xn0},選項參數(shù)]計算當(dāng)xn->xn0、…、x2->x20和x1->x10的逐次極限;極限考察函數(shù)在其自變量變化過程中伴隨的函數(shù)值的趨勢。對于一元函數(shù),自變量的變化過程主要有兩種,其一為趨于無窮大,包括趨于正無窮大和負(fù)無窮大;其二為趨于特定的考察點,包括從大于該點的一側(cè)趨于該點和從小于該點的一側(cè)趨于該點。對于多元函數(shù),自變量在平面(或超平面)上沿任意路徑(或選定路徑)趨于其定義域中的考察點。Mathematica中,計算函數(shù)在自變量變化過程中的極限值使用Limit函數(shù),其基本語法為:03Limit[函數(shù)f,{x1,x2,…,xn}->{x10,x20,…,xn0},選項參數(shù)]計算當(dāng){x1,x2,…,xn}趨于{x10,x20,…,xn0}時的多變量極限。有以下四種情況(1)設(shè)定“選項參數(shù)”為Direction->FromAbove或Direction->-1,表示計算函數(shù)的右極限,即計算自變量從大于x0的一側(cè)趨于x0時的極限。一般地,借助Limit函數(shù)計算右側(cè)極限時使用“Direction->FromAbove”,因為《高等數(shù)學(xué)》中右側(cè)極限的自變量變化過程表示為“x->x0+”,即x從大于x0的一側(cè)趨于x0,與這里的“Direction->-1”(使用-1表示自變量趨向左側(cè))的表示方式不一致。(2)設(shè)定“選項參數(shù)”為Direction->FromBelow或Direction->+1,表示計算函數(shù)的左極限,即計算自變量從小于x0的一側(cè)趨于x0時的極限。一般地,借助Limit函數(shù)計算左側(cè)極限時使用“Direction->FromBelow”,在《高等數(shù)學(xué)》中左側(cè)極限的自變量變化過程表示為“x->x0-”,即x從小于x0的一側(cè)趨于x0,與這里的“Direction->+1”(使用+1表示自變量趨向右側(cè))的表示方式不一致。4.1極限Limit函數(shù)常用的“選項參數(shù)”為Direction,表示自變量的變化方向,缺省情況(選項參數(shù)為空)下表示Direction->Reals或Direction->"TwoSided",表示在實數(shù)范圍內(nèi)計算雙邊極限。通過設(shè)定“選項參數(shù)”可以計算單邊極限(3)設(shè)定“選項參數(shù)”為Direction->Complexes,表示沿所有復(fù)方向求函數(shù)的極限(4)設(shè)定“選項參數(shù)”為Direction->Exp[I?],表示沿著x0點處的曲線切線方向計算函數(shù)極限,稱為方向極限,其切線的方向角為?。4.1極限Limit函數(shù)的典型實例如圖4-1所示4.1極限Limit函數(shù)的典型實例如圖4-1所示在圖4-1中,“In[1]”計算當(dāng)x趨于0時Cos(x)的極限值,結(jié)果為1,如“Out[1]”所示;“In[2]”計算當(dāng)x趨于0時,Sin(x)/x的極限值,結(jié)果為1,如“Out[2]”所示。“In[3]”和“In[4]”計算|x|/x的單邊極限,這里,RealAbs[x]表示實數(shù)x的絕對值;“In[3]”計算|x|/x的右側(cè)極限,結(jié)果為1,如“Out[3]”所示;“In[4]”計算|x|/x的左側(cè)極限,結(jié)果為-1,如“Out[4]”所示。“In[5]”計算當(dāng)x趨于無窮大時函數(shù)(x2+x+1)/(3x2-5x+7)的極限值,其結(jié)果為1/3,如“Out[5]”所示;“In[6]”計算多元函數(shù)x2+y2-z2當(dāng)(x,y,z)趨于點(2,3,1)時的極限值,其結(jié)果為12,如“Out[6]”所示。4.2導(dǎo)數(shù)與偏導(dǎo)數(shù)4.2.1導(dǎo)數(shù)與偏導(dǎo)數(shù)運算本節(jié)將介紹導(dǎo)數(shù)與偏導(dǎo)數(shù)的計算方法,并詳細(xì)討論函數(shù)的級數(shù)展開式、方向?qū)?shù)與梯度以及全微分等計算方法。導(dǎo)數(shù)反映了函數(shù)的變化率,常用于求極值和近似計算等諸多方面。(1)Derivative[n][f]對函數(shù)f求n階導(dǎo)數(shù)(n為負(fù)整數(shù)時,表示|n|重不定積分)在Mathematica中,函數(shù)導(dǎo)數(shù)的計算借助于Derivative函數(shù)(或者“”),其基本語法為:(2)Derivative[n1,n2,…][f]對函數(shù)f的第一個自變量求導(dǎo)n1次,對第二個自變量求導(dǎo)n2次,依此類推(本質(zhì)上是計算偏導(dǎo)數(shù))4.2.1導(dǎo)數(shù)與偏導(dǎo)數(shù)運算對于多元函數(shù),Derivative函數(shù)可以計算其偏導(dǎo)數(shù)除了Derivative函數(shù)外,求偏導(dǎo)數(shù)(或?qū)?shù))的常用函數(shù)為D函數(shù),其語法如下:(1)D[f,x]求函數(shù)f關(guān)于x的一階偏導(dǎo)數(shù)(2)D[f,{x,n}]求函數(shù)f關(guān)于x的n階偏導(dǎo)數(shù)(3)D[f,x,y,z,…]求函數(shù)f關(guān)于x、y、z、…的一階偏導(dǎo)數(shù)(4)D[f,{x,n},{y,m},…]求函數(shù)f關(guān)于x的n階偏導(dǎo)數(shù)和關(guān)于y的m階偏導(dǎo)數(shù),依次類推(5)D[f,{{x1,x2,…}}]依次求函數(shù)f關(guān)于x1、x2、…的導(dǎo)數(shù),并組合成向量形式4.2.1導(dǎo)數(shù)與偏導(dǎo)數(shù)運算4.2.1導(dǎo)數(shù)與偏導(dǎo)數(shù)運算4.2導(dǎo)數(shù)與偏導(dǎo)數(shù)4.2.2級數(shù)如果f(x)在x=x0處具有任意階導(dǎo)數(shù),則f(x)可以x0處展開為泰勒級數(shù),即4.2.2級數(shù)在Mathematica中,使用Series函數(shù)求函數(shù)的級數(shù)展開式,其基本語法為:(1)Series[函數(shù),{x,x0,n}]求“函數(shù)”在x0處的級數(shù)展開式,展開至(x-x0)n(2)Series[函數(shù),{x,x0,n},{y,y0,m}]求“函數(shù)”在x0處的級數(shù)展開式,展開至(x-x0)n;再求其在y0處的級數(shù)展開式,展開至(y-y0)m4.2導(dǎo)數(shù)與偏導(dǎo)數(shù)4.2.3方向?qū)?shù)與梯度4.2導(dǎo)數(shù)與偏導(dǎo)數(shù)4.2.3方向?qū)?shù)與梯度4.2導(dǎo)數(shù)與偏導(dǎo)數(shù)4.2.3方向?qū)?shù)與梯度下面借助Grad函數(shù)計算u=x2+y3+z4在點A(1,0,1)處的梯度和沿A點指向B(3,-2,2)方向的方向?qū)?shù),如圖4-6所示。在圖4-6中,“In[9]”定義了函數(shù)f(x,y,z)。“In[10]”計算了函數(shù)f在(x,y,z)處的梯度g1,如“Out[10]”所示,這與使用D函數(shù)求向量形式的偏導(dǎo)數(shù)的用法相同,即“D[f[x,y,z],{{x,y,z}}]”也將返回梯度g1。“In[11]”使用替代運算符“/.”計算g1在點(1,0,1)處的梯度值,即函數(shù)f在(1,0,1)處的梯度值。“In[12]”輸入B點的坐標(biāo)(3,-2,2),如“Out[12]”所示;“In[13]”輸輸入A點的坐標(biāo)(1,0,1),如“Out[13]”所示。“In[14]”計算連接A和B的有向線段的單位向量,如“Out[14]”所示。“In[15]”計算函數(shù)f(x,y,z)沿連接A和B兩點的有向線段的方向?qū)?shù)。在Mathematica中,借助于函數(shù)Dt計算全微分,函數(shù)Dt的基本用法有三種:(1)Dt[函數(shù)f],其中“函數(shù)f”中的字符量均視為變量,對函數(shù)f求全微分;(2)Dt[函數(shù)f,x],此時,指定對自變量為x,其余字符量均視為x的函數(shù),并對x求全導(dǎo)數(shù);(3)Dt[函數(shù)f,{x,n}],此時,求基于x的n階全導(dǎo)數(shù),此時,除x之外的字符量均視為x的函數(shù)。4.2導(dǎo)數(shù)與偏導(dǎo)數(shù)4.2.4全微分全微分Dt函數(shù)的典型應(yīng)用實例如圖4-7所示在Mathematica中,借助于函數(shù)Dt計算全微分,函數(shù)Dt的基本用法有三種:(1)Dt[函數(shù)f],其中“函數(shù)f”中的字符量均視為變量,對函數(shù)f求全微分;(2)Dt[函數(shù)f,x],此時,指定對自變量為x,其余字符量均視為x的函數(shù),并對x求全導(dǎo)數(shù);(3)Dt[函數(shù)f,{x,n}],此時,求基于x的n階全導(dǎo)數(shù),此時,除x之外的字符量均視為x的函數(shù)。4.2導(dǎo)數(shù)與偏導(dǎo)數(shù)4.2.4全微分4.3積分01(1)Integrate[f,x]計算f關(guān)于x的不定積分02(2)Integrate[f,{x,xmin,xmax}]計算f關(guān)于x在[xmin,xmax]上的定積分本節(jié)將介紹不定積分和定積分運算方法以及傅里葉變換與拉普拉斯變換兩種常用的積分變換方法。定積分在工程應(yīng)用中被廣泛應(yīng)用,而傅里葉變換是現(xiàn)代工程技術(shù)的奠基性算法,是現(xiàn)代信號處理技術(shù)的出發(fā)點和核心內(nèi)容,也是量子計算的基礎(chǔ)算法。4.3.1積分運算Mathematica積分運算的函數(shù)為Integrate,其基本語法如下4.3積分03(3)Integrate[f,{x,xmin,xmax},{y,ymin,ymax},…]計算f關(guān)于x和y等的重積分本節(jié)將介紹不定積分和定積分運算方法以及傅里葉變換與拉普拉斯變換兩種常用的積分變換方法。定積分在工程應(yīng)用中被廣泛應(yīng)用,而傅里葉變換是現(xiàn)代工程技術(shù)的奠基性算法,是現(xiàn)代信號處理技術(shù)的出發(fā)點和核心內(nèi)容,也是量子計算的基礎(chǔ)算法。4.3.1積分運算Mathematica積分運算的函數(shù)為Integrate,其基本語法如下Integrate函數(shù)的定積分結(jié)果可以借助函數(shù)N轉(zhuǎn)化為小數(shù)顯示,也可以使用NIntegrate求定積分的近似數(shù)值。此外,Mathematica還支持使用積分符號實現(xiàn)積分操作。在Notebook中輸入“Esc鍵+int+Esc鍵”可輸入積分符號“”,下面首先介紹使用積分符號實現(xiàn)積分運算的操作,再介紹Integrate函數(shù)實現(xiàn)積分操作的方法。借助于積分符號實現(xiàn)積分操作的實例如下下面介如使用Integrate函數(shù)計算積分的典型應(yīng)用實例,如圖4-8和圖4-9所示4.3積分拉普拉斯變換和傅里葉變換是信號處理中常用的兩種積分變換,將信號從時域轉(zhuǎn)換到復(fù)頻域,突出信號特征并簡化信號分析過程。其中,拉普拉斯變換如下所示:4.3.2積分變換在Mathematica中,拉普拉斯正變換函數(shù)為LaplaceTransform,拉普拉斯逆變換函數(shù)為InverseLaplaceTransform;傅里葉正變換函數(shù)為FourierTransform,傅里葉逆變換函數(shù)為InverseFourierTransform。這里函數(shù)的語法如下:(1)LaplaceTransform[含自變量t的函數(shù)f,t,s]計算函數(shù)f(t)的拉普拉斯變換L(s);LaplaceTransform[含自變量t1,t2,…的函數(shù)f,{t1,t2,…},{s1,s2,…}]計算函數(shù)f(t1,t2,…)的拉普拉斯變換L(s1,s2,…)(2)InverseLaplaceTransform[含自變量s的譜函數(shù)L,s,t]計算譜函數(shù)L(s)的逆拉普拉斯變換f(t);InverseLaplaceTransform[含自變量s1,s2,…的譜函數(shù)L,{s1,s2,…},{t1,t2,…}]計算譜函數(shù)L(s1,s2,…)的拉普拉斯逆變換f(t1,t2,…)(3)FourierTransform[含自變量t的函數(shù)f,t,ω]計算函數(shù)f(t)的傅里葉變換F(ω);FourierTransform[含自變量t1,t2,…的函數(shù)f,{t1,t2,…},{ω1,ω2,…}]計算函數(shù)f(t1,t2,…)的傅里葉變換F(ω1,ω2,…)(4)InverseFourierTransform[含自變量s的譜函數(shù)F,ω,t]計算譜函數(shù)F()的傅里葉逆變換f(t);InverseFourierTransform[含自變量ω1,ω
2,…的譜函數(shù)F,{ω1,ω2,…},{t1,t2,…}]計算譜函數(shù)F(ω1,ω2,…)的傅里葉逆變換f(t1,t2,…)然而,工程中最常用的是離散傅里葉變換Fourier和離散傅里葉余弦變換FourierDCT,這里僅介紹離散傅里葉變換,其正變換和逆變換的形式如下:在Mathematica中,實現(xiàn)Fourier正變換的函數(shù)為Fourier,實現(xiàn)其逆變換的函數(shù)為InverseFourier,典型語法如下:(1)Fourier[列表]計算給定“列表”的離散傅里葉變換(2)InverseFourier[列表]計算給定“列表”的離散傅里葉逆變換4.4常微分方程含導(dǎo)數(shù)或微分的方程稱為微分方程,其一般形式為f(x,y,y,...,y(n))=0。微分方程的階數(shù)由方程中所含的導(dǎo)數(shù)或微分的最高階數(shù)決定。在Mathemtica中,使用DSolve函數(shù)獲取常系數(shù)微分方程的通解,其典型用法為“DSolve[常微分方程,函數(shù),自變量]”,典型實例如圖4-12所示。本章討論了Mathematica在高等數(shù)學(xué)方面的應(yīng)用,重點討論了極限、導(dǎo)數(shù)、偏導(dǎo)數(shù)、級數(shù)、方向?qū)?shù)、梯度、全微分、不定積分、定積分和常微分方程的求解等計算方法,并列舉了大量的典型實例。在計算過程中,建議經(jīng)常使用“”指令清除Notebook中的全局變量,以保證計算結(jié)果不受已定義的全局變量的影響。《高等數(shù)學(xué)》是應(yīng)用最普遍的數(shù)學(xué)分支,從日常生活到工程應(yīng)用、從生態(tài)經(jīng)濟(jì)到宇宙運行、從量子力學(xué)到火箭技術(shù),都滲透著高等數(shù)學(xué)的廣泛應(yīng)用。04本章小結(jié)第五章Mathematica矩陣運算5.1向量與矩陣5.2矩陣運算5.3矩陣操作在Mathematica中,向量與矩陣都以列表的形式存儲,向量對應(yīng)著一維列表,矩陣對應(yīng)著二維嵌套列表。列表操作函數(shù)可用于向量和矩陣操作,且任意符號和數(shù)值都可以作為矩陣元素參與矩陣運算。本章將介紹借助于Mathematica軟件進(jìn)行矩陣運算的方法,主要包括向量與矩陣定義、矩陣基本運算、矩陣變換和線性方程組求解等。矩陣代數(shù)是量子計算的主要數(shù)學(xué)工具,已經(jīng)成為推動微觀領(lǐng)域建模的重要數(shù)學(xué)方法。第五章Mathematica矩陣運算5.4解線性方程組5.5特征值與特征向量5.6矩陣對角化在Mathematica中,向量與矩陣都以列表的形式存儲,向量對應(yīng)著一維列表,矩陣對應(yīng)著二維嵌套列表。列表操作函數(shù)可用于向量和矩陣操作,且任意符號和數(shù)值都可以作為矩陣元素參與矩陣運算。本章將介紹借助于Mathematica軟件進(jìn)行矩陣運算的方法,主要包括向量與矩陣定義、矩陣基本運算、矩陣變換和線性方程組求解等。矩陣代數(shù)是量子計算的主要數(shù)學(xué)工具,已經(jīng)成為推動微觀領(lǐng)域建模的重要數(shù)學(xué)方法。5.1向量與矩陣FirstImpressionMaurisquamdolor,cursusatportaet,luctusegetpurus.Nunctemporluctusinterdum.稱為行列矩陣,簡稱矩陣。當(dāng)m=n時,相應(yīng)的矩陣稱為n階矩陣或者n階方陣。當(dāng)且僅當(dāng)兩個相同大小的向量對應(yīng)位置的元素相等時,兩個向量才是相等的。同樣地,當(dāng)且僅當(dāng)兩個相同大小的矩陣所有對應(yīng)位置的元素相等時,兩個矩陣才是相等的。在Mathematica中,向量和矩陣都是以列表的形式存儲,一個向量就是一個一維列表,而一個矩陣可由一個二層嵌套列表定義,且每個子列表的元素個數(shù)要相同,因為每個子列表對應(yīng)著矩陣的一行,矩陣的每行應(yīng)具有相同數(shù)目的元素。一般地,可通過構(gòu)造一個列表手動輸入一個向量或者矩陣,也可以利用內(nèi)建的制表函數(shù)或者專用矩陣生成函數(shù)來構(gòu)造向量和矩陣。5.1向量與矩陣5.1.1列表與矩陣(1)單層列表(向量)的輸入方法單層列表:“變量名={e1,e2,…,en}”。其中,ei,i=1,2,…,n表示列表元素。輸入一個變量名保存列表。一般地,變量名可為英文小寫字母開頭的符號串,也可以為希臘字符等,但是不能以數(shù)字開頭;此外,由于下劃線“_”在Mathematica中有特殊含義(用作模式匹配),因此,變量名中不應(yīng)使用下劃線。等號“=”為賦值符號,又稱為“立即賦值符號”,即賦值是立即完成的;相對而言,“:=”稱為延時賦值符號,每次調(diào)用或引用“變量”時才進(jìn)行賦值操作,常用于自定義函數(shù)中。列表花括號“{}”括起來,列表元素間用逗號“,”分隔。在Mathematica中,“空格”表示乘號,因此,列表元素不能用“空格”分隔,但是,列表元素可以用逗號“,”加零個或多個“空格”分隔。向量與矩陣均可以列表的形式輸入其中元素的方法直接構(gòu)造,其中的元素可以是整數(shù)、實數(shù)、復(fù)數(shù)或各種符號。向量和矩陣的輸入方法如下:5.1向量與矩陣5.1.1列表與矩陣(2)二層嵌套列表(矩陣)的輸入方法二層嵌套列表:“變量名={{a11,a12,…,a1n},{a21,a22,…,a2n},…,{am1,am2,…,amn}}”,其中,aij,i=1,2,…,m,j=1,2,…,n為列表元素。可以對單層列表或二層嵌套列表施加MatrixForm函數(shù),使列表以矩陣的形式顯示,其中,單層列表以列向量的形式顯示,二層嵌套列表以m行n列的數(shù)據(jù)表顯示。向量與矩陣均可以列表的形式輸入其中元素的方法直接構(gòu)造,其中的元素可以是整數(shù)、實數(shù)、復(fù)數(shù)或各種符號。向量和矩陣的輸入方法如下:例5-1將列表視為向量或矩陣,如圖5-1所示在圖5-1中,“In[1]”得到一維列表v1,如“Out[1]”所示;“In[2]”將v1以列向量的形式顯示,如“Out[2]”所示。這里,MatrixForm函數(shù)用于將列表以向量或矩陣的形式顯示,并為顯示的列表添加左右括號。“In[3]”輸入一個新的列表v2,如“Out[3]”所示,v2表明列表元素可以取數(shù)值或符號;“In[4]”輸入一個二維嵌套列表mt,即矩陣,并以矩陣形式顯示,如“Out[4]”所示。一般地,可以視為向量或矩陣的列表的情況有:(1)一維列表可以視為列向量;(2)二維嵌套列表,當(dāng)它的子列表元素個素相同時,才可以視為矩陣。此時,可以用MatrixQ函數(shù)判定嵌套列表是否為矩陣。5.1向量與矩陣5.1.2向量與矩陣函數(shù)Mathematica集成了豐富的向量與矩陣處理函數(shù),利用其內(nèi)置函數(shù)可創(chuàng)建規(guī)則的向量與矩陣。表5-1和表5-2分別列出了常用的構(gòu)造向量和矩陣的內(nèi)置函數(shù),其中Table函數(shù)最為常用,即可以構(gòu)造向量,也可以構(gòu)造矩陣。例5-2使用Table函數(shù)和Array函數(shù)構(gòu)造向量,如圖5-2所示在圖5-2中,“In[25]”使用Table函數(shù)構(gòu)造了向量{3,6,9,12},如“Out[25]”所示;“In[26]”使用Table函數(shù)構(gòu)造向量,每個元素為2i,i的取值為2依步長2增至10,得到的向量如“Out[26]”所示。“In[27]”使用了純函數(shù)“2#+3&”借助于Array生成了向量{5,7,9,11},如“Out[27]”所示。這里,純函數(shù)“2#+3&”中,“&”為純函數(shù)定義符,即純函數(shù)以“&”結(jié)尾,其中的“#”表示函數(shù)形參;在“In[27]”中,“形參”取值從1按步長1至4,對于每個參數(shù)的取值,計算“2×參數(shù)的值+3”,故得到如“Out[27]”所示結(jié)果。“In[28]”中定義了函數(shù)f,“In[29]”使用f函數(shù)和Array數(shù)組創(chuàng)建了一維向量,如“Out[29]”所示。例5-3利用表5-2中的函數(shù)構(gòu)造矩陣,如圖5-3所示在圖5-3中,“In[31]”使用Table構(gòu)造了一個3×5的矩陣mt1,如“Out[31]”所示;“In[32]”為自定義函數(shù)f(x,y),“In[33]”使用自定義函數(shù)f和Array函數(shù)生成矩陣mt2(與mt1相同),如“Out[33]”所示;“In[34]”生成三階單位矩陣,如“Out[34]”所示;“In[35]”以列表{1,3,5,7}為對角線生成對角陣mt4,如“Out[35]”所示。從上述例子可知,Table函數(shù)是最常用的構(gòu)造向量和矩陣的函數(shù),并且可利用Table函數(shù)構(gòu)造出一些特殊類型的矩陣,如表5-3所示例5-4用表5-3所示方法構(gòu)造一些特殊矩陣,如圖5-4所示在圖5-4中,“In[36]”調(diào)用“Clear["`*"]”清除已創(chuàng)建的全局變量的值;“In[37]”生成一個3×3的全0矩陣,如“Out[37]”所示;“In[40]”生成一個4×5的全1矩陣,如“Out[40]”所示;“In[42]”生成一個3×4的單位下三角陣(非0元素設(shè)為1),如“Out[42]”所示;“In[43]”生成一個4×4的單位上三角陣(非0元素設(shè)為1),如“Out[43]”所示。5.1向量與矩陣5.1.3向量與矩陣判定在Mathematica中,向量用單層列表表示,矩陣用二維嵌套列表表示,單個數(shù)值或符號稱為標(biāo)量。表5-4列舉了常用的向量與矩陣判定函數(shù)。例5-5向量或矩陣判定函數(shù)典型實例如圖5-5所示在圖5-5中,“In[45]”用Range函數(shù)生成一個列表v1,如“Out[45]”所示;“In[46]”使用VectorQ函數(shù)判定v1是否為向量,返回結(jié)果為True,如“Out[46]”所示,表明v1為向量;“In[47]”判定v1的第一個元素是否為數(shù),返回值True,如“Out[47]”所示,表明v1的第一個元素為數(shù)值。“In[48]”使用MatrixQ函數(shù)判別v1是否為矩陣,返回結(jié)果為False,如“Out[48]”所示,表明v1不是矩陣。在Mathematica中,向量和矩陣的概念區(qū)分嚴(yán)格。“In[49]”調(diào)用Dimensions函數(shù)得到向量v1的大小,如“Out[49]”所示。“In[50]”生成一個3行2列的矩陣mt1,如“Out[50]”所示;“In[51]”使用MatrixQ判定mt1是否為矩陣,返回True,如“Out[51]”所示;“In[52]”調(diào)用Dimensions函數(shù)返回mt1的維數(shù),如“Out[52]”所示。5.2矩陣運算FirstImpressionMaurisquamdolor,cursusatportaet,luctusegetpurus.Nunctemporluctusinterdum.Mathematica具有強(qiáng)大的矩陣運算能力,這里重點介紹常用的矩陣運算,包括矩陣的加法、減法、乘法、矩陣行列式、矩陣轉(zhuǎn)置和矩陣求逆等。5.2.1標(biāo)量運算在Mathematica中,標(biāo)量與向量和標(biāo)量與矩陣的運算主要有加法和數(shù)乘運算等,這兩種運算作用于列表中的每個元素。5.2.2矩陣算術(shù)運算兩個向量(或矩陣)求和運算要求參與運算的兩個向量(或矩陣)具有相同的大小(即行數(shù)和列數(shù))。向量(或矩陣)的點積(或乘法)運算用“.”運算符或Dot運算函數(shù),對于兩個矩陣的乘法而言,要求第一個矩陣的列數(shù)等于第二個矩陣的行數(shù)。三維向量的叉乘用“×”運算符或Cross函數(shù)。此外,Outer函數(shù)用于計算向量或矩陣的外積。例5-6標(biāo)量運算典型實例如圖5-6所示。在圖5-6中,“In[54]”生成了一個2行3列的矩陣mt1,如“Out[54]”所示。“In[55]”將mt1與10相加,此時,10與mt1的每個元素相加,計算結(jié)果如“Out[55]”所示;“In[56]”將10與mt1相乘,即10與mt1的每個元素相乘,計算結(jié)果如“Out[56]”所示。同理,“In[57]”至“In[59]”反映了標(biāo)量與向量的加法和數(shù)乘運算。例5-7典型向量和矩陣運算實例如圖5-7所示在圖5-7中,“In[87]”輸入兩個向量v1和v2;“In[88]”計算這兩個向量的和,對應(yīng)位置的元素相加,結(jié)果如“Out[88]”所示;“In[89]”計算向量v1和v2的乘積,對應(yīng)位置的元素相乘,結(jié)果如“Out[89]”所示;“In[90]”和“In[91]”均計算向量v1和v2的點積,得到結(jié)果8,如“Out[90]”和“Out[91]”所示。“In[92]”定義矩陣a和b;“In[93]”和“In[94]”均計算a和b的矩陣乘法(兩個相同大小的矩陣的標(biāo)量乘法使用“*”運算符),結(jié)果如“Out[93]”和“Out[94]”所示。“In[95]”定義了兩個三維向量b1和b2,“In[96]”和“In[97]”計算b1和b2的叉積,其結(jié)果如“Out[96]”和“Out[97]”所示,其中“In[96]”中的“×”用“Esc鍵+cross+Esc鍵”輸入。5.2矩陣運算FirstImpressionMaurisquamdolor,cursusatportaet,luctusegetpurus.Nunctemporluctusinterdum.5.2.3典型矩陣運算Mathematica集成了大量的矩陣處理函數(shù),表5-5列舉了常用的矩陣運算函數(shù)例5-8常用矩陣運算函數(shù)典型實例如圖5-8和圖5-9所示在圖5-8中,“In[2]”輸入一個2行3列的矩陣a1,如“Out[2]”所示;“In[3]”求矩陣a1的轉(zhuǎn)置矩陣a2,如“Out[3]”所示;“In[4]”輸入一個3行3列的方陣a3,如“Out[4]”所示;“In[5]”計算了矩陣a3的行列式的值,結(jié)果為26,如“Out[5]”所示。下面圖5-9在圖5-8的基礎(chǔ)上,展示了另一些矩陣運算函數(shù)的用法實例在圖5-9中,矩陣a3來自于圖5-8。“In[7]”求矩陣a3的子式構(gòu)造的矩陣,如“Out[7]”所示,其第(i,j)位置處的元素為a3中刪除第n-i+1行和第m-j+1列后的矩陣的行列式的值,這里的n表示行數(shù),m表示列數(shù)。“In[8]”計算矩陣a3的跡,計算結(jié)果如“Out[8]”所示;“In[10]”求a3的逆陣,結(jié)果如“Out[10]”所示;“In[12]”計算a3的3次冪,結(jié)果如“Out[12]”所示;“In[26]”計算Exp[a3],其結(jié)果如“Out[26]”所示。在圖5-9中,矩陣求逆函數(shù)Inverse、矩陣的冪函數(shù)MatrixPower和矩陣指數(shù)函數(shù)MatrixExp只能對方陣進(jìn)行運算。5.3矩陣操作FirstImpressionMaurisquamdolor,cursusatportaet,luctusegetpurus.Nunctemporluctusinterdum.5.3.1矩陣合成在Mathematica中,集成了一些矩陣調(diào)整函數(shù),例如,可借助于Join函數(shù)合并多個矩陣,借助于Partition函數(shù)將向量格式化為矩陣。矩陣作為二維嵌套列表,其元素可以替換或刪除。本節(jié)將重點介紹矩陣的拼接和元素修改等操作。在Mathematica中,常用的矩陣合成函數(shù)如表5-6所示例5-9典型矩陣合成函數(shù)應(yīng)用實例如圖5-10所示在圖5-10中,“In[30]”和“In[31]”生成兩個向量a1和a2,分別如“Out[30]”和“Out[31]”所示;“In[32]”調(diào)用Join函數(shù)將向量a1和a2合并為一個向量,如“Out[32]”所示。“In[34]”和“In[35]”生成兩個矩陣b1和b2,分別如“Out[34]”和“Out[35]”所示;“In[36]”按列擴(kuò)展將b1和b2合并為一個矩陣,如“Out[36]”所示;“In[37]”按行擴(kuò)展將b1和b2合并為一個矩陣,如“Out[37]”所示。5.3矩陣操作FirstImpressionMaurisquamdolor,cursusatportaet,luctusegetpurus.Nunctemporluctusinterdum.5.3.2矩陣元素操作列表的元素操作符“[[]]”可以用于矩陣元素的操作,此外,Mathematica還提供了矩陣元素操作函數(shù),如表5-7所示。5.3.2矩陣元素操作FirstImpressionMaurisquamdolor,cursusatportaet,luctusegetpurus.Nunctemporluctusinterdum.表5-7中的各個函數(shù)均有對應(yīng)的元素操作符“[[]]”的實現(xiàn)方法。這里設(shè)a為一個3×3的矩陣,如下所示:表5-7中的各個函數(shù)的操作舉例如下,并給出了相應(yīng)的元素操作符“[[]]”的實現(xiàn)方法:(1)Part[a,2]得到矩陣a的第2行元素組成的列表,即{4,5,6}。等價于:“a[[2]]”。(2)Take[a,2]得到矩陣a的前2行的元素組成的列表,即{{1,2,3},{4,5,6}}。等價于:“a[[1;;2]]”。5.3.2矩陣元素操作(4)Take[a,2,2]得到矩陣a的第1至2行和第1至2列的元素組成的列表,即{{1,2},{4,5}}。等價于:“a[[1;;2,1;;2]]”。(5)Drop[a,2]得到a刪除前2行后的列表,即{{7,8,9}}。等價于:“b=a;b[[1;;2]]=Nothing;b”。向矩陣中的某些位置元素賦值Nothing,表示刪除矩陣中的這些位置的元素。(6)Drop[a,{2}]得到a刪除第2行后的列表,即{{1,2,3},{7,8,9}}。等價于:“b=a;b[[2]]=Nothing;b”。(7)Drop[a,{2,3}]得到a刪除第2行至第3行后的列表,即{{1,2,3}}。等價于:“b=a;b[[2;;3]]=Nothing;b”。(8)Drop[a,2,2]得到a刪除第1至2行和第1至2列后的列表,即{{9}}。等價于:“b=a[[3;;-1,3;;-1]]”。5.3.2矩陣元素操作(9)Delete[a,2]得到a刪除第2行后的列表,即{{1,2,3},{7,8,9}}。等價于:“b=a;b[[2]]=Nothing;b”。(10)Delete[a,{{1},{3}}]得到a刪除第1行和第3行后的列表,即{{4,5,6}}。等價于:“b=a;b[[{1,3}]]=Nothing;b”。下面介紹一下表5-7中的函數(shù)典型用法實例例5-10矩陣元素操作典型實例如圖5-11所示。在圖5-11中,“In[39]”生成一個3行3列的矩陣a;“In[40]”讀取矩陣a的第2行元素,如“Out[40]”所示;“In[41]”讀取矩陣a的前2行元素,如“Out[41]”所示;“In[42]”刪除矩陣a的第2行元素,如“Out[42]”所示;“In[43]”返回矩陣a的對角線元素,如“Out[43]”所示;“In[44]”刪除矩陣a的第一行,結(jié)果如“Out[44]”所示。需要注意的是,所有的讀取操作和刪除操作均不改變原始矩陣的值,這里圖5-11中矩陣a在操作前后保持不變。5.4解線性方程組FirstImpressionMaurisquamdolor,cursusatportaet,luctusegetpurus.Nunctemporluctusinterdum.5.3.2矩陣元素操作在Mathematica中,可借助于LinearSolve函數(shù)求解線性方程組的特解(Solve函數(shù)可以求得通解)。LinearSolve函數(shù)的典型語法為:LinearSolve[a,b]求得線性方程組ax=b的一個特解。Solve函數(shù)求解的結(jié)果如圖5-12所示在圖5-12中,“In[56]”使用Solve函數(shù)求解方程組(1),方程組中的各個方程用“&&”符號連接,結(jié)果如“Out[56]”所示,表明方程組(1)具有唯一解。“In[57]”生成方程組(1)的系數(shù)矩陣a1和常數(shù)向量b1;“In[59]”使用方程組(1)的矩陣表示求解,結(jié)果如“Out[59]”所示,說明方程組(1)具有唯一解{1,2,3}。“In[60]”生成方程組(2)的系數(shù)矩陣a2和常數(shù)向量b2;“In[62]”使用方程組(2)的矩陣形式求解該方程組,解集如“Out[62]”所示,說明方程組(2)無解。“In[69]”生成方程組(3)的系數(shù)矩陣a3和常數(shù)向量b3;“In[71]”使用方程組(3)的矩陣形式求解該方程組,解集如“Out[71]”所示,方程組(3)有無窮多解,x作為自由變量。使用LinearSolve函數(shù)求解方程組(1)至(3)的結(jié)果如圖5-13所示在圖5-13中,“In[72]”求解方程組(1),得到唯一解{1,2,3},如“Out[72]”所示;“In[73]”求解方程組(2),提示方程組(2)無解,如“Out[73]”所示。“In[75]”求解方程組(3),得到其一個特
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 駕校文員合同協(xié)議
- 學(xué)校包車合同協(xié)議書范本
- 機(jī)械設(shè)備三方協(xié)議合同書
- 預(yù)定協(xié)議合同
- 快餐配送合同協(xié)議書文檔
- 高新區(qū)轉(zhuǎn)讓協(xié)議合同糾紛
- 醫(yī)鬧協(xié)議合同
- 會員合同或協(xié)議
- 解約合同協(xié)議范文
- 竹林合同轉(zhuǎn)讓協(xié)議
- 人教版 七年級 下冊 語文 第四單元《青春之光》課件
- 2023-2024學(xué)年華東師大版八年級數(shù)學(xué)上冊期末復(fù)習(xí)綜合練習(xí)題
- 超高性能混凝土與鋼筋的粘結(jié)滑移本構(gòu)關(guān)系
- 某紙業(yè)公司年產(chǎn)9.8萬噸DMC清潔制漿項目可行性研究報告
- 二零二五版產(chǎn)品推介會會務(wù)策劃與執(zhí)行協(xié)議3篇
- 慢性腎病5期護(hù)理查房
- (完整)《化學(xué)反應(yīng)工程》選擇題
- 房屋市政工程生產(chǎn)安全重大事故隱患排查表(2024版)
- Nginx基礎(chǔ)知識單選題100道及答案
- 保護(hù)海洋課件小學(xué)生
- 2024版光伏發(fā)電項目承包經(jīng)營權(quán)轉(zhuǎn)讓合同范本3篇
評論
0/150
提交評論