![Mathematica科學(xué)計(jì)算與程序設(shè)計(jì) 課件全套 第1-7章 Mathematica入門-Mathematica程序設(shè)計(jì)_第1頁(yè)](http://file4.renrendoc.com/view4/M02/1A/00/wKhkGGZ1TNaAYNWpAACx_ng5ZAQ668.jpg)
![Mathematica科學(xué)計(jì)算與程序設(shè)計(jì) 課件全套 第1-7章 Mathematica入門-Mathematica程序設(shè)計(jì)_第2頁(yè)](http://file4.renrendoc.com/view4/M02/1A/00/wKhkGGZ1TNaAYNWpAACx_ng5ZAQ6682.jpg)
![Mathematica科學(xué)計(jì)算與程序設(shè)計(jì) 課件全套 第1-7章 Mathematica入門-Mathematica程序設(shè)計(jì)_第3頁(yè)](http://file4.renrendoc.com/view4/M02/1A/00/wKhkGGZ1TNaAYNWpAACx_ng5ZAQ6683.jpg)
![Mathematica科學(xué)計(jì)算與程序設(shè)計(jì) 課件全套 第1-7章 Mathematica入門-Mathematica程序設(shè)計(jì)_第4頁(yè)](http://file4.renrendoc.com/view4/M02/1A/00/wKhkGGZ1TNaAYNWpAACx_ng5ZAQ6684.jpg)
![Mathematica科學(xué)計(jì)算與程序設(shè)計(jì) 課件全套 第1-7章 Mathematica入門-Mathematica程序設(shè)計(jì)_第5頁(yè)](http://file4.renrendoc.com/view4/M02/1A/00/wKhkGGZ1TNaAYNWpAACx_ng5ZAQ6685.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Mathematica應(yīng)用技術(shù)成績(jī)構(gòu)成:大作業(yè)100分*80%+平時(shí)成績(jī)20分大作業(yè)內(nèi)容及要求:10個(gè)編程設(shè)計(jì)題,每題10分(課內(nèi)4小時(shí),第16周-周四-17:00–21:00)平時(shí)成績(jī)要求:平時(shí)成績(jī):考勤10分(按缺勤扣分制-2分/次)試驗(yàn)報(bào)告成績(jī):10分,5個(gè)基礎(chǔ)性實(shí)驗(yàn)報(bào)告,2分/個(gè)。考核方式本課程面向軟件工程和物聯(lián)網(wǎng)工程的大學(xué)二年級(jí)和三年級(jí)學(xué)生。Wolfram語(yǔ)言是面向科學(xué)計(jì)算和程序設(shè)計(jì)的高級(jí)語(yǔ)言,在全球范圍的頂級(jí)院校最受歡迎新的科研與教學(xué)語(yǔ)言之一。對(duì)于大學(xué)二年級(jí)和三年級(jí)的學(xué)生,在其學(xué)習(xí)了數(shù)學(xué)理論和C語(yǔ)言以及眾多科學(xué)工具之后,面臨著算法知識(shí)的快速實(shí)現(xiàn)和原型技術(shù)等問(wèn)題。為了解決這一問(wèn)題,并進(jìn)一步提高學(xué)生們的科學(xué)思維和高級(jí)編程技術(shù),將這種算法實(shí)現(xiàn)用于大學(xué)生們的技術(shù)創(chuàng)新,開(kāi)設(shè)了Mathematica應(yīng)用技術(shù)課程。該課程內(nèi)容涉及大學(xué)期間的數(shù)學(xué)理論課的算法實(shí)現(xiàn)和針對(duì)具體問(wèn)題的程序設(shè)計(jì)方法,在培養(yǎng)大學(xué)生的創(chuàng)新思維方面具有特別重要的意義。課程目標(biāo)與學(xué)習(xí)必要性安裝Mathematica
14.0軟件(英文版)重點(diǎn):列表及其應(yīng)用、算法模塊設(shè)計(jì)方法等難點(diǎn):編譯技術(shù)、WolframWorkbench聯(lián)調(diào)方法等課程預(yù)備工作、重點(diǎn)與難點(diǎn)第1章入門第2章MMA列表第3章MMA科技繪圖第4章MMA微積分第5章MMA矩陣計(jì)算第6章MMA概率計(jì)算第7章MMA程序設(shè)計(jì)+補(bǔ)充6個(gè)專題的講義課程內(nèi)容張勇,等.Mathematica程序設(shè)計(jì)導(dǎo)論.清華大學(xué)出版社,2022.S.Wolfram.Wolfram語(yǔ)言入門.科學(xué)出版社,2017.C.Hastings,etal.WolframMathematica實(shí)用編程指南.科學(xué)出版社,2018.S.Wolfram.TheMathematicaBook(5thed).WolframMedia,2003.E.Don.Mathematica(2nded).2000.教材與參考書(shū)Mathematica應(yīng)用技術(shù)第一章Mathematica入門1.1Mathematica工作界面1.2Mathematica數(shù)值計(jì)算1.3Mathematica符號(hào)計(jì)算Mathematica軟件與MATLAB和Maple并稱為現(xiàn)今世界的三大著名數(shù)學(xué)軟件,并且Wolfram技術(shù)遠(yuǎn)遠(yuǎn)領(lǐng)先于后二者。MATLAB軟件的編程語(yǔ)言與C語(yǔ)言相似度高,MATLAB應(yīng)用門檻低,是MATLAB廣泛應(yīng)用于工程界的原因之一;不同于MATLAB,Mathematica軟件需要用戶深入學(xué)習(xí)一段時(shí)間,才能掌握和熟練應(yīng)用Mathematica軟件與Wolfram語(yǔ)言。1.4Mathematica字符串1.1Mathematica工作界面從官網(wǎng)上下載Mathematica軟件,并獲取軟件使用授權(quán)。截止2020年9月Mathematica軟件的最新版本號(hào)為12.1。Mathematica軟件支持在線安裝和下載安裝包離線安裝。1.1Mathematica工作界面“RECENTFILES”顯示最近打開(kāi)的筆記本,右下角的“Showatstartup”默認(rèn)為選中態(tài),表示每次啟動(dòng)Mathematica均顯示Mathematica啟動(dòng)界面。在圖1-1中,用鼠標(biāo)左鍵單擊“NewDocument”,進(jìn)入圖1-2所示界面。1.1Mathematica工作界面在圖1-2中,選中菜單“Edit|Preference…”(表示菜單“Edit”下的子菜單項(xiàng)“Preference…”),將彈出如圖1-3所示的對(duì)話框。1.1Mathematica工作界面在圖1-3中,“LanguageSettings”(語(yǔ)言設(shè)置)中,選擇“English”,表示使用英文作為工作環(huán)境和界面語(yǔ)言(使用英文的主要原因在于有些Wolfram指令僅支持英文環(huán)境)。此時(shí),選中“Showcodecaptions”復(fù)選框,并在“Codecaptionlanguage”中選擇“Chinese,Simplified–簡(jiǎn)體中文”,表示在筆記本(Notebook)中將使用中文顯示命令的注釋。1.1Mathematica工作界面在圖1-3中,“LanguageSettings”(語(yǔ)言設(shè)置)中,選擇“English”,表示使用英文作為工作環(huán)境和界面語(yǔ)言(使用英文的主要原因在于有些Wolfram指令僅支持英文環(huán)境)。此時(shí),選中“Showcodecaptions”復(fù)選框,并在“Codecaptionlanguage”中選擇“Chinese,Simplified–簡(jiǎn)體中文”,表示在筆記本(Notebook)中將使用中文顯示命令的注釋。1.1Mathematica工作界面在圖1-3中,“LanguageSettings”(語(yǔ)言設(shè)置)中,選擇“English”,表示使用英文作為工作環(huán)境和界面語(yǔ)言(使用英文的主要原因在于有些Wolfram指令僅支持英文環(huán)境)。此時(shí),選中“Showcodecaptions”復(fù)選框,并在“Codecaptionlanguage”中選擇“Chinese,Simplified–簡(jiǎn)體中文”,表示在筆記本(Notebook)中將使用中文顯示命令的注釋。
Mathematica可以打開(kāi)多個(gè)Notebook,在Notebook中使用的變量均為全局變量。也就是說(shuō),在任一個(gè)Notebook中定義的變量,可以直接被其他所有處于打開(kāi)狀態(tài)的Notebook使用。這是Mathematica初學(xué)者在計(jì)算過(guò)程中出錯(cuò)的主要原因。為了避免新定義的符號(hào)與已有的全局變量同名而導(dǎo)致計(jì)算出錯(cuò),可在新的計(jì)算開(kāi)始前,調(diào)用Clear或Remove函數(shù)清除原來(lái)的全局變量。例如,清除全局變量a,可以調(diào)用“Clear[a]”清除全局變量a的值,或調(diào)用“Remove[a]”清除a的值和定義。習(xí)慣上,使用以下語(yǔ)句清除全部全局變量的值:Clear["`*"]或調(diào)用以下語(yǔ)句清除全部全局變量的定義和值:Remove["`*"]1.1Mathematica工作界面
Clear和Remove語(yǔ)句的典型用法實(shí)例如圖1-4所示1.1Mathematica工作界面在圖1-5中,展示了Notebook的其他輸入形式,例如,Notebook中可以輸入公式,如“In[12]”所示??梢越柚诓藛巍癙alettes”中的子菜單項(xiàng)“BasicMathAssistant”(基礎(chǔ)數(shù)學(xué)助手)或“ClassroomAssistant”(課堂助手)對(duì)應(yīng)的輸入助手實(shí)現(xiàn),也可以使用鍵盤輸入。借助于“基礎(chǔ)數(shù)學(xué)助手”的輸入方式類似于普通計(jì)算器輸入,1.1Mathematica工作界面建議初學(xué)者使用“基礎(chǔ)數(shù)學(xué)助手”幫助實(shí)現(xiàn)各種符號(hào)和公式的輸入,在圖1-5中,鼠標(biāo)單擊菜單“Palettes|BasicMathAssistant”彈出基礎(chǔ)數(shù)學(xué)助手對(duì)話框,如圖1-6所示,基礎(chǔ)數(shù)學(xué)助手包括基本符號(hào)和高級(jí)符號(hào)以及常用的計(jì)算表達(dá)式(含常用微積分運(yùn)算等),此外,非常有價(jià)值的是當(dāng)鼠標(biāo)在基礎(chǔ)數(shù)學(xué)助手的某個(gè)符號(hào)上停留時(shí),將彈出該符號(hào)的快捷鍵提示。1.2Mathematica數(shù)值計(jì)算在Notebook中,變量不用定義,直接使用,變量名可以為字母開(kāi)頭的字符串(可以命名為希臘字母,例如,;但不能以數(shù)字開(kāi)頭)。由于下劃線在Mathematica中具有特別的含義,所以,建議一般的變量名中不使用下劃數(shù)。此外,由于Mathematica的內(nèi)置函數(shù)均以大寫(xiě)英文字母開(kāi)頭,為了避免與內(nèi)置函數(shù)名混淆,因此,建議自定義變量名和自定義函數(shù)名均使用小字英文字母開(kāi)頭的字符串。特別需要注意的是,在任一個(gè)Notebook中定義的變量,均為全局變量,可以直接應(yīng)用于其他的Notebook中,即在所有打開(kāi)的Notebook中均可調(diào)用。因此,在使用Notebook時(shí),應(yīng)養(yǎng)成兩個(gè)好的習(xí)慣:其一,在不需定義變量時(shí),盡可能不定義變量,在輸入提示符“In[n]:=”中直接輸入表達(dá)式,在其相應(yīng)的輸出“Out[n]=”中查看計(jì)算結(jié)果,這里的正整數(shù)n表示Mathematica內(nèi)核計(jì)算表達(dá)式的順序,從1開(kāi)始計(jì)數(shù),每計(jì)算一次,n自增1。在不定義變量時(shí),引用計(jì)算結(jié)果,可使用“Out[n]”或“%n”引用第n次計(jì)算的結(jié)果“Out[n]”;其二,在輸入提示符“In[n]:=”中輸入了變量,即輸入形式為“變量=表達(dá)式”的情況,頻繁使用這種輸入情況將產(chǎn)生大量的全局變量,此時(shí),在每次開(kāi)展新的計(jì)算前,應(yīng)調(diào)用“Clear["`*"]”清除已有全部變量的值。(1)加法示例下面基于表1-2中的基本算術(shù)函數(shù),討論各個(gè)算術(shù)操作。在Notebook中輸入:x=y=2;z=3;u=1/2;v=1/5;Mathematica支持連續(xù)賦值操作(也支持連續(xù)不等式,例如0<=a<=1)。上述代碼中,共四條語(yǔ)句,依次將x和y賦值為2,將z賦值為3,將u賦值為1/2,將v賦值為1/5。每條語(yǔ)句后面均有分號(hào)“;”,表示該語(yǔ)句執(zhí)行后的結(jié)果不顯示。由于這四條語(yǔ)句均以分號(hào)結(jié)尾,故該四條語(yǔ)句均沒(méi)有對(duì)應(yīng)的“Out[n]”輸出部分。現(xiàn)在,對(duì)這些變量在Notebook中進(jìn)行一些典型的算術(shù)運(yùn)算:在Notebook中輸入:“x+y+z”,或輸入:“Plus[x,y,z]”,均表示計(jì)算x、y和z的和,得到結(jié)果7。Plus函數(shù)支持多個(gè)參數(shù)輸入,每個(gè)參數(shù)必須為數(shù)值形式(不支持列表形式),Plus函數(shù)返回這些數(shù)值的代數(shù)和。(2)減法示例與Plus不同的是,Subtract只能有2個(gè)參數(shù),依次為被減數(shù)和減數(shù)。在Notebook中輸入:“x-z”,或輸入“Subtract[x,z]”,均表示計(jì)算x減去z的差值??梢暂斎耄骸皒-z-u-v”,表面上看“-”支持多個(gè)操作數(shù),實(shí)際上,Mathematica內(nèi)部計(jì)算“x-z-u-v”的方法為“Plus[Times[-1,u],Times[-1,v],x,Times[-1,z]]”(通過(guò)“Clear["`*"];FullForm[x-z-u-v]”函數(shù)查看),即使用加法運(yùn)算和乘法運(yùn)算實(shí)現(xiàn)該表達(dá)式,最后,得到結(jié)果為-17/10。(3)乘法示例在Notebook中輸入:“xzuv”(每?jī)蓚€(gè)變量的中間有一個(gè)或多個(gè)空格,此時(shí)的這些空格表示相乘關(guān)系),或輸入:“Times[x,z,u,v]”,表示計(jì)算x、z、u和v的乘積,結(jié)果為3/5。由于Mathematica中,一個(gè)或連續(xù)的多個(gè)空格表示相乘關(guān)系。當(dāng)輸入表達(dá)式2x+5y時(shí),可以直接輸入“2x+5y”,由于Mathematica中變量名不能以數(shù)字開(kāi)頭,因此,輸入的“2x+5y”被自動(dòng)識(shí)別為“2x+5y”;但是,如果輸入“x乘以y”,不能輸入“xy”,這時(shí)的“xy”將被識(shí)別為一個(gè)變量名,而需要輸入“xy”(中間有一個(gè)或多個(gè)連續(xù)的空格),或輸入“x*y”,表示x乘以y。(4)除法示例Divide只能有2個(gè)參數(shù),即被除數(shù)和除數(shù)。在Notebook中輸入:Divide[y,u]或輸入:y/u,均表示y除以u(píng),結(jié)果為4?!?”可以實(shí)現(xiàn)連除,例如:y/u/z,其在Mathematica中的實(shí)現(xiàn)方式為Times[Power[u,-1],y,Power[z,-1]](使用函數(shù)“Clear["`*"];FullForm[y/u/z]”查看),得到商為4/3。(5)乘方與開(kāi)方示例借助于Power函數(shù)或“^”可以實(shí)現(xiàn)乘方和開(kāi)方運(yùn)算,如圖1-7所示。(5)乘方與開(kāi)方示例
(6)開(kāi)平方示例
(7)求相反數(shù)示例
1.2.2關(guān)系與邏輯表達(dá)式在Mathematica中,關(guān)系表達(dá)式和邏輯表達(dá)式的返回結(jié)果為邏輯值,邏輯值只有兩種:邏輯真為True,邏輯假為False。關(guān)系運(yùn)算符主要有大于(>)、大于等于(>=)、小于(<)、小于等于(<=)、等于(==)和不等于(!=)等,這些關(guān)系連接符可以連用。Mathematica內(nèi)置了這些關(guān)系運(yùn)算符的函數(shù),例如,Greater、GreaterEqual、Less、LessEqual、Equal和Unequal等,依次表示大于、大于等于、小于、小于等于、等于和不等于等關(guān)系。表1-3關(guān)系表達(dá)式及其典型用法(設(shè)x=7、y=5、z=3)1.2Mathematica數(shù)值計(jì)算序號(hào)關(guān)系表達(dá)式典型示例含義與結(jié)果1x>y7>3True2x>=y7>=3True3x<y7<5False4x<=y7<=5False5x==y7==5False6x!=y7!=5False7x==y==z7==5==3False(x、y與z都相等時(shí)為真)8x!=y!=x7!=5!=3True(x、y與z都不等時(shí)為真)9x>y>z7>5>3True10x<y<z7<5<3False11y<x>z5<7>3True1.2.3數(shù)值函數(shù)1.2Mathematica數(shù)值計(jì)算本節(jié)將介紹Mathematica中常用的與數(shù)值處理相關(guān)的函數(shù),統(tǒng)稱為數(shù)值函數(shù),包括浮點(diǎn)數(shù)的取整、實(shí)數(shù)的整數(shù)部分和小數(shù)部分分離、復(fù)數(shù)的實(shí)部與虛部分離、復(fù)數(shù)的各部分分解和數(shù)制轉(zhuǎn)換等。在表1-5中列舉了最常用的一些數(shù)值函數(shù),并給出了它們的典型用法實(shí)例。表1-5常用數(shù)值函數(shù)及其典型用法1.2.3數(shù)值函數(shù)表1-5常用數(shù)值函數(shù)及其典型用法1.2.3數(shù)值函數(shù)表1-5常用數(shù)值函數(shù)及其典型用法1.2.3數(shù)值函數(shù)表1-5常用數(shù)值函數(shù)及其典型用法表1-5中的數(shù)制轉(zhuǎn)換函數(shù)特別有用,例如,將一個(gè)整數(shù)a轉(zhuǎn)化為8位二進(jìn)制數(shù),可以用“IntegerDigits[a,2,8]”,這在數(shù)字圖像處理中尤為常用。1.2.4常用數(shù)學(xué)函數(shù)1.2Mathematica數(shù)值計(jì)算Mathematica中集成了近5000個(gè)常用函數(shù),這些函數(shù)被應(yīng)用于不同的科學(xué)領(lǐng)域中。本節(jié)將其中常用的一些初等數(shù)學(xué)函數(shù)及其用法列于表1-6中,這些函數(shù)包括取模(計(jì)算余數(shù))函數(shù)、計(jì)算商函數(shù)、平方根函數(shù)、指數(shù)函數(shù)、對(duì)數(shù)函數(shù)、階乘函數(shù)、因數(shù)分解函數(shù)、素?cái)?shù)函數(shù)、三角函數(shù)、Fibonacci數(shù)函數(shù)和數(shù)的性質(zhì)判定函數(shù)等。表1-6常用數(shù)學(xué)函數(shù)及其用法1.2.4常用數(shù)學(xué)函數(shù)表1-6常用數(shù)學(xué)函數(shù)及其用法1.2.4常用數(shù)學(xué)函數(shù)表1-6常用數(shù)學(xué)函數(shù)及其用法1.2.4常用數(shù)學(xué)函數(shù)表1-6常用數(shù)學(xué)函數(shù)及其用法Mathematica數(shù)學(xué)計(jì)算功能異常強(qiáng)大,現(xiàn)有的各個(gè)數(shù)學(xué)分支中的運(yùn)算,均可以Mathematica中找到相應(yīng)的計(jì)算函數(shù),有些數(shù)學(xué)函數(shù)已內(nèi)置于安裝包中,隨Mathematica安裝程序自動(dòng)裝入個(gè)人計(jì)算機(jī)中,可以直接在Notebook中調(diào)用;而有些數(shù)學(xué)函數(shù)以“軟件包”的形式保存在Wolfram線上資源庫(kù)中,使用時(shí)需要在線動(dòng)態(tài)裝入,例如,函數(shù)KSubsets用于求得某個(gè)集合中特定長(zhǎng)度的子集合,該函數(shù)位于包“Combinatorica”中,在使用KSubsets前,需要先執(zhí)行“<<Combinatorica`”或者“Needs["Combinatorica`"]”將組合函數(shù)軟件包下載到本地,并裝入當(dāng)前工作環(huán)境中,然后,執(zhí)行如下輸入:1.2.4常用數(shù)學(xué)函數(shù)表1-6常用數(shù)學(xué)函數(shù)及其用法s={1,2,3,4,5};KSubsets[s,3]將得到輸出結(jié)果“{{1,2,3},{1,2,4},{1,2,5},{1,3,4},{1,3,5},{1,4,5},{2,3,4},{2,3,5},{2,4,5},{3,4,5}}”,即返回了集合s的所有長(zhǎng)度為3的子集。1.2.5解方程1.2Mathematica數(shù)值計(jì)算Mathematica是解方程的利器,不但可以求解各類代數(shù)方程(整式、分式或根式方程),還可以求解各種超越方程(含對(duì)數(shù)函數(shù)、指數(shù)函數(shù)和三解函數(shù)的方程)。在Notebook中,方程用含有等號(hào)“==”的表達(dá)式表示,常用的解方程的函數(shù)有Solve、Reduce和FindRoot等,其中,Reduce函數(shù)還可以求解各類不等式(由關(guān)系運(yùn)算符連接的表達(dá)式),下面詳細(xì)介紹各個(gè)函數(shù)的應(yīng)用方法。Solve函數(shù)Reduce函數(shù)FindRoot函數(shù)一:Solve函數(shù)Solve函數(shù)的語(yǔ)法有以下兩種:Solve[表達(dá)式,變量或變量列表]Solve[表達(dá)式,變量或變量列表,定義域]這里的“表達(dá)式”為方程,“變量或變量列表”指定方程中的未知數(shù),沒(méi)有在“變量列表”中的符號(hào)視為方程的常量或參量,“定義域”可設(shè)為Reals、Integers或Complexes,依次表示在實(shí)數(shù)域、整數(shù)域或復(fù)數(shù)域上求解。
二:Reduce函數(shù)類似于Solve函數(shù),Reduce函數(shù)也有兩種形式:Reduce[表達(dá)式,變量或變量列表]Reduce[表達(dá)式,變量或變量列表,定義域]這里的“表達(dá)式”可以為等式(即方程),也可以為不等式,“變量或變量列表”為求解的未知數(shù),“定義域”的含義與在Solve函數(shù)中的含義相同,用于限定未知數(shù)的取值范圍。三:FindRoot函數(shù)FindRoot函數(shù)使用數(shù)值方法求解方程的近似解,典型應(yīng)用語(yǔ)法為:FindRoot[表達(dá)式,{x,x0}]表示從x0開(kāi)始迭代,直到表達(dá)式的值為0,返回表達(dá)式等于0的一個(gè)數(shù)值解FindRoot[等式,{x,x0}]表示從x0開(kāi)始迭代,直到等式(或方程)成立,返回該等式的一個(gè)數(shù)值解借助于FindRoot函數(shù)求解方程的根時(shí),需要先估計(jì)一個(gè)根的近似值x0。例如,借助FindRoot求解方程x2-5=ex-3x2。一般地,先做圖,然后,根據(jù)圖形估計(jì)“交點(diǎn)”的橫坐標(biāo),最后,用這些橫坐標(biāo)依次作為x0的值調(diào)用FindRoot求解,如圖1-11所示。在圖1-11中,“In[70]”調(diào)用Plot函數(shù)繪制了函數(shù)y=x2-5和函數(shù)y=ex-3x2的圖像(Plot函數(shù)的詳細(xì)用法請(qǐng)參考第3.1.1節(jié)),由于兩個(gè)圖像有三個(gè)交點(diǎn),故方程x2-5=ex-3x2有三個(gè)解;然后,根據(jù)圖像估計(jì)三個(gè)“交點(diǎn)”的位置,這里的估計(jì)值分別為-1.2、1.8和4,在“In[73]”、“In[74]”和“In[75]”中使用FindRoot函數(shù)進(jìn)行求解,得到三個(gè)解的近似值,如“Out[73]”、“Out[74]”和“Out[75]”所示。事實(shí)上,對(duì)于次數(shù)高于5次的多項(xiàng)式和絕大多數(shù)的工程問(wèn)題,都需要借助于FindRoot函數(shù)進(jìn)行近似求解。1.3Mathematica符號(hào)計(jì)算1.3.1多項(xiàng)式運(yùn)算符號(hào)計(jì)算是Mathematica的特色功能,表達(dá)式中的符號(hào)和常量的運(yùn)算規(guī)律類似,符號(hào)還可以作為各種函數(shù)的參數(shù)。這里重點(diǎn)介紹含有符號(hào)的代數(shù)式和三角函數(shù)式的常用處理函數(shù),其中,代數(shù)式分為有理式和無(wú)理式,有理式包括整式和分式,整式又分為單項(xiàng)式和多項(xiàng)式。下面首先介紹含有符號(hào)的多項(xiàng)式計(jì)算,然后介紹含有符號(hào)的代數(shù)式運(yùn)算和三角函數(shù)式變換。多項(xiàng)式是數(shù)學(xué)理論研究最完備的分支之一,多項(xiàng)式的常見(jiàn)處理包括多項(xiàng)式展開(kāi)、因式分解、合并同類項(xiàng)、取多項(xiàng)式系數(shù)、最大公因式和最小公倍式等。下面依次介紹Mathematica實(shí)現(xiàn)這些多項(xiàng)式處理的函數(shù)及其用法。(1)多項(xiàng)式展開(kāi)多項(xiàng)式展開(kāi)是指將多項(xiàng)式展開(kāi)為單項(xiàng)式的和的形式,這些單項(xiàng)式中最高的次數(shù)為該多項(xiàng)式的次數(shù),單項(xiàng)式的個(gè)數(shù)為多項(xiàng)式的項(xiàng)數(shù)。多項(xiàng)式展開(kāi)借助于函數(shù)Expand實(shí)現(xiàn),其常用語(yǔ)法為Expand[表達(dá)式](2)因式分解化簡(jiǎn)多項(xiàng)式最常用的操作為因式分解,一般情況下,高于5次的多項(xiàng)式使用手工因式分解是很困難的。但是,Mathematica可以對(duì)任意高次數(shù)的多項(xiàng)式進(jìn)行因式分解(3)合并同類項(xiàng)多項(xiàng)式化簡(jiǎn)的基本方法是合并同類項(xiàng),借助于函數(shù)Collect實(shí)現(xiàn),其典型應(yīng)用的語(yǔ)法為Collect[多項(xiàng)式,{x,y,…}],即按x、y等,將其相同冪的項(xiàng)(即同類項(xiàng))的系數(shù)合并(4)多項(xiàng)式系數(shù)
可以讀取多項(xiàng)式中任一單項(xiàng)式的系數(shù)。在Mathematica中,借助于多項(xiàng)式系數(shù)函數(shù)Coefficient[多項(xiàng)式,變量的冪]可以給出相應(yīng)單項(xiàng)式的系數(shù),而函數(shù)CoefficientList[多項(xiàng)式,變量]可以給出多項(xiàng)式的系數(shù)列表,從0次冪開(kāi)始,直到最高次冪,中間如果某些次冪缺失,則其系數(shù)填充為0。(5)最大公因式和最小公倍式
計(jì)算幾個(gè)數(shù)值的最大公約數(shù)和最小公倍數(shù)的函數(shù)為GCD和LCM,而計(jì)算幾個(gè)多項(xiàng)式的最大公因式和最小公倍式的函數(shù)為PolynomialGCD和PolynomialLCM,這兩個(gè)函數(shù)的參數(shù)相同,為[多項(xiàng)式1,多項(xiàng)式2,…]或者[多項(xiàng)式1,多項(xiàng)式2,…,Modulus->p],后者為基于模素?cái)?shù)p的計(jì)算。1.3Mathematica符號(hào)計(jì)算1.3.2代數(shù)式運(yùn)算Together[表達(dá)式]Cancel[表達(dá)式]Apart[表達(dá)式]或Apart[表達(dá)式,變量]含有符號(hào)的多項(xiàng)式的運(yùn)算滿足常規(guī)多項(xiàng)式化簡(jiǎn)運(yùn)算規(guī)律,主要是合并同類項(xiàng)和因式分解。本節(jié)的代數(shù)式運(yùn)算偏重于介紹分式運(yùn)算,將重點(diǎn)介紹分式的通分、約分和部分分式展開(kāi),對(duì)應(yīng)的函數(shù)依次為Together、Cancel和Apart。這三個(gè)函數(shù)的語(yǔ)法如下:在“Apart[表達(dá)式,變量]”中,除“變量”之外的符號(hào)量視為常量。通分、約分和部分分式展開(kāi)的典型應(yīng)用實(shí)例如圖1-18所示。1.3.2代數(shù)式運(yùn)算在圖1-18中,“In[132]”輸入分式p1;“In[134]”輸入分式p2;“In[138]”調(diào)用函數(shù)Together將分式p1和p2的和進(jìn)行通分,結(jié)果保存在p3中,如“Out[138]”所示;“In[139]”調(diào)用函數(shù)Cancel對(duì)分式p2進(jìn)行約分,結(jié)果如“Out[139]”所示。函數(shù)Apart是函數(shù)Together的逆運(yùn)算,在“In[140]”中調(diào)用Apart函數(shù)將多項(xiàng)式p3分解為部分分式和的形式。部分分式分解在基于分式的積分運(yùn)算中廣泛使用。1.3Mathematica符號(hào)計(jì)算1.3.3三角函數(shù)式變換三角函數(shù)是科學(xué)研究中遇到的最重要的函數(shù)形式,本身是波的數(shù)學(xué)承載函數(shù)。工程上廣泛應(yīng)用的傅里葉級(jí)數(shù)就是將一個(gè)函數(shù)展開(kāi)為三角函數(shù)的和的形式。一般地,三角函數(shù)包括正弦函數(shù)、余弦函數(shù)、正切函數(shù)、余切函數(shù)、正割函數(shù)和余割函數(shù)等。本節(jié)將重點(diǎn)介紹三角函數(shù)化簡(jiǎn)和變換相關(guān)的常用函數(shù),包括含三角函數(shù)的表達(dá)式的展開(kāi)函數(shù)TrigExpand、因式分解函數(shù)TrigFactor、化簡(jiǎn)函數(shù)TrigReduce、三角函數(shù)轉(zhuǎn)化為指數(shù)函數(shù)TrigToExp和指數(shù)函數(shù)轉(zhuǎn)化為三解函數(shù)ExpToTrig等。這五個(gè)函數(shù)均只有一個(gè)參數(shù),即含三角函數(shù)的表達(dá)式。其中,化簡(jiǎn)函數(shù)TrigReduce可用于證明三角恒等式。這些函數(shù)的典型用法實(shí)例如圖1-19所示。1.3.3三角函數(shù)式變換1.4Mathematica字符串Mathematica軟件具有強(qiáng)大的字符串處理功能,集成了眾多的字符串處理函數(shù),在表1-7中列舉了最常用的字符串函數(shù)及其用法。注意,在Mathematica中,字符串中的字符從左向右其索引號(hào)從1按步進(jìn)1增加;從右向左其索引號(hào)從-1按步進(jìn)-1減小?,F(xiàn)在,在Notebook中輸入“str1="Student"”和“str2="textbook"”,并執(zhí)行得到兩個(gè)字符串str1和str2,這兩個(gè)字符串將被用于表1-7中。表1-7字符串函數(shù)及其典型用法1.4Mathematica字符串表1-7字符串函數(shù)及其典型用法1.4Mathematica字符串表1-7字符串函數(shù)及其典型用法本章內(nèi)容為Mathematica軟件應(yīng)用入門奠定基礎(chǔ),首先詳細(xì)介紹了Mathematica軟件的工作界面和常用菜單,然后,討論了Mathematica軟件的輸入、輸出和計(jì)算等基本操作,接著,分析了Mathematica數(shù)值計(jì)算相關(guān)的函數(shù)及其典型用法,涉及到基本算術(shù)運(yùn)算、關(guān)系表達(dá)式、邏輯運(yùn)算、常用數(shù)學(xué)函數(shù)和代數(shù)方程等。在此基礎(chǔ)上,討論了Mathematica強(qiáng)大的符號(hào)計(jì)算功能,特別是多項(xiàng)式運(yùn)算、分式運(yùn)算和三角函數(shù)式變換等。最后,深入介紹了Mathematica的常用字符串函數(shù)及其應(yīng)用方法。01本章小結(jié)第二章Mathematica列表2.1常用列表構(gòu)造方法2.2列表元素操作2.3向量與矩陣表示列表是Wolfram語(yǔ)言最基本的數(shù)據(jù)結(jié)構(gòu),是指借助于花括號(hào)“{”和“}”包括的一列元素,元素可為常量、變量和符號(hào)。列表可以多級(jí)嵌套,嵌套列表的最外層稱為第一層列表,依次向內(nèi)可得到第二層、第三層、…列表。可以使用“深度”表示列表的層數(shù),列表的表頭(即“List”)的深度定義為1,因此,第一層列表的深度為2,第二層列表的深度為3,依次類推。計(jì)算列表深度的函數(shù)為Depth,而函數(shù)Level可以返回相同深度的列表元素。2.1常用列表構(gòu)造方法在圖2-2中,“In[2]”輸入了包含5個(gè)元素的列表,并賦給變量x;在“In[3]”中輸入x,可以查看變量x的值在Notebook中,可直接輸入列表,列表元素被“{”和“}”所包圍,列表元素間用英文逗號(hào)“,”分隔,如圖2-2所示2.1常用列表構(gòu)造方法在圖2-3中的myproduct2019.xlsx中,保存了某種產(chǎn)品2019年中每月的產(chǎn)量。然后,在Notebook中使用Import函數(shù)將Excel表格中的數(shù)據(jù)導(dǎo)入Mathematica中,如圖2-4所示。請(qǐng)注意:文件名路徑使用“\\”(與C語(yǔ)言路徑名規(guī)則相同)。這里,文件myproduct2019.xlsx在硬盤上的完整保存路徑(含文件名)為“E:\ZYMaths\Book20\myproduct2019.xlsx”對(duì)于大數(shù)據(jù)量而言,一般使用數(shù)據(jù)導(dǎo)入的方式。Mathematica支持從多種類型的數(shù)據(jù)文件或網(wǎng)站直接導(dǎo)入數(shù)據(jù),這里介紹最常用的數(shù)據(jù)導(dǎo)入方法,即從Excel表格中導(dǎo)入數(shù)據(jù)。這里,借助于Excel2016生成一個(gè)電子表格(數(shù)據(jù)表格),將表格保存為myproduct2019.xlsx,如圖2-3所示結(jié)合圖2-3和圖2-4可知,在Notebook中將讀入的Excel表格數(shù)據(jù)以嵌套列表的形式保存在變量y中,這里的y是一個(gè)三層嵌套的列表,最內(nèi)層的列表元素對(duì)應(yīng)著圖2-3中Excel表格的行數(shù)據(jù);第二層的列表對(duì)應(yīng)著Excel表格中的表單(即Sheet),圖2-3中只有一個(gè)表單Sheet1;第一層(即最外層)列表對(duì)應(yīng)著整個(gè)表格?,F(xiàn)在,在圖2-3的基礎(chǔ)上,添加一個(gè)新的表單(Sheet2),如圖2-5所示。2.1常用列表構(gòu)造方法2.1常用列表構(gòu)造方法此時(shí),在Notebook中再次導(dǎo)入myproduct2019.xlsx,如圖2-6中“In[7]”所示,其結(jié)果如“Out[7]”所示。此時(shí),第一層(最外層)列表中包括2個(gè)子列表,分別對(duì)應(yīng)著圖2-5中的兩個(gè)表單Sheet1和Sheet2,而第二層兩個(gè)子列表中的第三層列表,分別對(duì)應(yīng)著兩個(gè)表單中的數(shù)據(jù)。2.1常用列表構(gòu)造方法此外,Mathematica函數(shù)的計(jì)算結(jié)果大都以列表的形式存儲(chǔ),其中有一些函數(shù)可以生成有規(guī)律的列表,例如最常用的Table函數(shù)。Table函數(shù)可以生成常數(shù)向量和常數(shù)矩陣,其典型實(shí)例如圖2-7所示。在Notebook中使用函數(shù)Export可將計(jì)算結(jié)果保存為Excel表格,例如,在圖2-6所示Notebook中添加如下輸入語(yǔ)句:Export["E:\\ZYMaths\\Book20\\myproduct2019new.xlsx",y]將在目錄E:\ZYMaths\Book20\下生成表格文件myproduct2019new.xlsx,該文件內(nèi)容為變量y的內(nèi)容,即圖2-5中顯示的內(nèi)容。2.1常用列表構(gòu)造方法在圖2-7中,對(duì)于Table函數(shù),其第一個(gè)參數(shù)指定常數(shù),第二個(gè)參數(shù)開(kāi)始的全部參數(shù)指定維數(shù)。其中,MatrixForm函數(shù)使數(shù)據(jù)以矩陣的形式表示,并在矩陣兩邊添加大括號(hào)。這里,“In[20]”得到一個(gè)長(zhǎng)度為5的元素均為0的列表x1,如“Out[20]”所示;“In[21]”得到了一個(gè)二層嵌套列表x2,共有3個(gè)子列表,每個(gè)子列表有5個(gè)元素,元素均為0,如“Out[21]”所示,可以視為一個(gè)3行5列的全0矩陣;“In[22]”將列表x2以矩陣形式顯示,如“Out[22]”所示,此時(shí)顯示結(jié)果為“Out[22]//MatrixForm”,該結(jié)果只做為顯示樣式,不能參與計(jì)算。同理,“In[23]”生成一個(gè)長(zhǎng)度為5的元素均為1的列表x3,如“Out[23]”所示;“In[24]”生成一個(gè)二層嵌套列表x4,共3個(gè)子列表,每個(gè)5個(gè)元素,元素均為1,如“Out[24]”所示;“In[25]”以矩陣的形式顯示x4,如“Out[25]”所示。2.1常用列表構(gòu)造方法Table函數(shù)也可生成一些有規(guī)律的向量和矩陣,如圖2-8所示。2.1常用列表構(gòu)造方法在圖2-8中,Table函數(shù)的第一個(gè)參數(shù)為表達(dá)式,其中包括了局部變量,這里的局量變量是指Table函數(shù)的第二個(gè)參數(shù)及其以后的參數(shù)中出現(xiàn)的變量,常被稱作循環(huán)變量參數(shù);Table函數(shù)的第二個(gè)參數(shù)及其以后的參數(shù)用于指定局部變量的變化方式,用花括號(hào)括起來(lái),有兩種形式:(1)第一種形式包括四部分:變量名、變量初始(為1時(shí)可省略)、變量終值和變量變化的步長(zhǎng)(為1時(shí)可省略),如“In[34]”所示;(2)第二種形式包括兩部分:變量名和變量取值列表,如“In[35]”,此時(shí)變量依次在變量列表中取值。在“In[32]”中,Table的局部變量i的取值為從1按步長(zhǎng)1至10,將生成1至10的整數(shù)列表x1,如“Out[32]”所示?!癐n[33]”中,Table的局部變量i從0按步長(zhǎng)1增加到5,每步計(jì)算2i+1的值,將生成1至11的奇數(shù)序列x2,如“Out[33]”所示?!癐n[34]”中Table的局部變量i的步長(zhǎng)為-2,i從6按步長(zhǎng)-2遞減至-6,每步計(jì)算i3,得到列表x3如“Out[34]”所示?!癐n[35]”中Table的局部變量k依次從列表{5,8,13,21,30}中取值,對(duì)每個(gè)k的值計(jì)算2k+1的值,得到列表x4如“Out[35]”所示。注意:Table函數(shù)中第二個(gè)參數(shù)開(kāi)始的參數(shù),即循環(huán)變量參數(shù),有多個(gè)時(shí),越右邊的參數(shù)對(duì)應(yīng)著循環(huán)嵌套的層數(shù)越大,即變化越快。例如,在“In[35]”中,首先局部變量i取值1,局部變量j從1按步長(zhǎng)1增加到5;然后,i增加1變?yōu)?,j再次從1按步長(zhǎng)1增加到5;以此類推。對(duì)于每一次i和j的值,計(jì)算1/(i+j-1)的值,得到列表hilbert如“Out[36]”所示;“In[37]”將hilbert轉(zhuǎn)化為矩陣形式,如圖2-8中“Out[37]”所示,該矩陣為5階Hilbert矩陣。此外,Table函數(shù)的第一個(gè)參數(shù)可以為語(yǔ)句組,每個(gè)語(yǔ)句組包括多條語(yǔ)句,相鄰的兩個(gè)語(yǔ)句間用分號(hào)“;”分隔,其典型實(shí)例如圖2-9所示。在圖2-9中,“In[40]”中每條語(yǔ)句后面的分號(hào)“;”表示該條語(yǔ)句不顯示結(jié)果;而Table函數(shù)內(nèi)部的分號(hào)“;”用于分隔Table函數(shù)的語(yǔ)句,所有用分號(hào)連接的語(yǔ)句均被視為“一條”語(yǔ)句。也就是說(shuō),“k=Sin[i];sum+=0.001k”為一條語(yǔ)句。在“In[40]”中,將sum賦為0,然后,在Table循環(huán)2.1常用列表構(gòu)造方法2.1常用列表構(gòu)造方法法為“Range[imin,imax,step]”,表示從imin(為1可省略)按步長(zhǎng)step(為1可省略)遞增到imax得到的數(shù)列,相當(dāng)于“Table[i,{i,imin,imax,step}]”實(shí)現(xiàn)的功能。在“Range[imin,imax,step]”生成的序列中,imin為第一個(gè)數(shù),imin+step為第二個(gè)數(shù),imin+2step為第三個(gè)數(shù),依次類推,直到遞增(步長(zhǎng)step為正)或遞減(步長(zhǎng)step為負(fù))至小于等于imax。但是,有可能imax取不到,即imax不在生成的列表中。2.1常用列表構(gòu)造方法2.1常用列表構(gòu)造方法Range函數(shù)的參數(shù)形式為:變量起始值(為1可省略)、變量終止值、變量增量(為1可省略),因此,在圖2-10中,“In[47]”表示從1按步長(zhǎng)1增加到5生成的列表,如圖“Out[47]”所示;“In[48]”表示從10按步長(zhǎng)1增加到15生成的列表,如“Out[48]”所示;“In[49]”表示從3按步長(zhǎng)-1遞減到-3生成的列表,如“Out[49]”所示。Range函數(shù)支持實(shí)數(shù)序列的生成,例如Range函數(shù)生成列表的典型實(shí)例如圖2-10所示。2.1常用列表構(gòu)造方法“In[50]”從0.1按步長(zhǎng)0.3增加到1.0生成的列表,如“Out[50]”所示,使用語(yǔ)句“Range[0.1,1.1,0.3]”也可以生成該列表(注意,1.1不在列表中)??墒褂肦ange函數(shù)作為Table函數(shù)的局部變量變化范圍,例如如下語(yǔ)句:Table[i^2,{i,Range[3]}]這里局部變量i的取值范圍為Range[3],即{1,2,3},上述Table函數(shù)的運(yùn)行結(jié)果為:{1,4,9}。Range函數(shù)生成列表的典型實(shí)例如圖2-10所示。2.2.1列表元素訪問(wèn)列表中元素的操作十分靈活。列表中的部分元素可以單獨(dú)訪問(wèn),并可以讀取出來(lái)構(gòu)成新的列表;同時(shí),列表支持元素的修改、增加和刪除操作,并且可以檢索和統(tǒng)計(jì)列表中的元素情況。列表中元素的訪問(wèn)方法為“列表名[[元素位置]]”,注意,使用雙中括號(hào)訪問(wèn)元素。在列表中,元素位置的索引號(hào)自左至右為從1開(kāi)始步進(jìn)1,或從右至左為從-1開(kāi)始步進(jìn)-1?!霸匚恢谩钡谋硎痉椒ㄓ兴姆N:(1)正整數(shù)n,表示從左邊第1個(gè)元素算起的第n個(gè)元素位置;(2)負(fù)整數(shù)-n,表示從右邊第1個(gè)元素向左數(shù)的第n個(gè)元素位置;(3)“m;;n;;k”,表示從第m個(gè)元素位置按步長(zhǎng)k遞增(k為正數(shù))或遞減(k為負(fù)數(shù))至第n個(gè)元素位置(m、n可以為負(fù)整數(shù)),步長(zhǎng)k可為正整數(shù)數(shù)也可為負(fù)整數(shù);(4)用其他列表的元素表示要索引列表的元素位置,要求使用的其他列表元素必須為正整數(shù)或負(fù)整數(shù),且其元素值在檢索列表的元素位置索引號(hào)范圍內(nèi),例如:“x=Table[i^2,{i,10}];y=x[[Range[1,10,2]]]”,這里使用了Range產(chǎn)生的列表元素作為x列表的索引號(hào),得到x列表的奇數(shù)位置的元素組成的新列表,賦給變量y。對(duì)于嵌套列表,“元素位置”可指定各層列表的訪問(wèn)。2.2列表元素操作在圖2-11中,“In[2]”用Range函數(shù)生成1至10的整數(shù)列表,然后,該列表的每個(gè)元素加上0.5后得到如“Out[2]”所示的列表x;“In[4]”展示了訪問(wèn)單個(gè)列表元素的方法,這里使用“[[3]]”表示讀取x列表的第3個(gè)元素,讀出值為3.5,如“Out[4]”所示;“In[5]”使用“[[-2]]”表示讀取x列表的倒數(shù)第2個(gè)元素,讀出值為9.5,如“Out[5]”所示;“In[6]”中,“[[5;;7]]”表示從第5個(gè)按步長(zhǎng)1至第7個(gè)元素,即讀取列表x的第5至7個(gè)元素,讀出結(jié)果以列表的形式存儲(chǔ),即{5.5,6.5,7.5},如“Out[6]”所示。在“In[7]”中,“[[-8;;-5]]”表示從倒數(shù)第8個(gè)元素按步長(zhǎng)1至倒數(shù)第5個(gè)元素,即讀取列表x的倒數(shù)第8個(gè)元素至倒數(shù)第5個(gè)元素,讀出結(jié)果以列表的形式存儲(chǔ),即列表元素訪問(wèn)的典型實(shí)例如圖2-11和圖2-12所示。{3.5,4.5,5.5,6.5},如“Out[7]”所示。如果使用語(yǔ)句“a4=x[[-5;;-8;;-1]]”,則表示讀取x列表的倒數(shù)第5個(gè)至倒數(shù)第8個(gè)元素組成一個(gè)新列表,即{6.5,5.5,4.5,3.5},該列表是圖2-11中“Out[7]”的反序列表;“In[17]”讀出列表x的第3個(gè)、第7個(gè)和第10個(gè)位置的元素并組成新的列表,且以列表的形式存儲(chǔ),即{3.5,7.5,10.5},如“Out[17]”所示;“In[18]”讀出列表x的第1個(gè)位置起、步進(jìn)為3、終止位置為10(可以取不到)的元素,將這些元素組成一個(gè)新列表,即{1.5,4.5,7.5,10.5},如“Out[18]”所示。列表元素訪問(wèn)的典型實(shí)例如圖2-11和圖2-12所示。在圖2-12中,“In[22]”生成了一個(gè)二維列表y,借助于MatrixForm轉(zhuǎn)化為矩陣形式如“Out[23]”所示;“In[24]”讀取y的第2個(gè)子列表的第3個(gè)元素,即第2行第3列的元素,讀出6;“In[25]”是另一種讀取嵌套列表y中元素的方法,表示讀出第2行第2列的元素,即4;“In[26]”表示讀出y中第2個(gè)子列表中的全部元素,即讀出第2行的全部元素,讀出為{2,4,6,8},也可使用語(yǔ)句b3=y[[2]],如果是讀出y中一列的數(shù)據(jù),例如讀出第2列的數(shù)據(jù),可以使用語(yǔ)句b3=y[[All,2]],這里的All表示全部元素;“In28”讀出列表y中的第1、2行和第1、3列交叉處的元素,這里的“1;;-1;;2”表示從第一列至最后一列(可以取不到),步長(zhǎng)為2;“In[31]”讀出列表y的第1、3行和第3、4列交叉處的元素,如“Out[31]”所示。列表元素訪問(wèn)的典型實(shí)例如圖2-11和圖2-12所示。除了上述列表元素訪問(wèn)方式外,Wolfram語(yǔ)言中集成了一些列表元素訪問(wèn)函數(shù),例如,F(xiàn)irst函數(shù)可訪問(wèn)列表的首元素,Last函數(shù)用于訪問(wèn)列表的尾元素,Part函數(shù)用于訪問(wèn)列表中的任一元素,Take函數(shù)用于訪問(wèn)列表的部分元素。Take函數(shù)用法眾多,例如:(1)“Take[列表,n]”讀取列表的前n個(gè)元素,讀出的元素組合為一個(gè)新列表;(2)“Take[列表,-n]”讀取列表的最后n個(gè)元素,讀出的元素組合為一個(gè)新列表;(3)“Take[列表,{m,n}]”讀取列表的第m個(gè)至第n個(gè)元素,讀出的元素組合為一個(gè)新列表;(4)“Take[列表,{m,n,k}]”讀取列表的第m個(gè)至第n個(gè)元素(可能取不到),讀取步長(zhǎng)為k,讀出的元素組合為一個(gè)新列表。盡管有Part和Take等諸多函數(shù),我們建議盡可能使用“[[]]”讀取列表元素,當(dāng)有多個(gè)“[[]]”嵌套使用時(shí),通過(guò)添加適當(dāng)?shù)目崭?,即可以保證雙括號(hào)的對(duì)應(yīng)關(guān)系正確無(wú)誤。2.2.2列表元素修改列表元素可以使用賦值方法直接修改,例如“列表[[位置]]=新的值”,此外,可以使用Insert函數(shù)向列表中設(shè)定的位置插入元素,借助Prepend函數(shù)在列表頭部插入元素,借助Append函數(shù)在列表尾部插入元素,使用Delete函數(shù)刪除某些位置的元素,使用Drop函數(shù)刪除列表中的一些元素,使用ReplacePart函數(shù)替換列表中的某些元素,等等。這些函數(shù)的典型用法實(shí)例如圖2-14所示。2.2列表元素操作在圖2-14中,“In[1]”使用函數(shù)CharacterRange生成一個(gè)從字符“a”至字符“j”的字符列表x,如“Out[1]”所示;“In[2]”將x的第2個(gè)元素賦值為“k”;“In[3]”顯示列表x,可見(jiàn)其第2個(gè)元素由字符“b”變?yōu)榱恕発”,如“Out[3]”所示?!癐n[5]”調(diào)用Prepend函數(shù)在列表x前面添加字符“e”,形成新的列表如“Out[5]”所示;“In[6]”調(diào)用Append函數(shù)在列表x尾部添加字符“m”,形成新的列表如“Out[6]”所示;“In[8]”調(diào)用Delete函數(shù)刪除列表x的第3個(gè)、第6個(gè)和第8個(gè)位置處的字符,形成新的列表如“Out[8]”所示;“In[9]”調(diào)用Drop函數(shù)刪除列表x的第3個(gè)位置按步長(zhǎng)2至第8個(gè)位置的字符,形成新的列表如“Out[9]”所示?!癐n[11]”調(diào)用ReplacePart函數(shù)將列表x的第2個(gè)元素替換為“b”,形成新的列表如“Out[11]”所示。請(qǐng)注意:除了“In[2]”的賦給操作外,其余操作沒(méi)有將結(jié)果賦值給x,因此,這些操作沒(méi)有改變列表x。需要說(shuō)明的是,字符串或字符在Mathematica中,使用雙引號(hào)包括,但是在顯示單元格(即在“Out[n]”)中,不顯示雙引號(hào),但可以借助于FullForm函數(shù)顯示字符串中的雙引號(hào),例如“FullForm[x]”將顯示“List["a","b","c","d","e","f","g","h","i","j"]”。圖2-13借助于一維列表展示了列表元素的修改操作,這些函數(shù)對(duì)于二維列表和高維列表同樣成立。2.2.2列表元素修改2.2列表元素操作2.2.3列表元素檢索2.2列表元素操作Wolfram語(yǔ)言提供了檢索某個(gè)元素是否在列表中、在列表中的位置和出現(xiàn)的次數(shù)的函數(shù),這些函數(shù)依次為FreeQ、MemberQ、Position和Count,其典型用法與實(shí)例如圖2-15所示。圖2-15中FreeQ、MemberQ、Position和Count函數(shù)的典型語(yǔ)法如下:(1)FreeQ[列表,元素]如果給定的元素在列表中,則返回False;否則返回True;(2)MemberQ[列表,元素]如果給定的元素在列表中,則返回True;否則返回False;(3)Position[列表,元素]返回給定的元素在列表中的位置;(4)Count[列表,元素]統(tǒng)計(jì)給定的元素在列表中出現(xiàn)的次數(shù)。圖2-15中,“In[33]”調(diào)用Position函數(shù)獲得元素“b”在列表x中的位置,返回結(jié)果如“Out[33]”所示,為一個(gè)二層嵌套列表{{2},{4},{10}},表明列表x的第2個(gè)、第4個(gè)和第10個(gè)位置均為字符“b”;“In[34]”調(diào)用Count函數(shù)統(tǒng)計(jì)元素“b”在列表x中出現(xiàn)的次數(shù),得到結(jié)果為3次,如“Out[34]”所示?,F(xiàn)在回到圖2-15,“In[28]”生成列表x,全部元素均為字符,如“Out[28]”所示;“In[29]”調(diào)用FreeQ函數(shù)判定列表中有沒(méi)有元素“d”,如果存在返回False,這里,返回False,說(shuō)明字符“d”位于列表x中;“In[30]”調(diào)用FreeQ函數(shù)判定列表中有沒(méi)有元素“m”,這里沒(méi)有該元素,故返回True。更常用的列表元素歸屬判定函數(shù)為MemberQ函數(shù),如“In[31]”和“In[32]”所示:由于“b”存在于列表x中,故“In[31]”返回True,如“Out[31]”所示;而“m”不在列表x中,故“In[32]”返回False,如“Out[32]”所示。Position函數(shù)和Count函數(shù)的參數(shù)中“元素”可取為“模式表達(dá)式”或測(cè)試函數(shù)等,例如:輸入“x={"abc",1,2,"def",3,4}”得到列表x,然后,調(diào)用“Position[x,_?StringQ]”將返回列表x中為字符串的元素位置,這里的“_?StringQ”是一種模式對(duì)象,問(wèn)號(hào)“?”前為模式表達(dá)式,問(wèn)號(hào)“?”后為測(cè)試函數(shù),該語(yǔ)句將返回{{1},{4}},即列表x的第1個(gè)和第4個(gè)位置為字符串;同樣地,“Position[x,_?IntegerQ]”將返回列表x中整數(shù)元素的位置,這里的“_?IntegerQ”可用“_Integer”替換,該語(yǔ)句返回結(jié)果為{{2},{3},{5},{6}},表示列表x的第2、3、5和6個(gè)位置為整數(shù)。調(diào)用“Count[x,_Integer]”計(jì)算列表x中的整數(shù)個(gè)數(shù),這里返回4。2.2.4列表變換2.2列表元素操作
嵌套列表可以轉(zhuǎn)換為單層列表,同時(shí),單層列表也可以轉(zhuǎn)換為多層嵌套列表,這兩種變換對(duì)應(yīng)的函數(shù)為Flatten和Partition。其中,F(xiàn)latten函數(shù)用于將多層嵌套列表轉(zhuǎn)化為單層列表,其典型用法有如下兩種:(1)Flatten[多層列表],將多層列表轉(zhuǎn)化為單層列表;(2)Flatten[多層列表,k],將多層列表的前k層的子列表合并(稱為壓平),這里的第k=1層是指第1層子列表(從最外層算起時(shí),是指第二層列表)。此外,還有一個(gè)FlattenAt函數(shù),其用法為:FlattenAt[多層列表,n]將多層列表的第n個(gè)元素(位于第n個(gè)元素的子列表)壓平,只壓平其第一層列表。例如:“FlattenAt[{{a,b},{c,{d,e}},{f}},2]”將其中的第2個(gè)元素“{c,{d,e}}”壓平一級(jí),即將其最外層的花括號(hào)去掉,得到結(jié)果為“{{a,b},c,{d,e},{f}}”。2.2.4列表變換2.2列表元素操作
嵌套列表可以轉(zhuǎn)換為單層列表,同時(shí),單層列表也可以轉(zhuǎn)換為多層嵌套列表,這兩種變換對(duì)應(yīng)的函數(shù)為Flatten和Partition。Partition函數(shù)用于將單層列表轉(zhuǎn)化為多層嵌套列表,其典型用法有如下三種:(1)Partition[單層列表,n],將單層列表分成不重疊的長(zhǎng)度為n的子列表(最后的元素不夠n個(gè)時(shí)不計(jì)入);(2)Partition[單層列表,n,k],將單層列表分成長(zhǎng)度為n的子列表,各子列表間不重疊的元素個(gè)數(shù)為k(即偏移量為k);(3)Partition[多層列表,{n1,n2,…}],將多層列表的每層分別劃分為長(zhǎng)度為n1、n2等等的子列表,要求列表的層數(shù)與第二個(gè)參數(shù)的長(zhǎng)度相同。2.2.4列表變換2.2列表元素操作
嵌套列表可以轉(zhuǎn)換為單層列表,同時(shí),單層列表也可以轉(zhuǎn)換為多層嵌套列表,這兩種變換對(duì)應(yīng)的函數(shù)為Flatten和Partition。除了上述列表變換函數(shù)之外,Wolfram還提供了合并列表函數(shù)Join和Union、列表交集函數(shù)Intersection、列表補(bǔ)集函數(shù)Complement、列表反序函數(shù)Reverse、列表循環(huán)左移函數(shù)RotateLeft和列表循環(huán)右移函數(shù)RotateRight以及列表分裂函數(shù)Split。其中,函數(shù)Split[列表]將列表中相同的元素劃分為一個(gè)子列表,例如,“Split[{1,1,0,0,1,1,1,0}]”將得到“{{1,1},{0,0},{1,1,1},{0}}”。2.3.1向量2.3向量與矩陣表示單層列表可以視為向量,兩層嵌套列表(且各個(gè)子列表的長(zhǎng)度相同時(shí))可以視為矩陣。下面將介紹向量和矩陣的表示及其基本運(yùn)算。一個(gè)單層列表在Mathematica中為一個(gè)列向量,針對(duì)向量的常用操作有元素排序函數(shù)Sort、計(jì)算向量長(zhǎng)度函數(shù)Length和求向量元素總和函數(shù)Total。其中,Sort函數(shù)的典型用法有兩種:(1)Sort[列表],將“列表”按升序排列;(2)Sort[列表,排序函數(shù)],按“排序函數(shù)”排列“列表”,“排序函數(shù)”常為純函數(shù)(見(jiàn)第7.3節(jié)),如果“排序函數(shù)”為Greater,則按降序排列列表元素。這三個(gè)函數(shù)的典型實(shí)例如圖2-18所示。PadRight[列表,長(zhǎng)度,元素或元素列表]PadLeft[列表,長(zhǎng)度,元素或元素列表]在圖2-18中,“In[12]”創(chuàng)建了列表x,如“Out[12]”所示;“In[13]”將列表x以矩陣的形式顯示,如“Out[13]”所示,可見(jiàn)一維列表x以列向量的形式存儲(chǔ);“In[15]”調(diào)用Sort函數(shù)將列表x以降序的方向排列,如“Out[15]”所示;“In[16]”調(diào)用Length函數(shù)獲得列表x的長(zhǎng)度(即其中的元素個(gè)數(shù)),其結(jié)果為10,如“Out[16]”所示;“In[17]”調(diào)用Total函數(shù)計(jì)算列表x中元素的總和,其結(jié)果為55,如“Out[17]”所示。列表可借助于PadLeft和PadRight函數(shù)在左邊和右邊可以填補(bǔ)特定元素,使列表達(dá)到指定的長(zhǎng)度。這兩個(gè)函數(shù)的主要用法如下:PadRight[列表,長(zhǎng)度,元素或元素列表]PadLeft[列表,長(zhǎng)度,元素或元素列表]其中PadLeft函數(shù)將第三個(gè)參數(shù)“元素”或“元素列表”重復(fù)從左向右填到“列表”的表頭前,使列表長(zhǎng)度達(dá)到指定的“長(zhǎng)度”;如果填充的為“元素列表”,可以這樣理解,即先將填充的“元素列表”向左循環(huán)展開(kāi)為指定“長(zhǎng)度”的序列,然后,將被填充的列表的元素從最后一個(gè)元素開(kāi)始依次替換掉那個(gè)“序列”的對(duì)應(yīng)位置上的元素(被填充的列表的元素順序不變)。而PadRight函數(shù)將第三個(gè)參數(shù)“元素”或“元素列表”重復(fù)從左向右填到“列表”的表尾,使列表長(zhǎng)度達(dá)到指定的“長(zhǎng)度”;如果填充的為“元素列表”,可以這樣理解,即先將填充的“元素列表”向右循環(huán)展開(kāi)為指定“長(zhǎng)度”的序列,然后,將被填充的列表的元素替換掉那個(gè)“序列”的相應(yīng)位置上的元素。如果第三個(gè)參數(shù)為0,可以省略。列表填充函數(shù)的典型實(shí)例如圖2-19所示。在圖2-19中,“In[18]”調(diào)用“Clear["`*"]”清除Notebook中已創(chuàng)建的變量的值;“In[19]”創(chuàng)建了列表x,如“Out[19]”所示;“In[21]”調(diào)用PadLeft函數(shù)從左向右在列表x的頭部添加0,直到列表長(zhǎng)度達(dá)到16,如“Out[21]”所示;“In[22]”從右向左在列表x的尾部添加0,直到列表長(zhǎng)度達(dá)到16,如“Out[22]”所示;“In[23]”從右向左在列表x的尾部添加1,直到列表長(zhǎng)度達(dá)到16,如“Out[23]”所示;“In[24]”調(diào)用PadRight函數(shù)在列表x尾部循環(huán)添加列表{1,1,0,1}中的元素,直到列表長(zhǎng)度為16,如“Out[24]”所示。下面進(jìn)一步在圖2-20中說(shuō)明PadLeft和PadRight填充“列表”時(shí)的用法實(shí)例在圖2-20中,“In[79]”生成一個(gè)列表x,長(zhǎng)度為7,如“Out[79]”所示。在“In[81]”中,在列表x的左邊循環(huán)填充列表{1,2,3,4}至長(zhǎng)度為17的新列表,其方法為:先將列表{1,2,3,4}從右向左循環(huán)展開(kāi)為長(zhǎng)度為17的列表,即{4,1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4},將該列表的最后7個(gè)元素替換為列表x的元素,即得到結(jié)果列表“{4,1,2,3,4,1,2,3,4,1,11,12,13,14,15,16,17}”,如“Out[81]”所示。在“In[82]”中,在列表x的右邊循環(huán)填充列表{1,2,3,4}至長(zhǎng)度為17的新列表,其方法為:先將列表{1,2,3,4}從左向右循環(huán)展開(kāi)為長(zhǎng)度為17的列表,即{1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4,1},將該列表的前面7個(gè)元素替換為列表x的元素,即得到結(jié)果列表“{11,12,13,14,15,16,17,4,1,2,3,4,1,2,3,4,1}”,如“Out[82]”所示。借助于Accumulate函數(shù)可實(shí)現(xiàn)列表元素的累加,如圖2-21所示在圖2-21中,RandomInteger[]函數(shù)(不帶參數(shù))用于隨機(jī)生成0或1,“In[25]”生成長(zhǎng)度為10的0或1為元素的隨機(jī)列表x,如“Out[25]”所示;然后,“In[26]”將列表x轉(zhuǎn)化為以1或-1為元素的列表y,如“Out[26]”所示;最后,“In[27]”調(diào)用Accumulate函數(shù)從左向右累加列表y中的各個(gè)元素,即第n個(gè)位置上的值是原列表中第1個(gè)至第n個(gè)元素的和,如“Out[27]”所示。兩層嵌套列表且其每個(gè)子列表的長(zhǎng)度相同時(shí),兩層嵌套列表可以視為矩陣,每個(gè)子列表對(duì)應(yīng)著矩陣的一行,如圖2-22所示。在圖2-22中,“In[28]”調(diào)用“Clear["`*"]”清除已創(chuàng)建的變量的值;“In[31]”生成一個(gè)兩層嵌套列表x,包含3個(gè)子列表,每個(gè)子列表具有4個(gè)元素,如“Out[31]”所示;“In[32]”用矩形格式表示列表x,如“Out[32]”所示,為一個(gè)3行4列的矩陣,注意:這里的輸出形式為“Out[32]//MatrixForm”,它2.3.2矩陣2.3向量與矩陣表示不能參與計(jì)算;但是,“Out[32]”可參與計(jì)算?!癐n[34]”使用矩陣轉(zhuǎn)置函數(shù)Transpose得到x的轉(zhuǎn)置y,如“Out[34]”所示;“In[35]”使用Dimensions函數(shù)讀取y的大小,如“Out[35]”所示,即{4,3},表示y為4行3列的矩陣。2.3.2矩陣2.3向量與矩陣表示2.3.2矩陣訪問(wèn)矩陣中的元素借助于訪問(wèn)二維列表中的元素的方法,通過(guò)借助位置操作符“[[]]”或Part函數(shù)實(shí)現(xiàn),例如對(duì)于二維列表x,“x[[i,j]]”為其第i行第j列的元素;“x[[k1;;k2,m1;;m2]]”表示x的第k1行至第k2行和第m1列至m2列的元素組成的新的矩陣;“x[[i]]”或“x[[i,All]]”表示x的第i行;“x[[All,j]]”表示x的第j列。矩陣訪問(wèn)的典型實(shí)例如圖2-23所示。2.3.2矩陣對(duì)于常用的矩陣,例如單位矩陣和對(duì)角矩陣等,Mathematica提供了內(nèi)置函數(shù),其中,函數(shù)IdentityMatrix用于生成單位陣,而DiagonalMatrix函數(shù)可生成對(duì)角矩陣,這兩個(gè)函數(shù)用法實(shí)例如圖2-24所示。2.3.2矩陣在圖2-24中,“In[39]”調(diào)用“Clear["`*"]”清除已創(chuàng)建的全局變量的值;“In[40]”生成了一個(gè)4階的單位陣,如“Out[40]”所示。函數(shù)IdentityMatrix只有一個(gè)正整數(shù)參數(shù)n,表示生成n×n的單位矩陣?!癐n[41]”生成一個(gè)以列表{3,7,1,9}中的元素為對(duì)角線元素的對(duì)角矩陣,如“Out[41]”所示。這里函數(shù)DiagonalMatrix的調(diào)用形式為“DiagonalMatrix[一維列表,k]”,當(dāng)k為0時(shí)可省略,表示“列表”元素作為主對(duì)角線元素,如“In[41]”和“Out[41]”所示;如果k為正整數(shù),表示主對(duì)角線上方第k條對(duì)角線上的元素為“列表”中的元素;如果k為負(fù)整數(shù),表示主對(duì)角線下方第|k|條對(duì)角線上的元素為“列表”中的元素,其典型實(shí)例如圖2-25所示。2.3.2矩陣在圖2-25中,“In[44]”調(diào)用DiagonalMatrix函數(shù)生成一個(gè)矩陣c,在c的主對(duì)角線下方的第2條副對(duì)角線上的元素為列表{3,7,1,9},其余位置上的元素為0,因此,矩陣c必須為6×6的矩陣,如“Out[44]”所示。本章介紹了列表和一些常用的列表函數(shù)。列表函數(shù)雖然簡(jiǎn)單,但是具有重要的作用。例如,在圖像加密時(shí),有時(shí)需要將圖像由二維矩陣轉(zhuǎn)化為一維向量的形式,這時(shí),可以使用Flatten函數(shù)實(shí)現(xiàn)。如果沒(méi)有Flatten函數(shù),借助于類似于C語(yǔ)言的循環(huán)控制語(yǔ)句實(shí)現(xiàn),至少需要3條以上的語(yǔ)句,而且還需要借助于中間變量等。然而,借助于Flatten函數(shù)只需一條語(yǔ)句就可以實(shí)現(xiàn)圖像由二維矩陣轉(zhuǎn)化為一維向量。02本章小結(jié)第三章Mathematica繪圖3.1二維繪圖3.2三維繪圖3.3動(dòng)畫(huà)Mathematica軟件具有強(qiáng)大的繪圖功能,甚至被用來(lái)制作電影特效。針對(duì)科學(xué)計(jì)算的結(jié)果展示而言,其二維繪圖和三維繪圖功能十分完備。本章將介紹Mathematica最常用的二維繪圖函數(shù)和三維繪圖函數(shù),并結(jié)合科技論文中插圖的要求,闡述這些繪圖函數(shù)的常用參數(shù)和典型用法。3.4圖像處理基礎(chǔ)3.1二維繪圖3.1.1Plot函數(shù)Mathematica軟件集成了大量的二維繪圖函數(shù),這里重點(diǎn)討論常用的12種函數(shù),即Plot、DiscretePlot、ListPlot、ListLinePlot、Graphics、PolarPlot、ParametricPlot、ContourPlot、BarChart、PieChart、Show和Graphics函數(shù),并主要討論這些函數(shù)常用的參數(shù)配置和典型用法。Plot函數(shù)的基本語(yǔ)法為:Plot[函數(shù),{變量,初值,終值}],其典型實(shí)例如圖所示在圖3-1中,使用Plot函數(shù)繪制了正弦函數(shù)在0至2間的圖像,Plot函數(shù)在默認(rèn)參數(shù)下將繪制坐標(biāo)軸和曲線,這里的函數(shù)為Sin[x],變量為x,初值為0,終值為2。下面給圖3-1添加一些繪圖選項(xiàng),使得圖3-1更加美觀,這些選項(xiàng)包括:(1)Axes選項(xiàng),默認(rèn)為True,即顯示坐標(biāo)軸,如果設(shè)為False,則不顯示坐標(biāo)軸;(2)Frame選項(xiàng),默認(rèn)為False,即不顯示邊框,如果設(shè)為True,則顯示邊框;(3)FrameLabel選項(xiàng),用于設(shè)置邊框的標(biāo)簽,格式為“{{左標(biāo)簽,右標(biāo)簽},{下標(biāo)簽,上標(biāo)簽}}”,如果某個(gè)標(biāo)簽不顯示,則設(shè)為None;(4)LabelStyle選項(xiàng),用于設(shè)置標(biāo)簽的顯示樣式,如標(biāo)簽字體等;(5)PlotStyle選項(xiàng),用于設(shè)置繪圖的樣式,如線的粗細(xì)和顏色等;(6)ImageSize選項(xiàng),用于設(shè)置顯示圖像的大小。在設(shè)置標(biāo)簽樣式時(shí),常用于Style[表達(dá)式,樣式]函數(shù),該函數(shù)用于設(shè)置“表達(dá)式”的顯示“標(biāo)式”。在圖3-1的基礎(chǔ)上,添加一些選項(xiàng)設(shè)置,得到如圖3-2所示的圖形。Plot函數(shù)可以同時(shí)繪制多個(gè)函數(shù),要求這些函數(shù)的定義域相同。如圖3-3所示,Plot函數(shù)同時(shí)繪制了正弦函數(shù)和余弦函數(shù)在第一個(gè)正周期內(nèi)的圖形。Plot函數(shù)常用的選項(xiàng)參數(shù)還有AxesOrigin、PlotRange和Epilog等。其中,AxesOrigin指定坐標(biāo)軸的“原點(diǎn)”放置的位置,即指定坐標(biāo)軸的交叉點(diǎn)位置,僅用于顯示美觀。PlotRange用于指定顯示的范圍,如果為Full,則顯示全部數(shù)據(jù)的范圍;如果為Automatic,則為了顯示美觀,可能有些異常數(shù)據(jù)不顯示。Epilog選項(xiàng)非常重要,用于在圖形中插入圖形對(duì)象,典型實(shí)例如圖3-4所示。Epilog在繪制分段函數(shù)時(shí)尤其有用,如圖3-5所示。在繪制圓盤時(shí),如果不使用Offset函數(shù)設(shè)置絕對(duì)半徑,而是使用語(yǔ)法Disk[{x,y},r]繪制半徑為r的圓盤,此時(shí),r可以設(shè)為0.03,這時(shí),應(yīng)使用如下的語(yǔ)句:3.1二維繪圖3.1.2DiscretePlot函數(shù)DiscretePlot函數(shù)用于繪制散離(時(shí)間)序列的圖形,其基本語(yǔ)法為“DiscretePlot[序列,{n,最小值,最大值,步長(zhǎng)}]”,其中,“最小值”為1可省略,步長(zhǎng)為1可省略;“序列”可以為多個(gè)序列,當(dāng)有多個(gè)序列時(shí),使用花括號(hào)“{}”括起來(lái)。DiscretePlot函數(shù)的典型實(shí)例如圖3-6所示。在圖3-6中,“In[25]”使用Table函數(shù)生成了一個(gè)正弦函數(shù)序列x,使用了分號(hào)“;”結(jié)尾,表示這一行代碼的輸出不顯示在Notebook中。然后,“In[26]”調(diào)用DiscretePlot函數(shù)繪制離散序列圖,其中,各個(gè)參數(shù)或選項(xiàng)的作用如下:3.1.2DiscretePlot函數(shù)在圖3-7中,繪制的曲線為{x[[n]],x[[n]]+1}。DiscretePlot函數(shù)可用于繪制離散時(shí)間信號(hào),多用于《信號(hào)與系統(tǒng)》等課程中。DiscretePlot函數(shù)可用于同時(shí)繪制多個(gè)離散序列,如圖3-7所示3.1.2DiscretePlot函數(shù)3.1二維繪圖3.1.3ListPlot函數(shù)ListPlot函數(shù)用于列表的繪制,典型語(yǔ)法為“ListPlot[列表或多個(gè)列表]”,如果為“多個(gè)列表”,需使用花括號(hào)“{}”將“多個(gè)列表”括起來(lái),即以嵌套列表的形式。ListPlot函數(shù)最常用的選項(xiàng)為Filling和PlotMarkers。ListPlot函數(shù)的典型應(yīng)用實(shí)例如圖3-8所示。Epilog在繪制分段函數(shù)時(shí)尤其有用,如圖3-5所示。3.1.3ListPlot函數(shù)Filling選項(xiàng)用于指定點(diǎn)列的“填充”,如圖3-9所示Epilog在繪制分段函數(shù)時(shí)尤其有用,如圖3-5所示。3.1.3ListPlot函數(shù)ListPlot函數(shù)的參數(shù)為{{x1,y1},{x2,y2},{x3,y3},……}時(shí),將以{xi,yi}為點(diǎn)的橫縱坐標(biāo)繪點(diǎn),如圖3-10所示。3.1二維繪圖3.1.4ListLinePlot函數(shù)ListLinePlot函數(shù)與ListPlot函數(shù)的輸入?yún)?shù)相同,其各個(gè)參數(shù)的含義也相同,但是ListPlot繪制列表中的各個(gè)點(diǎn),而ListLinePlot函數(shù)繪制列表中各個(gè)點(diǎn)的連線(不標(biāo)記各個(gè)點(diǎn))。將圖3-10中“In[70]”的ListPlot函數(shù)更換為L(zhǎng)istLinePlot函數(shù),此時(shí)將不繪制各個(gè)點(diǎn),而是繪制連通各個(gè)點(diǎn)的連線,其結(jié)果如圖3-11所示。3.1二維繪圖3.1.4ListLinePlot函數(shù)在圖3-11中,為了使得圓的顯示效果更佳,這里在Table循環(huán)中,使用了步長(zhǎng)0.01(在圖3-10中,步長(zhǎng)為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)點(diǎn)Point[{x,y}]生成坐標(biāo){x,y}處的點(diǎn)。Graphics函數(shù)用于將二維圖形數(shù)據(jù)轉(zhuǎn)化為可視圖形,其基本語(yǔ)法為: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}等點(diǎn)的線段。(7)三角形Triangle[{{x1,y1},{x2,y2},{x3,y3}}]生成以點(diǎn){x1,y1}、{x2,y2}和{x3,y3}為頂點(diǎn)的實(shí)心三角形。6)矩形Rectangle[{x1,y1},{x2,y2}]以{x1,y1}為左下角、以{x2,y2}為右上角生成實(shí)心矩形。(8)多邊形Polygon[{{x1,y1},{x2,y2},…}]生成以點(diǎn){x1,y1}和{x2,y2}等為頂點(diǎn)的實(shí)心多邊形。Graphics函數(shù)用于將二維圖形數(shù)據(jù)轉(zhuǎn)化為可視圖形,其基本語(yǔ)法為: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ù)將它們包括起來(lái),例如,Directive[Blue,Thick,Dashed],指定屬性為藍(lán)色粗虛線。此外,常用EdgeForm和FaceForm指定圖形的邊和圖面的屬性。其他常用的屬性通過(guò)Thickness、RGBColor、Opacity、GrayLevel、Dashing和PointSize等函數(shù)指定,分別表示粗細(xì)、顏色、透明度、灰度、虛線和點(diǎn)的大小等。Graphics函數(shù)的功能十分強(qiáng)大;而Plot等函數(shù)由于本身已生成了Graphics對(duì)象,而無(wú)需使用Graphics進(jìn)行處理,例如:和是相同的功能。這里重點(diǎn)介紹上述8種“二維圖形數(shù)據(jù)”生成函數(shù)借助于Graphics函數(shù)生成二維圖形的實(shí)例,如圖3-12所示。3.1.5Graphics函數(shù)在圖3-12中,F(xiàn)ramed函數(shù)用于給整個(gè)圖形添加一個(gè)邊框;Graphics函數(shù)中共繪制了四個(gè)圖形和一個(gè)文本,依次為:使用藍(lán)色粗虛線作的圓(半徑為1.5,圓心坐標(biāo)為{0,0})、紅色的內(nèi)接正四邊形、綠色的圓盤(作為正四邊形的內(nèi)切圓)、藍(lán)色的正三角形(圓盤的內(nèi)接正三角形)和一個(gè)黑色的文本“Graphs”。圖3-12中,圖形的坐標(biāo)均使有了絕對(duì)坐標(biāo)。3.1二維繪圖3.1.6PolarPlot函數(shù)ParametricPlot函數(shù)是Plot函數(shù)的參數(shù)方程版本,其基本語(yǔ)法為:
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 放射性金屬礦的合理開(kāi)采與資源保護(hù)考核試卷
- 土壤監(jiān)測(cè)儀器操作與校準(zhǔn)考核試卷
- 安全防護(hù)在社交媒體的賬戶認(rèn)證安全考核試卷
- 制漿造紙機(jī)械的故障診斷技術(shù)進(jìn)展考核試卷
- 2025年01月2025湖北荊州市監(jiān)利市事業(yè)單位人才引進(jìn)69人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 電子商務(wù)平臺(tái)與鐵路物流服務(wù)深度融合
- 班級(jí)分組安全的實(shí)踐與理論探討
- 猴痘感染預(yù)防與控制
- 電商領(lǐng)域知名企業(yè)營(yíng)銷策略探索
- 電子商務(wù)平臺(tái)的國(guó)際物流優(yōu)化案例分析
- 2024年包頭市水務(wù)(集團(tuán))有限公司招聘筆試沖刺題(帶答案解析)
- 知識(shí)庫(kù)管理規(guī)范大全
- 2024年贛州民晟城市運(yùn)營(yíng)服務(wù)有限公司招聘筆試參考題庫(kù)附帶答案詳解
- 領(lǐng)導(dǎo)干部報(bào)告?zhèn)€人事項(xiàng)
- 9這點(diǎn)挫折算什么(課件)-五年級(jí)上冊(cè)生命與健康
- 價(jià)格監(jiān)督檢查知識(shí)培訓(xùn)課件
- 駐場(chǎng)保潔方案
- 中國(guó)心理衛(wèi)生協(xié)會(huì)家庭教育指導(dǎo)師參考試題庫(kù)及答案
- 智能廣告投放技術(shù)方案
- 知識(shí)產(chǎn)權(quán)保護(hù)執(zhí)法
- 高質(zhì)量社區(qū)建設(shè)的路徑與探索
評(píng)論
0/150
提交評(píng)論