MATLAB程序設(shè)計(jì)導(dǎo)論
定 價(jià):69 元
叢書(shū)名:計(jì)算機(jī)科學(xué)叢書(shū)
- 作者:[美] 尤金尼 ·E.米哈伊洛夫(Eugeniy E. Mikhailov)
- 出版時(shí)間:2019/6/1
- ISBN:9787111625988
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類(lèi):TP312MA
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開(kāi)本:16開(kāi)
本書(shū)分三個(gè)層次進(jìn)行內(nèi)容組織:計(jì)算基礎(chǔ)、使用MATLAB解決日常生活問(wèn)題、深入研究和擴(kuò)展。計(jì)算基礎(chǔ)部分除了介紹MATLAB的基礎(chǔ)知識(shí),還包含計(jì)算歷史和編程語(yǔ)言的簡(jiǎn)要介紹,以及良好的編程實(shí)踐。這部分內(nèi)容凝練了大學(xué)中常開(kāi)設(shè)的“計(jì)算機(jī)基礎(chǔ)”和“計(jì)算機(jī)科學(xué)導(dǎo)論”等課程的精華。第二部分主要涉及線性代數(shù)方程求解、數(shù)值求導(dǎo)、求根算法等內(nèi)容,利用高等數(shù)學(xué)和線性代數(shù)等課程的基本知識(shí),簡(jiǎn)單快速地解決日常生活中的常見(jiàn)問(wèn)題。*后一部分是關(guān)于MATLAB的深入研究和擴(kuò)展,介紹了隨機(jī)過(guò)程、蒙特卡洛仿真、優(yōu)化問(wèn)題和離散傅里葉變換等內(nèi)容,當(dāng)你深入到實(shí)際科學(xué)研究和工程項(xiàng)目時(shí)都會(huì)用到這方面的內(nèi)容。
本書(shū)是一本關(guān)于MATLAB編程和數(shù)值方法的簡(jiǎn)明教程。書(shū)中通過(guò)引人入勝的例子提供實(shí)用的知識(shí),從簡(jiǎn)單的概念開(kāi)始,幫你構(gòu)建用于建模、仿真和分析真實(shí)系統(tǒng)的技能集。此外,本書(shū)還簡(jiǎn)要概述了成功的科學(xué)或工程工作所必需的數(shù)值方法。本書(shū)內(nèi)容豐富,示例簡(jiǎn)潔生動(dòng),既適合沒(méi)有系統(tǒng)編程知識(shí)的初學(xué)者,也可以作為有一定科學(xué)研究和工程技術(shù)基礎(chǔ)人員的指導(dǎo)書(shū),還可以作為高等院校本科生的學(xué)習(xí)教材。
本書(shū)特色
面向科學(xué)家和工程師教授編程知識(shí),采用問(wèn)題驅(qū)動(dòng)的教學(xué)方法,使用具有解釋性和趣味性的示例。
強(qiáng)調(diào)實(shí)踐方法,使用應(yīng)知應(yīng)會(huì)的信息,較少涉及技術(shù)細(xì)節(jié)。
利用科學(xué)和工程示例,展示所學(xué)概念在實(shí)際問(wèn)題上的應(yīng)用。
展示真實(shí)系統(tǒng)建模,由易到難逐步探索有挑戰(zhàn)性的問(wèn)題。
突出數(shù)據(jù)處理和分析在日常生活中的實(shí)際應(yīng)用。
目標(biāo)讀者
本書(shū)適合任何想學(xué)習(xí)MATLAB編程的讀者。如果你正在尋求關(guān)于編程、MATLAB和數(shù)值方法的簡(jiǎn)明易懂的教程,那本書(shū)正好適合你。我們希望讀者能在這里找到處理日常計(jì)算和程序設(shè)計(jì)問(wèn)題的必要知識(shí)。即使是經(jīng)驗(yàn)豐富的讀者也能從書(shū)中得到對(duì)常見(jiàn)方法的有用見(jiàn)解,找到可能遇到的困惑問(wèn)題的解釋。
我們從簡(jiǎn)單的概念開(kāi)始,幫你逐步掌握建模、模擬和分析真實(shí)系統(tǒng)的技能。此外,還概述了成功的科學(xué)或工程工作所必需的數(shù)值方法。本書(shū)幫你熟悉計(jì)算的“學(xué)問(wèn)”,這樣當(dāng)你決定學(xué)習(xí)高級(jí)技術(shù)時(shí),會(huì)知道該學(xué)習(xí)什么。
本書(shū)是根據(jù)“科學(xué)家的實(shí)用計(jì)算”(Practical Computing for Scientists)課程材料編寫(xiě)的,該課程為威廉與瑪麗學(xué)院開(kāi)設(shè)的一學(xué)期課程,教學(xué)對(duì)象為尚未確定主修學(xué)科的學(xué)生,以及物理、神經(jīng)科學(xué)、生物學(xué)、計(jì)算機(jī)科學(xué)、應(yīng)用數(shù)學(xué)和統(tǒng)計(jì)學(xué)或化學(xué)等專業(yè)的學(xué)生。成功學(xué)習(xí)這門(mén)課的學(xué)生水平也不相同,有的是大一新生,有的是大四畢業(yè)生,有的介于兩者之間。
為什么選擇MATLAB
我們選擇MATLAB作為編程語(yǔ)言,是因?yàn)镸ATLAB對(duì)一些已實(shí)現(xiàn)的功能有很好的平衡,這些功能對(duì)科學(xué)家來(lái)說(shuō)非常重要又易于學(xué)習(xí)。MATLAB為用戶隱藏了許多底層細(xì)節(jié),你不需要考慮變量類(lèi)型、編譯過(guò)程等。MATLAB使用起來(lái)就是這么便利,它可以在不跟蹤每個(gè)元素的情況下對(duì)整個(gè)數(shù)組進(jìn)行計(jì)算,這正是MATLAB的核心。
從教師的角度來(lái)說(shuō),你不必為學(xué)生安裝MATLAB而擔(dān)心。軟件安裝過(guò)程很簡(jiǎn)單,學(xué)生都能獨(dú)立完成。更重要的是,MATLAB在Windows、Mac和Linux等操作系統(tǒng)中的界面和工作方式都一樣,在不同計(jì)算機(jī)上產(chǎn)生的結(jié)果完全相同。
從學(xué)生的角度來(lái)說(shuō),MATLAB可能是從事工程或科學(xué)研究工作最常用的編程語(yǔ)言。因此,如果你現(xiàn)在學(xué)習(xí)MATLAB,或許就不需要再?gòu)?qiáng)迫自己學(xué)習(xí)其他行業(yè)標(biāo)準(zhǔn)編程語(yǔ)言了。
MATLAB的主要缺點(diǎn)是價(jià)格昂貴,如果學(xué)校或單位不能提供,就得高價(jià)購(gòu)買(mǎi)了。但這不是一個(gè)大問(wèn)題,你可以選擇免費(fèi)的替代軟件GNU Octave。本書(shū)所有章節(jié)的練習(xí),除了數(shù)據(jù)擬合外都可以通過(guò)Octave完成。Octave中的數(shù)據(jù)擬合使用了一套不同的命令,其他部分和MATLAB的工作方式相同(對(duì)于一些高級(jí)選項(xiàng)可能需要稍作調(diào)整)。
本書(shū)不包含哪些內(nèi)容
本書(shū)沒(méi)有廣泛介紹MATLAB命令,因?yàn)镸ATLAB已經(jīng)有一個(gè)很好的手冊(cè),我們沒(méi)有必要再編寫(xiě)一本,也無(wú)須重做一個(gè)在線教程。
本書(shū)也不能代替講解數(shù)值方法的來(lái)龍去脈的書(shū)。我們盡可能討論可以用數(shù)值方法完成的有趣的事情,而不必關(guān)心最有效的實(shí)現(xiàn)方法。然而,這本書(shū)的開(kāi)頭是個(gè)例外——通過(guò)數(shù)值算法的實(shí)現(xiàn)解釋了一些編程基礎(chǔ)知識(shí),這些算法大多是MATLAB的內(nèi)置函數(shù)。
如何閱讀本書(shū)
如果你不是編程新手,可以跳過(guò)第一部分的大部分內(nèi)容,但是要確保熟悉其中的元素操作、數(shù)組操作與數(shù)組元素操作之間的區(qū)別以及數(shù)組切片等內(nèi)容。
如果你是科學(xué)家,那么繪圖和數(shù)據(jù)擬合是必須掌握的。請(qǐng)務(wù)必閱讀第6章。如果需要學(xué)習(xí)關(guān)于數(shù)據(jù)分析的重要內(nèi)容,也需要學(xué)習(xí)這一章。
第三部分在某種程度上可作為自選內(nèi)容,盡管我們十分推薦優(yōu)化問(wèn)題一章(即第13章)。令人驚訝的是有很多問(wèn)題本質(zhì)上都屬于優(yōu)化問(wèn)題,可以用第13章提出的方法來(lái)解決?赡茉诒究聘吣昙(jí)的課堂上才會(huì)用到這部分內(nèi)容。
隨著編程水平的提高,請(qǐng)重新閱讀44節(jié),并嘗試從中學(xué)習(xí)更多技術(shù)。
數(shù)據(jù)文件和代碼鏈接
本書(shū)所有MATLAB代碼及數(shù)據(jù)文件可在網(wǎng)站http://physics.wm.edu/programming_with_MATLAB_book下載。本書(shū)英文電子版中直接給出了相關(guān)文件的鏈接地址。
關(guān)于本書(shū)教輔資源,只有使用本書(shū)作為教材的教師才可以申請(qǐng),需要的教師可到原出版社網(wǎng)站注冊(cè)下載,若有問(wèn)題,請(qǐng)與泰勒·弗朗西斯集團(tuán)北京代表處聯(lián)系,電話010-58452806,電子郵件janet.zheng@tanfchinacom!庉嬜
尤金尼•E.米哈伊洛夫(Eugeniy E. Mikhailov) 得克薩斯農(nóng)工大學(xué)物理系博士,MIT博士后,現(xiàn)為威廉與瑪麗學(xué)院教師。他一直為物理、數(shù)學(xué)和計(jì)算機(jī)專業(yè)的本科生講授“科學(xué)家的實(shí)用計(jì)算”課程。
出版者的話
譯者序
前言
第一部分計(jì)算基礎(chǔ)
第1章計(jì)算機(jī)與編程語(yǔ)言簡(jiǎn)介2
11早期計(jì)算史2
12現(xiàn)代計(jì)算機(jī)3
13什么是編程3
14編程語(yǔ)言概述4
15計(jì)算機(jī)中的數(shù)字表示及其潛在問(wèn)題5
151離散化——計(jì)算機(jī)的主要弱點(diǎn)5
152二進(jìn)制表示6
153浮點(diǎn)數(shù)表示6
154結(jié)論7
16自學(xué)7
第2章MATLAB基礎(chǔ)9
21MATLAB的圖形用戶界面9
22功能強(qiáng)大的MATLAB計(jì)算器11
221MATLAB的變量類(lèi)型11
222內(nèi)置函數(shù)和運(yùn)算符12
223運(yùn)算符的優(yōu)先級(jí)13
224注釋14
23高效編輯14
24使用幫助文檔15
25矩陣16
251創(chuàng)建和訪問(wèn)矩陣元素16
252基本矩陣運(yùn)算17
253字符串矩陣20
26冒號(hào)運(yùn)算符20
27繪圖21
28自學(xué)23
第3章布爾代數(shù)、條件語(yǔ)句和循環(huán)24
31布爾代數(shù)24
311MATLAB中布爾運(yùn)算符的優(yōu)先級(jí)25
312MATLAB布爾邏輯運(yùn)算舉例25
32比較運(yùn)算符26
321向量比較26
322矩陣比較27
33條件語(yǔ)句27
331if-else-end語(yǔ)句27
332if語(yǔ)句的簡(jiǎn)短形式28
34等于語(yǔ)句的常見(jiàn)錯(cuò)誤28
35循環(huán)28
351while循環(huán)28
352特殊命令——break和continue29
353for循環(huán)30
36自學(xué)31
第4章函數(shù)、腳本和良好的編程實(shí)踐32
41動(dòng)機(jī)引例32
411銀行利率問(wèn)題32
412飛行時(shí)間問(wèn)題32
42腳本33
43函數(shù)35
44良好的編程實(shí)踐37
441簡(jiǎn)化代碼37
442試著預(yù)見(jiàn)非預(yù)期行為37
443運(yùn)行測(cè)試用例38
444檢查并清理輸入?yún)?shù)39
445判斷解是否符合實(shí)際40
446良好的編程實(shí)踐總結(jié)40
45遞歸函數(shù)和匿名函數(shù)40
451遞歸函數(shù)40
452匿名函數(shù)41
46自學(xué)42
第二部分使用MATLAB求解日常問(wèn)題
第5章線性代數(shù)方程組求解46
51風(fēng)鈴問(wèn)題46
52MATLAB內(nèi)置求解器48
521逆矩陣法48
522無(wú)逆矩陣計(jì)算的方法48
523選用哪種方法48
53用MATLAB求解風(fēng)鈴問(wèn)題49
54示例:惠斯通電橋問(wèn)題50
55自學(xué)52
第6章數(shù)據(jù)約簡(jiǎn)與擬合53
61數(shù)據(jù)約簡(jiǎn)與擬合的必要性53
62擬合的正式定義53
63數(shù)據(jù)擬合示例54
64參數(shù)不確定性估計(jì)56
65擬合結(jié)果評(píng)估56
66如何得到最優(yōu)擬合58
661數(shù)據(jù)繪圖60
662選擇擬合模型60
663擬合參數(shù)的初始猜測(cè)61
664基于初始猜測(cè)的數(shù)據(jù)和模型繪制61
665擬合數(shù)據(jù)62
666擬合參數(shù)的不確定性評(píng)估63
67自學(xué)65
第7章數(shù)值導(dǎo)數(shù)67
71通過(guò)前向差分估計(jì)導(dǎo)數(shù)67
72數(shù)值導(dǎo)數(shù)的算法誤差估計(jì)68
73通過(guò)中心差分估計(jì)導(dǎo)數(shù)69
74自學(xué)70
第8章求根算法71
81求根問(wèn)題71
82試錯(cuò)法71
83二分法72
831二分法示例和測(cè)試用例74
832二分法代碼的可能改進(jìn)76
84算法收斂76
85試位法77
86割線法78
87牛頓拉弗森法79
871使用牛頓拉弗森法進(jìn)行解析求導(dǎo)80
872使用牛頓拉弗森法進(jìn)行數(shù)值求導(dǎo)81
88Ridders法81
89求根算法的陷阱82
810求根算法總結(jié)83
811MATLAB內(nèi)置求根命令84
812自學(xué)84
第9章數(shù)值積分方法86
91積分問(wèn)題描述86
92矩形法86
93梯形法89
94辛普森法90
95廣義積分公式90
96蒙特卡羅積分91
961示例:計(jì)算池塘面積91
962樸素蒙特卡羅積分91
963蒙特卡羅積分推導(dǎo)91
964蒙特卡羅方法的算法誤差92
97多維積分92
98蒙特卡羅多維積分94
99數(shù)值積分陷阱94
991使用大量的數(shù)據(jù)點(diǎn)94
992使用過(guò)少的數(shù)據(jù)點(diǎn)95
910MATLAB的積分函數(shù)95
911自學(xué)96
第10章數(shù)據(jù)插值98
101最近鄰插值98
102線性插值99
103多項(xiàng)式插值101
104好的插值程序的準(zhǔn)則102
105三次樣條插值102
106MATLAB內(nèi)置的插值方法104
107外推法104
108插值的非常規(guī)應(yīng)用104
109自學(xué)105
第三部分深入研究并擴(kuò)展科學(xué)家的工具箱
第11章隨機(jī)數(shù)生成器和隨機(jī)過(guò)程108
111統(tǒng)計(jì)和概率簡(jiǎn)介108
1111離散事件的概率108
1112概率密度函數(shù)108
112均勻隨機(jī)分布109
113隨機(jī)數(shù)生成器和計(jì)算機(jī)110
1131線性同余生成器110
1132隨機(jī)數(shù)生成器周期111
114如何檢驗(yàn)隨機(jī)數(shù)生成器111
115MATLAB的內(nèi)置隨機(jī)數(shù)生成器113
116自學(xué)114
第12章蒙特卡羅仿真115
121釘板實(shí)驗(yàn)115
122拋硬幣游戲117
123傳染病傳播118
124自學(xué)123
第13章優(yōu)化問(wèn)題125
131優(yōu)化問(wèn)題簡(jiǎn)介125
132一維優(yōu)化126
1321黃金分割最優(yōu)搜索算法126
1322一維最優(yōu)MATLAB內(nèi)置函數(shù)128
1323一維優(yōu)化示例128
133多維優(yōu)化130
134組合優(yōu)化135
1341背包問(wèn)題135
1342旅行商問(wèn)題138
135模擬退火算法143
136遺傳算法150
137自學(xué)151
第14章常微分方程153
141常微分方程簡(jiǎn)介153
142邊界條件154
143求解常微分方程的數(shù)值方法155
1431歐拉方法155
1432二階RungeKutta方法(RK2)156
1433四階RungeKutta法(RK4)157
1434其他數(shù)值求解器157
144剛性常微分方程及數(shù)值解的穩(wěn)定性問(wèn)題157
145MATLAB的內(nèi)置常微分方程求解器159
146常微分方程示例159
1461自由落體159
1462空氣阻