本書首先介紹MATLAB語言程序設計的基本內(nèi)容,在此基礎(chǔ)上系統(tǒng)介紹各個應用數(shù)學領(lǐng)域的問題求解,如基于MATLAB的微積分問題、線性代數(shù)問題、積分變換與復變函數(shù)問題、非線性方程與**化問題、常微分方程與偏微分方程問題、數(shù)據(jù)插值與函數(shù)逼近問題、概率論與數(shù)理統(tǒng)計問題的解析解和數(shù)值解方法等;還介紹了較新的非傳統(tǒng)方法,如模糊邏輯與模糊推理、神經(jīng)網(wǎng)絡、深度學習、進化尋優(yōu)算法、小波分析、粗糙集數(shù)據(jù)處理及分數(shù)階微積分的計算方法等。 本書可作為一般讀者學習和掌握MATLAB語言的教科書,高等學校理工科各類專業(yè)的本科生和研究生學習計算機數(shù)學語言的教材或參考書,可供科技工作者、教師學習和應用MATLAB語言解決實際數(shù)學問題時參考,還可作為讀者查詢數(shù)學問題求解方法的手冊。
國內(nèi)外類似教材有兩類,一類是介紹MATLAB語言編程,一類是介紹MATLAB在科學運算方面的應用.本書是國內(nèi)外唯一一部覆蓋各種應用數(shù)學范圍的教材.從介紹數(shù)學問題求解的方法看,國內(nèi)外大多數(shù)教材均類似于說明書的敘述方式,介紹MATLAB已有的功能,而本書以數(shù)學課程描述的方式組織材料,如果MATLAB已有某些功能,則建議直接使用(如果功能有缺陷則編寫代碼彌補),如果沒有某些必要的功能,作者會編寫通用相關(guān)代碼直接解決問題.相信讀者通過閱讀本書, 會有很大收獲!
本書從作者最早醞釀至今已經(jīng)二十年過去了。當初創(chuàng)建這門課程的初衷,是想讓學生掌握國際科學研究領(lǐng)域一線的利器,重新審視工科數(shù)學各個分支的數(shù)學問題,探討通用的求解方法,極大地提升求解科學運算問題的水平。應該說,本書實現(xiàn)了這樣的預期。
若干年之前,作者看到了錢學森先生在 1985年提出的中國工科數(shù)學課程改革的思想,其中心思想是盡量教會學生使用計算機求解數(shù)學問題,而不是一味使用傳統(tǒng)數(shù)學課程講述的方法,利用底層推導的方法去求解。事實上,在實際應用中遇到的很多問題,用傳統(tǒng)數(shù)學課程介紹的方法是不可能求解的,因而,借助計算機與強大的計算機數(shù)學語言求解科學運算問題已經(jīng)成為必然。從某種意義上講,圍繞本書的近二十年的教學與研究工作是大師理念的一種實踐,并取得了一些有益的成果。
基于本教材建設的課程現(xiàn)代科學運算 MATLAB語言與應用在 2020年入選首批國家級一流本科課程,相應的慕課課程從 2017年開始一直在中國大學慕課網(wǎng)站上開放,選課總?cè)藬?shù)達幾十萬人次。課程的英文版也已在中國大學慕課網(wǎng)站上正式開放。 2021年錄制了若干更新的授課內(nèi)容。所有授課視頻在書中相應位置均以二維碼形式標出,讀者在學習本書時,可以掃描相應的二維碼,觀看相應的視頻。
本書以雙色印刷的形式出版,在版式設計上也有很大改進,使得全書的可讀性更強。
特別感謝團隊的同事潘峰博士在相關(guān)課程建設、教材建設與教學團隊建設中的出色貢獻和所做的具體工作。感謝美國加利福尼亞大學 Merced分校的陳陽泉教授二十多年來的真誠合作及對諸多問題的有意義的探討。我?guī)资陙砼c同事、學生、同行甚至網(wǎng)友有益交流,其中有些內(nèi)容已經(jīng)形成了本書的重要素材,在此一并表示感謝。本書的出版還得到了美國 MathWorks公司圖書計劃的支持,在此表示謝意。
最后但同樣重要的,我衷心感謝相濡以沫的妻子楊軍教授,她數(shù)十年如一日的無私關(guān)懷是我堅持研究、教學與寫作的巨大動力。感謝女兒薛楊在文稿寫作、排版與視頻轉(zhuǎn)換中給出的建議和具體幫助。
薛定宇 2022年 6月
科學運算問題是科學與工程中的重要問題。在當前一般高校理工科課程設置中,高等數(shù)學、線性代數(shù)、概率論與數(shù)理統(tǒng)計等為必修課程,有些專業(yè)還有復變函數(shù)、積分變換、最優(yōu)化、數(shù)值分析等選修課程。有了這些數(shù)學基礎(chǔ),很多專業(yè)課程相應的數(shù)學模型就可以建立起來,而這些數(shù)學問題的求解就成了不容回避的問題。
在總結(jié)多年實際教學經(jīng)驗的基礎(chǔ)上,作者曾在首屆 MathWorks亞洲研究與教育峰會(2014年 11月,東京)上提出了數(shù)學問題的三步求解方法,其第一步是用簡單的語言理解要求解數(shù)學問題的物理意義,第二步是如何用計算機能接受的方式將數(shù)學問題輸入計算機,第三步是調(diào)用恰當?shù)暮瘮?shù)將數(shù)學問題的解求出來。有了這樣的思路,普通研究者可以直接利用計算機工具在短時間內(nèi)解決已經(jīng)學習過甚至根本沒有學習過的數(shù)學分支的應用問題。
本書書名中的高等應用數(shù)學不等于高等數(shù)學,而是預期盡可能廣地覆蓋理工科數(shù)學分支,其對數(shù)學分支的涵蓋范圍是非常廣泛的。書中涉及了大量的數(shù)學公式,作者沒有期望讀者能讀懂這些公式,大概理解它們的物理意義就足夠了,側(cè)重點還是應該放在學習基于 MATLAB的實際求解方法。盡管較好理解數(shù)學公式可能對學習數(shù)學問題的求解方法有所幫助,但這不是必要的。
雖然數(shù)學問題的求解在以后的課程學習與科學研究中是不可避免的,那些自認為數(shù)學基礎(chǔ)比較薄弱的讀者也不必擔心,因為本書介紹的方法是盡可能地避開煩瑣的、深奧的數(shù)學,將數(shù)學問題及其求解過程用 MATLAB能夠接受的形式全盤推給計算機去求解,充分發(fā)揮計算機的潛能去替你完成任務,最終收獲問題的解。盡管這樣的方式有時得不到一些數(shù)學家的接受與認可,但這對應用科學家與工程技術(shù)人員足矣。
比如,本書介紹了代數(shù)方程的求解方法。在實際應用中,數(shù)學家或其他科研工作者可能面對下面的代數(shù)方程組束手無策: .
. x 3y3 2z2 = 1/2
x2 3y z3 =2
. x3 2z 2y2 = 2/4
而你卻完全可以利用本書介紹的方法將該方程推給計算機去求解,在幾秒鐘之內(nèi)得出原方程組全部 27組根,將根代入原方程,誤差可能達到 10.34級別。另外,對用戶而言,如果使用工具,求解這樣的方程組與求解雞兔同籠方程一樣簡單。
再如,如果已知矩陣 A,數(shù)學家無法求出復合矩陣函數(shù) (A)= eA cos At或 Ak時,你可以輕而易舉地借助計算機得出所需的矩陣函數(shù)與乘方的解析解。
可以想象一下,當數(shù)學家只能利用其巧妙的構(gòu)思去判定 19931993的個位數(shù)是幾的時候,你卻能易如反掌地將其全部 6576位數(shù)字都列出來;當數(shù)學家在苦思冥想給定的矩陣方程 AX XD . XBXT C = 0到底有多少個根的時候,你卻有能力利用本書的方法將其實數(shù)根與復數(shù)根一次性地全部求解出來;當數(shù)學家津津樂道地描述 (a, b)區(qū)間內(nèi)至少存在一個 的時候,你卻能將滿足條件的 的所有可能值都精確地實實在在地找出來;當數(shù)學家在糾結(jié)到底用哪種技巧去求出某個函數(shù)的不定積分的時候,你卻能借助計算機在幾秒鐘之內(nèi)用直接方法求出該不定積分的解析解;當數(shù)學家因為想使用神經(jīng)網(wǎng)絡而苦苦閱讀學習相關(guān)知識的時候,你卻能通過幾分鐘基礎(chǔ)概念的學習之后熟練地利用神經(jīng)網(wǎng)絡解決實際問題,你是不是應該建立起對求解實際應用數(shù)學問題能力的自信心呢?是不是會有龜兔賽跑中兔子的優(yōu)越感呢?這樣的例子不勝枚舉,所以不要懼怕數(shù)學,因為如果系統(tǒng)地學習掌握了本書中介紹的方法和思路,你求解實際應用數(shù)學問題的能力將遠遠超過不會或不擅用計算機工具的一流數(shù)學家。
本書繼承了以前版本的寫作風格,不是按手冊的方式,即 MATLAB能求解什么就介紹什么,而是按介紹數(shù)學理論與系統(tǒng)知識的需求,組織教學材料、求解方法與求解工具,使得讀者有能力直接求解相關(guān)的數(shù)學問題。如果 MATLAB能求解某類問題,作者會直接建議使用現(xiàn)有函數(shù)去求解,如果沒有現(xiàn)成函數(shù)時,作者會編寫出通用的函數(shù),可以同樣直接地求解這類問題。本書比較典型的、獨到的求解方法包括矩陣的任意非線性函數(shù)求解、矩陣任意乘方的求解、任意多解非線性矩陣方程的求解、有約束非線性規(guī)劃問題的全局求解方法、分數(shù)階微積分的高精度數(shù)值計算等,通過實際例子的介紹,同時演示了將求解思路變成代碼的過程與技巧。
從數(shù)學問題解析運算的角度看,由于基于 Maple符號運算引擎的 MATLAB R2008a版本已經(jīng)淡出了歷史舞臺,本書早期版本中很多內(nèi)容已經(jīng)不能正常使用,新版本提供的功能也有待系統(tǒng)地利用與介紹,所以需要一個新的版本。本書引入的新內(nèi)容包括三維隱函數(shù)等圖形繪制新方法、場論的解析運算、無窮級數(shù)的收斂性判定、曲線曲面積分解析運算的通用求解函數(shù)、數(shù)值積分曲線曲面的繪制、 Diophantine方程求解、矩陣任意乘方的計算、數(shù)值積分變換方法與應用、 Laurent級數(shù)展開、非線性矩陣方程的數(shù)值解法、非線性規(guī)劃問題的全局搜索函數(shù)、常微分延遲微分方程的框圖解法、 alpha穩(wěn)定分布與 Lévy飛行、離群值檢測、全新的分數(shù)階微積分高精度計算方法、基于框圖的復雜分數(shù)階系統(tǒng)建模與求解通用方法等。本書在不顯著增加頁碼的前提下最大限度地壓縮了排版的空間浪費,融入了新的內(nèi)容,并對使用的語句做出了更詳盡的注釋,使得讀者能更好地理解涉及的代碼,更有效地學習本書的內(nèi)容。
本書的前幾版在本科生、研究生實際教學中已經(jīng)使用十余年,配備了較全面的交互性計算機輔助教學材料,相應的課程現(xiàn)代科學運算 MATLAB語言與應用目前為遼寧省精品資源共享課程。讀者可以觀看該課程的全部授課視頻,享用全套教學資源,也建議有相關(guān)想法的教師在本校開設相應的課程,使得更多的理工科學生受益。英文版教材 Scientific Computing with MATLAB(Second Edition)2016年由美國 CRC出版社出版,可以作為雙語課程或全英文課程的材料,與此同時,本書全英文課程視頻制作也在計劃之中,預計將在本書正式出版時完成。感謝向日葵教育科技公司李婷女士在視頻制作過程中提供的幫助。
書稿完成之際要感謝的人很多,感謝教學團隊成員的共同努力,學生們在課程建設中所做的扎實的工作,諸多熱心讀者的建議,出版界朋友的辛勤工作,特別地感謝摯愛的家人一如既往的支持與鼓勵。
薛定宇 2017年 6月
本書第二版出版于 2008年的 8月,MATLAB當時最新的版本是 MATLAB R2008a版,不過那之后一兩個月內(nèi), MATLAB R2008b就推出來了,最大的變化就是符號運算引擎從 Maple變成了 MuPAD,這樣,書中有些基于符號運算的內(nèi)容,尤其是為符號變量類編寫的重載函數(shù)在新版本下就全部失效了,當時一直建議采用補救與變通的方法,F(xiàn)在, MATLAB的新版本的使用已經(jīng)成為主流,新推出的 MATLAB R2012b(MATLAB 8.0版)還出現(xiàn)了許多求解科學運算問題全新的方法和函數(shù)結(jié)構(gòu)(如數(shù)值積分、延遲微分方程求解等),所以,亟待使用新的途徑重新建立起相關(guān)問題的求解方法和機制,因此本書側(cè)重于對符號運算方面的內(nèi)容和科學運算求解的新方法等方面的更新。
很多理工科課程與科學研究都是建立在應用數(shù)學各個分支基礎(chǔ)上的,所以科學運算問題的求解能力會從某些方面直接影響到科學研究的水平。本書根據(jù)理工科學生和學者的需求,全面介紹高等應用數(shù)學各個分支典型問題的求解。本書內(nèi)容看似在介紹數(shù)學,但最終目的是期望讀者在理解相關(guān)數(shù)學領(lǐng)域最基本概念的前提下,繞開純數(shù)學和底層煩瑣的推導過程,直接由計算機數(shù)學語言得出數(shù)學問題的解。所以學習本課程將使讀者提高數(shù)學素養(yǎng),掌握解決實際科學運算問題的方法,為下一步學習并實踐其他課程打下一個較好的基礎(chǔ)。
這里所說的繞開純數(shù)學,其基本思想就是用 MATLAB語言能理解的方式將科學運算的問題描述出來,然后調(diào)用現(xiàn)有的函數(shù)或自編的 MATLAB函數(shù),將問題的解直接求出來。例如,對傳統(tǒng)意義下看起來難以求解的非線性微分方程問題,可以編寫一段代碼將微分方程描述出來,以后調(diào)用相應的求解函數(shù)將其數(shù)值解求出來,再用繪圖語句將得出的解繪制出來。這樣的求解方法和理工科的需求完全一致,將復雜、煩瑣的求解中間過程全部推給計算機去求解,這樣可以把研究者從繁重的體力工作中解放出來,將精力集中到更高層次的研究中去,取得更多的成果。
本書在新版中增加了很多內(nèi)容,如體視化繪圖方法、區(qū)間極限、分段函數(shù)、數(shù)值積分全新解法、任意矩陣的定義與運算、數(shù)值 Laplace變換與反變換、差分方程解析解方法、多解矩陣方程的數(shù)值求解、延遲微分方程求解方法、 MittagLeffler函數(shù)的數(shù)值求解、非零初值分數(shù)階微分方程求解等,另外由于篇幅限制,舍棄了前版的一些內(nèi)容,如分形問題的求解等。
本書部分新的內(nèi)容融合了作者和教學團隊的幾位老師(尤其是東北大學潘峰博士、陳大力博士)在相關(guān)課程的教學實踐與研究成果,分數(shù)階非零初值微分方程求解部分也有博士生白鷺等人的貢獻,在代碼驗證與課件開發(fā)等工作中,研究生郭曉靜、王偉楠、劉祿等同學做了大量的工作,在此一并表示感謝。
薛定宇 2013年 5月
數(shù)學問題是科學研究中經(jīng)常需要解決的問題。研究者通常對自己研究的問題用數(shù)學建模的方法建立起數(shù)學模型,然后通過求解數(shù)學模型的方法獲得所研究問題的解。
本書有兩個目標。其一是系統(tǒng)地介紹基于 MATLAB語言的應用數(shù)學問題求解方法,這里涉及的內(nèi)容涵蓋理工科學生本科或研究生期間所接觸到的幾乎所有數(shù)學分支,而深度與廣度遠遠超過相關(guān)數(shù)學課程的內(nèi)容。對于非數(shù)學專業(yè)的讀者來說,通過系統(tǒng)地學習本書的方法和思路,求解應用數(shù)學問題的能力會有質(zhì)的提升。本書另一個目標是作為實用數(shù)學問題求解手冊供研究者參考。讀者在實際研究工作中遇到數(shù)學問題的時候,完全可以套用本書的相關(guān)內(nèi)容和語句直接求解,這無疑對讀者會有巨大的幫助。
自本書第一版于 2004年出版以來,作者在教學研究中又有了很多新的想法,同時得到了很多讀者的反饋信息,為本書出版新版增添了新的素材。本書第二版在寫作風格和格局上沿用第一版成功的經(jīng)驗,仍然根據(jù)系統(tǒng)求解數(shù)學問題的需要,組織 MATLAB語言求解的材料,由淺入深地系統(tǒng)介紹數(shù)學問題的求解方法,側(cè)重點仍然放在基于 MATLAB的數(shù)學問題求解上。除了 MATLAB語言版本上的更新外,本版進一步充實、完善了很多第一版的原有內(nèi)容;另外添加了多重數(shù)值積分、差分方程遞推求解、分形、線性矩陣不等式、多目標規(guī)劃、動態(tài)規(guī)劃、矩陣方程與矩陣微分方程求解、切換微分方程與隨機微分方程求解、特殊函數(shù)、主成分分析、 Monte Carlo方法、徑向基神經(jīng)網(wǎng)絡、粒子群優(yōu)化等諸多新的主題,分數(shù)階微積分學一節(jié)融入了作者許多新的研究成果,所以本版的內(nèi)容更充實、更全面。
本書的英文版 Solving Applied Mathematical Problems with MATLAB將由 CRC出版社于 2008年出版,而本書第二版的內(nèi)容略多于英文版的內(nèi)容。本書配備的習題參考解答是配合英文版編寫的,可以作為本書的習題參考。本書還配備了中、英文版的教學課件可供直接使用。
在本書新版寫作過程中仍得到師長、朋友和學生的支持和建議,特別感謝東北大學徐心和教授、新加坡國立大學葛樹志教授、首都師范大學趙春娜博士等。在寫作過程中和同事潘峰博士、石海濱博士、陳大力博士、胡清河博士、龐哈利教授、張雪峰副教授、王斐博士等的有益討論也為本版最終成型起了重大作用。另外,學生鄂大志、張玲敏、熊鯤、董雯彬、彭軍、羅映等為本書的勘誤、代碼驗證和輔助教學課件開發(fā)等起了重要作用,在此表示深深的感謝。
作者 2008年 7月
美國 The MathWorks公司推出的 MATLAB語言一直是國際科學界應用和影響極為廣泛的三大計算機數(shù)學語言之一。從某種意義上講,在純數(shù)學以外的領(lǐng)域中, MATLAB語言有著其他兩種計算機數(shù)學語言 Mathematica和 Maple無法比擬的優(yōu)勢和適用面。在很多領(lǐng)域, MATLAB語言是科學研究者首選的計算機數(shù)學語言。目前關(guān)于 MATLAB語言和應用的書籍在國際上數(shù)以千計,但從其覆蓋面和應用水平來說,往往難以達到日益增長的 MATLAB語言使用者的要求。國內(nèi)外出版的著作從涵蓋面及深度與
.
廣度上缺乏高層次、全面系統(tǒng)介紹高等應用數(shù)學問題各個分支的計算機求解的書籍一 。本書試圖填補這個空白,在更高層次上系統(tǒng)介紹 MATLAB語言在高等應用數(shù)學各個分支中的應用,包含的應用數(shù)學分支為微積分、線性代數(shù)、積分變換和復變函數(shù)、非線性方程與最優(yōu)化、常微分方程與偏微分方程、數(shù)據(jù)插值與函數(shù)逼近、概率論與數(shù)理統(tǒng)計以及新的非傳統(tǒng)方法,如模糊邏輯與模糊推理、神經(jīng)網(wǎng)絡、遺傳算法、小波分析、粗糙集及分數(shù)階微積分學等。本書不同于現(xiàn)有的類似于 MATLAB手冊的著作,不是 MATLAB有什么內(nèi)容就介紹什么內(nèi)容,而是根據(jù)系統(tǒng)求解數(shù)學問題的需要,組織 MATLAB語言求解的材料,由淺入深地介紹數(shù)學問題的求解方法。本書比作者所見識到的國內(nèi)外任何一部基于 MATLAB語言的應用數(shù)學著作都要全面、系統(tǒng)。
由于工作性質(zhì),作者接觸過眾多非數(shù)學專業(yè)的本科生、研究生、博士生,感覺大多數(shù)學生缺乏對應用數(shù)學問題的較全面了解,他們對什么問題能用數(shù)學描述、什么樣的數(shù)學問題能求解不清楚,以至于在學習與研究中走了很多彎路。作者堅信,通過閱讀本書可以使讀者的數(shù)學能力,尤其是數(shù)學問題求解能力上一個很大的臺階。即使讀者在閱讀本書時對有些數(shù)學公式理解得不太透徹,只要學習本書的 MATLAB求解方法,也能容易地求解類似的數(shù)學問題。本書的重要目標是讓數(shù)學基礎(chǔ)不深厚的讀者同樣能輕易地利用計算機解決較高深的應用數(shù)學問題。
本書是為東北大學自動化專業(yè)新課程 MATLAB與數(shù)學運算編寫的教材,但內(nèi)容完全脫離了自動化專業(yè)的背景,同樣適用于其他理工科專業(yè)的本科生、研究生教學。本書的大部分內(nèi)容在東北大學自動化專業(yè)本科生以及全校研究生選修課中講授過,受到普遍歡迎。由于 MATLAB語言在很多理工科專業(yè)的后續(xù)課程中有很大作用,建議有條件的學校也開設相應的課程,使學生能認識和掌握該語言,提高應用數(shù)學問題求解的水平。為此,本書配有全套的、適用于計算機輔助教學的 CAI課件材料。
作者從 1988年開始系統(tǒng)地使用 MATLAB語言進行程序設計與科學研究,積累了豐富的第一手經(jīng)驗,也了解 MATLAB語言的最新動態(tài)。作者用 MATLAB語言編寫的程序曾作為英國 Rapid Data軟件公司的商品在國際范圍內(nèi)發(fā)行,新近編寫的幾個通用程序在 The MathWorks公司的網(wǎng)站上可以下載,其中反饋系統(tǒng)分析與設計程序 CtrlLAB長期高居控制類軟件的榜首,已經(jīng)用于國際上很多高校的實際教學。
.
一 由對 The MathWorks圖書網(wǎng)站列出的全部相關(guān)書目及目錄的分析得出的結(jié)論。
多年來,作者一直在試圖以最實用的方式將 MATLAB語言介紹給國內(nèi)的讀者,并在清華大學出版社出版了四部有關(guān) MATLAB語言及其應用方面的著作,受到了國內(nèi)外廣大中文讀者的普遍歡迎。其中, 1996年出版的《控制系統(tǒng)計算機輔助設計 MATLAB語言與應用》被公認為國內(nèi)關(guān)于 MATLAB語言方面書籍中出版最早、影響最廣的著作,被國內(nèi)期刊文章引用近千次。
本書合作者陳陽泉博士現(xiàn)在美國 Utah州立大學任教,任自組織與先進智能控制中心執(zhí)行負責人、 IEEE學會高級會員,在先進智能控制、分數(shù)階系統(tǒng)理論及設計、機器人導航與控制等領(lǐng)域均有很深的造詣和學術(shù)影響,2002年與本人合作在清華大學出版社出版的《基于 MATLAB/Simulink的系統(tǒng)仿真技術(shù)與應用》在中文讀者中有很大影響,并被廣為引用。
本書主要介紹目前最新的 MATLAB 7.0版,即 MATLAB Release 14,但相應的內(nèi)容對 MATLAB及相關(guān)工具箱的版本依賴程度不高,所以這里介紹的算法函數(shù)絕大部分均可以在 MATLAB 6.x甚至更早期版本下正常運行。同時,考慮到在將來很長一段時間內(nèi)兩個版本可能并存,所以在很多地方也將介紹 MATLAB 6.x的解法。
本書從使用者的角度出發(fā),并結(jié)合作者十數(shù)年的實際編程經(jīng)驗和豐富的教學經(jīng)驗,系統(tǒng)地介紹 MATLAB語言的編程技術(shù)及其在科學運算中的應用,書中融合了作者的許多編程思想和第一手材料,內(nèi)容精心剪裁,相信仍然會受到讀者的歡迎。
作者的一些同事、同行和朋友也先后給予作者許多建議和支持,包括東北大學信息學院的徐心和教授、東北大學信息學院院長王福利教授、北京交通大學機電學院院長朱衡君教授等,還有在互聯(lián)網(wǎng)上交流的眾多知名的和不知名的同行與朋友。本書部分內(nèi)容由博士生張雪峰、潘峰編寫,部分輔助程序與模型由碩士生陳大力編寫,計算機輔助教學材料由碩士生劉瑩瑩開發(fā),在此表示深深的謝意。
本書的出版得到了清華大學出版社歐振旭編輯細心的加工,得到清華大學出版社蔡鴻程總編的關(guān)懷,本書的出版還得到了美國 The MathWorks公司圖書計劃的支持,在此表示謝意,并特別感謝 Noami Fernandez女士、 Courtney Esposito先生為作者提供的各種幫助,感謝大連威爾思德科技發(fā)展有限公司王龍飛先生為教學網(wǎng)站 MATLAB大觀園提供的各種幫助。
由于作者水平所限,書中的缺點和錯誤在所難免,歡迎讀者批評指教。
謹以此書獻給我的妻子楊軍和女兒薛楊。在編寫本書時花費了大量本該陪伴她們的業(yè)余時間,沒有她們一如既往的鼓勵、支持和理解,本書不可能順利完成。
薛定宇 2004年 7月 6日于沈陽東北大學
薛定宇 分別在沈陽工業(yè)大學、東北大學和英國Sussex大學獲得學士(1985年)、碩士(1988年)和博士學位(1992年),1997年起任東北大學信息學院教授。深耕于計算機在數(shù)學與自動控制學科的應用,主持了國家精品課程建設,并于1996年在清華大學出版社出版《控制系統(tǒng)計算機輔助設計MATLAB語言與應用》(該教材被評為國家級精品教材,被認為是國內(nèi)MATLAB應用領(lǐng)域具有深遠影響的一部圖書,為MATLAB在國內(nèi)高校教學與科研中的普及起到了巨大的作用)。先后被評為遼寧省教學名師、遼寧省優(yōu)秀教師,獲得國家級教學成果二等獎、中國自動化學會教育教學成果一等獎、遼寧省教學成果一等獎等獎勵。主講的控制系統(tǒng)仿真與CAD課程被評為國家級精品課程、國家級精品資源共享課程;主講的現(xiàn)代科學運算MATLAB語言與應用課程入選首批國家級一流本科課程,配套錄制的全新慕課課程均上線于愛課程與中國大學MOOC(慕課)網(wǎng)站。
第 1章計算機數(shù)學語言概述 1
1.1數(shù)學問題計算機求解概述 1
1.1.1為什么要學習計算機數(shù)學語言 1
1.1.2數(shù)學問題的解析解與數(shù)值解 4
1.1.3數(shù)學運算問題軟件包發(fā)展概述 5
1.1.4常規(guī)計算機語言的局限性 6
1.2計算機數(shù)學語言簡介 7
1.2.1計算機數(shù)學語言的出現(xiàn) 7
1.2.2有代表性的計算機數(shù)學語言 8
1.3關(guān)于本書及相關(guān)內(nèi)容 8
1.3.1本書框架設計及內(nèi)容安排 9
1.3.2 MATLAB語言學習方法與資源 9
1.3.3本課程與其他相關(guān)課程的關(guān)系 10
1.3.4數(shù)學問題三步求解方法概述 10
1.4習題 12
第 2章 MATLAB語言程序設計基礎(chǔ) 13
2.1 MATLAB程序設計語言基礎(chǔ) 14
2.1.1 MATLAB語言的變量與常量 14
2.1.2數(shù)據(jù)結(jié)構(gòu) 14
2.1.3 MATLAB的基本語句結(jié)構(gòu) 16
2.1.4冒號表達式與子矩陣提取 17
2.2基本數(shù)學運算 18
2.2.1矩陣的算術(shù)運算 18
2.2.2矩陣的邏輯運算 20
2.2.3矩陣的比較運算 20
2.2.4解析結(jié)果的化簡與變換 21
2.2.5基本離散數(shù)學運算 22
2.3 MATLAB語言的流程結(jié)構(gòu) 23
2.3.1循環(huán)結(jié)構(gòu) 24
X高等應用數(shù)學問題的 MATLAB求解(第五版)
2.3.2條件轉(zhuǎn)移結(jié)構(gòu) 25
2.3.3開關(guān)結(jié)構(gòu) 25
2.3.4試探結(jié)構(gòu) 26
2.4函數(shù)編寫與調(diào)試 26
2.4.1 MATLAB語言函數(shù)的基本結(jié)構(gòu) 27
2.4.2變元檢測段落 29
2.4.3可變輸入輸出個數(shù)的處理 30
2.4.4匿名函數(shù)與 inline函數(shù) 31
2.4.5偽代碼與代碼保密處理 31
2.5二維圖形繪制 32
2.5.1二維圖形繪制基本語句 32
2.5.2多縱軸曲線的繪制 34
2.5.3其他二維圖形繪制語句 35
2.5.4隱函數(shù)繪制及應用 36
2.5.5圖形修飾 37
2.5.6數(shù)據(jù)文件的讀取與存儲 38
2.6三維圖形表示 39
2.6.1三維曲線繪制 39
2.6.2三維曲面繪制 40
2.6.3三維圖形視角設置 43
2.6.4參數(shù)方程的表面圖 44
2.6.5球面與柱面繪制 44
2.6.6等高線繪制 45
2.6.7三維隱函數(shù)圖形繪制 46
2.6.8三維曲面的旋轉(zhuǎn) 47
2.7四維圖形繪制 48
2.7.1三維動畫 48
2.7.2體視化數(shù)據(jù)顯示 48
2.7.3體視化處理工具 49
2.8面向?qū)ο缶幊倘腴T 50
2.8.1面向?qū)ο缶幊痰幕靖拍?50
2.8.2類的設計 51
2.8.3類的創(chuàng)建及對象顯示 52
2.8.4重載函數(shù)的編寫 54
2.9習題 57
第 3章微積分問題的計算機求解 62
3.1極限問題的解析解 62
3.1.1單變量函數(shù)的極限 63
3.1.2多元函數(shù)的極限 65
3.2函數(shù)導數(shù)的解析解 67
3.2.1函數(shù)的導數(shù)和高階導數(shù) 67
3.2.2多元函數(shù)的偏導數(shù) 68
3.2.3多元函數(shù)的 Jacobi矩陣與 Hesse矩陣 70
3.2.4參數(shù)方程的導數(shù) 71
3.2.5隱函數(shù)的偏導數(shù) 71
3.2.6場的梯度、散度與旋度 73
3.3積分問題的解析解 73
3.3.1不定積分的推導 74
3.3.2定積分與無窮積分計算 75
3.3.3多重積分問題的 MATLAB求解 75
3.4函數(shù)的級數(shù)展開與級數(shù)求和問題求解 76
3.4.1 Taylor冪級數(shù)展開 76
3.4.2 Fourier級數(shù)展開 79
3.4.3級數(shù)求和的計算 81
3.4.4序列求積問題 82
3.4.5無窮級數(shù)的收斂性判定 83
3.5曲線積分與曲面積分的計算 85
3.5.1曲線積分及 MATLAB求解 85
3.5.2曲面積分與 MATLAB語言求解 87
3.6數(shù)值微分問題 88
3.6.1數(shù)值微分算法 88
3.6.2高精度數(shù)值微分算法的 MATLAB實現(xiàn) 88
3.6.3二元函數(shù)的梯度計算 89
3.7數(shù)值積分問題 91
3.7.1由給定數(shù)據(jù)進行梯形求積 91
3.7.2單變量數(shù)值積分問題求解 93
3.7.3廣義數(shù)值積分問題求解 95
3.7.4積分函數(shù)的數(shù)值求解 96
3.7.5雙重積分問題的數(shù)值解 96
3.7.6三重定積分的數(shù)值求解 99
3.7.7多重積分數(shù)值求解 99
3.8習題 100
第 4章線性代數(shù)問題的計算機求解 106
4.1特殊矩陣的輸入 106
4.1.1數(shù)值矩陣的輸入 107
4.1.2稀疏矩陣的輸入 110
XII高等應用數(shù)學問題的 MATLAB求解(第五版)
4.1.3符號矩陣的輸入 111
4.2矩陣基本分析 112
4.2.1矩陣基本概念與性質(zhì) 112
4.2.2逆矩陣與廣義逆矩陣 117
4.2.3矩陣的特征值問題 121
4.3矩陣的基本變換與分解 123
4.3.1相似變換與正交矩陣 123
4.3.2矩陣的三角分解和 Cholesky分解 123
4.3.3矩陣的相伴變換、對角變換和 Jordan變換 128
4.3.4矩陣的奇異值分解 131
4.4矩陣方程的計算機求解 133
4.4.1線性方程組的計算機求解 133
4.4.2 Lyapunov方程的計算機求解 136
4.4.3 Sylvester方程的計算機求解 139
4.4.4 Diophantine方程的求解 141
4.4.5 Riccati方程的計算機求解 142
4.5非線性運算與矩陣函數(shù)求值 143
4.5.1面向矩陣元素的非線性運算 143
4.5.2矩陣函數(shù)求值 143
4.5.3一般矩陣函數(shù)的運算 146
4.5.4矩陣的乘方運算 148
4.6習題 150
第 5章積分變換與復變函數(shù)問題的計算機求解 155
5.1 Laplace變換及其反變換 155
5.1.1 Laplace變換及其反變換的定義與性質(zhì) 155
5.1.2 Laplace變換的計算機求解 156
5.1.3 Laplace變換問題的數(shù)值求解 158
5.2 Fourier變換及其反變換 161
5.2.1 Fourier變換及其反變換的定義 161
5.2.2 Fourier變換的計算機求解 162
5.2.3 Fourier正弦變換和余弦變換 163
5.2.4離散 Fourier正弦變換和余弦變換 164
5.2.5快速 Fourier變換 164
5.3其他積分變換問題及求解 165
5.3.1 Mellin變換 165
5.3.2 Hankel變換及求解 166
5.4 z變換及其反變換 167
5.4.1 z變換及其反變換的定義 168
5.4.2 z變換的計算機求解 168
5.4.3雙邊 z變換 169
5.4.4有理函數(shù) z反變換的數(shù)值求解 169
5.5復變函數(shù)問題的計算機求解 170
5.5.1復數(shù)矩陣及其變換 170
5.5.2復變函數(shù)的映射 170
5.5.3 Riemann面繪制 171
5.6復變函數(shù)問題的求解 173
5.6.1留數(shù)的概念與計算 173
5.6.2有理函數(shù)的部分分式展開 174
5.6.3 Laplace反變換求解 177
5.6.4 Laurent級數(shù)展開 177
5.6.5封閉曲線積分問題計算 180
5.7差分方程的求解 181
5.7.1一般差分方程的解析求解方法 182
5.7.2線性時變差分方程的數(shù)值解法 183
5.7.3線性時不變差分方程的解法 184
5.7.4一般非線性差分方程的數(shù)值求解方法 185
5.8習題 186
第 6章代數(shù)方程與最優(yōu)化問題的計算機求解 191
6.1代數(shù)方程的求解 191
6.1.1代數(shù)方程的圖解法 191
6.1.2多項式型方程的準解析解法 192
6.1.3一般非線性方程數(shù)值解 195
6.1.4求解多解方程的全部解 197
6.1.5更高精度的求根方法 201
6.1.6欠定方程的求解 203
6.2無約束最優(yōu)化問題求解 204
6.2.1解析解法和圖解法 204
6.2.2基于 MATLAB的數(shù)值解法 205
6.2.3全局最優(yōu)解與全局最優(yōu)解法 207
6.2.4利用梯度求解最優(yōu)化問題 209
6.2.5帶有變量邊界約束的最優(yōu)化問題求解 211
6.3有約束最優(yōu)化問題的計算機求解 211
6.3.1約束條件與可行解區(qū)域 211
6.3.2線性規(guī)劃問題的計算機求解 212
6.3.3二次型規(guī)劃的求解 217
6.3.4基于問題的描述與求解 217
XIV高等應用數(shù)學問題的 MATLAB求解(第五版)
6.3.5一般非線性規(guī)劃問題的求解 219
6.3.6一般非線性規(guī)劃問題的全局最優(yōu)解嘗試 223
6.4混合整數(shù)規(guī)劃問題的計算機求解 223
6.4.1整數(shù)規(guī)劃問題的窮舉方法 224
6.4.2整數(shù)線性規(guī)劃問題的求解 225
6.4.3一般非線性整數(shù)規(guī)劃問題與求解 226
6.4.4 01規(guī)劃問題求解 228
6.4.5指派問題的求解 230
6.5線性矩陣不等式問題求解 231
6.5.1線性矩陣不等式的一般描述 232
6.5.2 Lyapunov不等式 232
6.5.3線性矩陣不等式問題分類 234
6.5.4線性矩陣不等式問題的 MATLAB求解 234
6.5.5基于 YALMIP工具箱的最優(yōu)化求解方法 236
6.6多目標優(yōu)化問題求解 237
6.6.1多目標優(yōu)化模型 237
6.6.2無約束多目標函數(shù)的最小二乘求解 238
6.6.3多目標問題轉(zhuǎn)換為單目標問題求解 238
6.6.4多目標優(yōu)化問題的 Pareto解集 241
6.6.5極小極大問題求解 242
6.6.6目標規(guī)劃問題求解 243
6.7動態(tài)規(guī)劃及其在路徑規(guī)劃中的應用 243
6.7.1圖的矩陣表示方法 244
6.7.2有向圖的路徑尋優(yōu) 244
6.7.3無向圖的路徑最優(yōu)搜索 247
6.7.4絕對坐標節(jié)點的最優(yōu)路徑規(guī)劃算法與應用 247
6.8習題 248
第 7章微分方程問題的計算機求解 254
7.1常系數(shù)線性微分方程的解析解方法 254
7.1.1常系數(shù)線性微分方程解析解的數(shù)學描述 254
7.1.2微分方程的解析解方法 255
7.1.3微分方程組的解析求解 257
7.1.4線性狀態(tài)空間方程的解析解 258
7.1.5特殊非線性微分方程的解析解 258
7.2微分方程問題的數(shù)值解法 259
7.2.1微分方程問題算法概述 259
7.2.2四階定步長 RungeKutta算法及 MATLAB實現(xiàn) 261
7.2.3一階微分方程組數(shù)值解 261
7.2.4微分方程數(shù)值解的驗證 265
7.3微分方程轉(zhuǎn)換 266
7.3.1單個高階常微分方程處理方法 266
7.3.2高階常微分方程組的變換方法 268
7.3.3矩陣微分方程的變換與求解方法 271
7.4特殊微分方程的數(shù)值解 273
7.4.1剛性微分方程的求解 274
7.4.2隱式微分方程求解 277
7.4.3微分代數(shù)方程的求解 279
7.4.4切換微分方程的求解 281
7.4.5隨機線性微分方程的求解 282
7.5延遲微分方程求解 284
7.5.1典型延遲微分方程的數(shù)值求解 284
7.5.2變時間延遲微分方程的求解 286
7.5.3中立型延遲微分方程的求解 288
7.6邊值問題的計算機求解 289
7.7偏微分方程求解入門 292
7.7.1偏微分方程組求解 292
7.7.2二階偏微分方程的數(shù)學描述 294
7.7.3偏微分方程的求解界面應用舉例 295
7.8基于 Simulink的微分方程框圖求解 300
7.8.1 Simulink簡介 300
7.8.2 Simulink相關(guān)模塊 301
7.8.3微分方程的 Simulink建模與求解 302
7.9習題 308
第 8章數(shù)據(jù)插值與函數(shù)逼近問題的計算機求解 313
8.1插值與數(shù)據(jù)擬合 313
8.1.1一維數(shù)據(jù)的插值問題 313
8.1.2已知樣本點的定積分計算 316
8.1.3二維網(wǎng)格數(shù)據(jù)的插值問題 318
8.1.4二維散點分布數(shù)據(jù)的插值問題 319
8.1.5高維插值問題 321
8.1.6基于樣本數(shù)據(jù)點的離散最優(yōu)化問題求解 322
8.2樣條插值與數(shù)值微積分問題求解 323
8.2.1樣條插值的 MATLAB表示 323
8.2.2基于樣條插值的數(shù)值微積分運算 325
8.3由已知數(shù)據(jù)擬合數(shù)學模型 328
8.3.1多項式擬合 328
XVI高等應用數(shù)學問題的 MATLAB求解(第五版)
8.3.2函數(shù)線性組合的曲線擬合方法 329
8.3.3最小二乘曲線擬合 331
8.3.4多變量函數(shù)的最小二乘函數(shù)擬合 333
8.4已知函數(shù)的有理式逼近方法 333
8.4.1 Padé近似 333
8.4.2給定函數(shù)的特殊多項式近似 335
8.5特殊函數(shù)及曲線繪制 337
8.5.1誤差函數(shù)與補誤差函數(shù) 337
8.5.2 Gamma函數(shù) 338
8.5.3 Beta函數(shù) 339
8.5.4 Bessel函數(shù) 340
8.5.5 Legendre函數(shù) 341
8.5.6超幾何函數(shù) 342
8.6 Mittag-Leffler函數(shù) 343
8.7信號分析與數(shù)字信號處理基礎(chǔ) 347
8.7.1信號的相關(guān)分析 347
8.7.2信號的功率譜分析 348
8.7.3濾波技術(shù)與濾波器設計 349
8.8習題 352
第 9章概率論與數(shù)理統(tǒng)計問題的計算機求解 355
9.1概率分布與偽隨機數(shù)生成 355
9.1.1概率密度函數(shù)與分布函數(shù)概述 355
9.1.2常見分布的概率密度函數(shù)與分布函數(shù) 356
9.1.3隨機數(shù)與偽隨機數(shù)生成 361
9.2概率問題的求解 361
9.2.1離散數(shù)據(jù)的直方圖與餅圖表示 361
9.2.2連續(xù)事件的概率計算 363
9.2.3基于 Monte Carlo法的數(shù)學問題求解 364
9.2.4隨機游走過程的仿真 365
9.3基本統(tǒng)計分析 366
9.3.1隨機變量的均值與方差 366
9.3.2隨機變量的矩 367
9.3.3多變量隨機數(shù)的協(xié)方差分析 368
9.3.4多變量正態(tài)分布的聯(lián)合概率密度函數(shù)及分布函數(shù) 369
9.3.5離群值、四分位數(shù)與盒子圖 370
9.4數(shù)理統(tǒng)計分析方法及計算機實現(xiàn) 372
9.4.1參數(shù)估計與區(qū)間估計 372
9.4.2多元線性回歸與區(qū)間估計 373
9.4.3非線性函數(shù)的最小二乘參數(shù)估計與區(qū)間估計 375
9.4.4極大似然估計 377
9.5統(tǒng)計假設檢驗 378
9.5.1統(tǒng)計假設檢驗的概念及步驟 378
9.5.2隨機分布的假設檢驗 380
9.6方差分析與主成分分析 382
9.6.1方差分析 382
9.6.2主成分分析 386
9.7習題 388
第 10章數(shù)學問題的非傳統(tǒng)解法 391
10.1集合論、模糊集與模糊推理 391
10.1.1經(jīng)典可枚舉集合論問題及 MATLAB求解 391
10.1.2模糊集合與隸屬度函數(shù) 393
10.1.3模糊推理系統(tǒng)及其 MATLAB求解 397
10.2粗糙集理論與應用 400
10.2.1粗糙集理論簡介 400
10.2.2粗糙集的基本概念 400
10.2.3信息決策系統(tǒng) 401
10.2.4粗糙集數(shù)據(jù)處理問題的 MATLAB求解 403
10.2.5粗糙集約簡的 MATLAB程序界面 405
10.3人工神經(jīng)網(wǎng)絡與深度學習 406
10.3.1神經(jīng)網(wǎng)絡基礎(chǔ)知識 406
10.3.2前饋型神經(jīng)網(wǎng)絡 408
10.3.3徑向基網(wǎng)絡結(jié)構(gòu)與應用 414
10.3.4深度學習簡介 415
10.4進化算法及其在最優(yōu)化問題中的應用 419
10.4.1遺傳算法的基本概念及 MATLAB實現(xiàn) 419
10.4.2 MATLAB全局優(yōu)化工具箱簡介 420
10.4.3無約束最優(yōu)化的全局最優(yōu)求解 421
10.4.4有約束優(yōu)化問題的全局最優(yōu)求解 423
10.4.5混合整數(shù)規(guī)劃的全局最優(yōu)求解 424
10.5小波變換及其在數(shù)據(jù)處理中的應用 425
10.5.1小波變換及基小波波形 425
10.5.2小波變換技術(shù)在信號處理中的應用 428
10.5.3小波問題的程序界面 431
10.6分數(shù)階微積分學問題的數(shù)值運算 431
10.6.1分數(shù)階微積分的定義 432
10.6.2不同分數(shù)階微積分定義的關(guān)系與性質(zhì) 433
XVIII高等應用數(shù)學問題的 MATLAB求解(第五版)
10.6.3分數(shù)階微積分的計算方法 434
10.6.4分數(shù)階微分方程的求解方法 439
10.6.5基于框圖的非線性分數(shù)階微分方程近似解法 443
10.7習題 447
參考文獻 451
MATLAB函數(shù)名索引 457
術(shù)語索引 464