MATLAB程序設計與*化計算一書首先介紹MATLAB的基本使用方法和程序設計基礎,然后將MATLAB與*化計算相結合,基于*化理論與方法,講解如何使用MATLAB求解*化領域的計算問題。全書共15章,第1~7章介紹MATLAB入門、MATLAB編程基礎、MATLAB矩陣計算、MATLAB數值計算及MATLAB符號計算等內容,將讀者領入MATLAB的大門,并熟練使用MATLAB。第8~9章主要介紹MATLAB繪圖,如何通過MATLAB的強大繪圖功能使得數據可視化。第10章對優化計算進行概述,讓讀者領略什么是優化計算及優化設計的基本原理。第11~13章系統地介紹線性規劃、非線性規劃、數值優化、多目標規劃、優化工具箱等內容,讓讀者輕松地掌握MATLAB在優化計算中的應用。第14~15章為優化計算高級篇,主要講解遺傳算法和微粒群優化計算在MATLAB中的應用。
MATLAB程序設計與*化計算一書內容循序漸進、由淺入深,并結合大量實例幫助讀者理解和掌握*化問題的建模方法與求解技巧。MATLAB程序設計與*化計算一書適合計算應用、*化領域和科學計算的研究人員使用,也可作為高等院校計算機專業、通信專業等相關專業的教材。
(1)MATLAB程序設計與*化計算一書以MATLAB的編程為基礎,引領讀者跨入MATLAB的大門,并向讀者展示了MATLAB的強大功能。(2)MATLAB程序設計與*化計算一書的內容涵蓋了*化理論和方法,以MATLAB計算功能求解*化問題。(3)MATLAB程序設計與*化計算一書做到了理論與實踐相結合。理論的檢驗和驗證也必須通過實踐實現,*化技術理論和系統實驗相結合是有效的途徑之一。(4)MATLAB程序設計與*化計算一書深入淺出、循序漸進地讓讀者從整體上把握*化計算的實質,進而可將實際問題抽象成易于理解的數學模型,同時利用MATLAB語言進行求解。(5)MATLAB程序設計與*化計算一書力求內容豐富,各章節相互聯系,內容具有系統性、科學性、實用性和引導性;同時,各章節又相對獨立,自成體系,為讀者提供了極大方便。
序言····························································前言Foreword最優化計算的英文是Optimization Computation,是在現代計算機廣泛應用的基礎上發展起來的一項技術。最優化計算根據最優化原理和方法,綜合各方面的因素,以人機配合方式或采用自動探索的方式,在計算機上進行半自動或全自動設計,以選出在現有工程條件下最好的設計方案。最優化理論和方法自古就有,最典型的實例即是黃金分割,最優化方法成為科學方法則是在17世紀后。牛頓和萊布尼茨所創建的微積分理論為最優化問題的解決提供了理論基礎,后來產生的變分法和簡單的庫存模型等精確的解析方法可以稱為古典最優化方法。最優化計算主要以數學規劃為基礎,研究各種系統的優化途徑及方案,為決策者提供科學決策的依據。隨著計算機應用技術的飛速發展,各種可用于最優化方法設計與實現的軟件層出不窮,豐富了科研人員的開發研究手段,提高了人們解決實際問題的效率,MATLAB即為其中的一種。利用MATLAB求解最優化問題,可把問題簡單化,也可快速、準確地給出最優化的解。MATLAB已被廣泛應用于自動控制、系統工程、信息工程、應用數學、機電工程、電子工程、計算機、優化設計等專業領域。為了使廣大讀者更好地掌握、應用MATLAB求解最優化問題,作者編寫了本書。本書主要介紹MATLAB程序設計及最優化計算,內容覆蓋了MATLAB編程及最優化設計相關概念、算法、函數、應用,做到理論與實踐相結合。本書以MATLAB R2014b為基礎,首先介紹MATLAB程序設計的基礎知識,然后系統介紹在矩陣計算、數值計算、符號運算和圖形繪制等方面的使用方法,最后重點講解在最優化計算中的應用,通過MATLAB算法編程解決最優化計算問題。通過本書,讀者不僅能掌握使用MATLAB最優化工具箱來快速解決實際問題,而且能學會分析優化算法和采用MATLAB編程解決最優化問題,從而提高分析和解決問題的能力,這也是本書的特色之一。本書具有如下優勢。(1) 本書以MATLAB的編程為基礎,引領讀者跨入MATLAB的大門,并向讀者展示了MATLAB的強大功能。(2) 本書的內容涵蓋了最優化理論和方法,以MATLAB計算功能求解最優化問題。(3) 本書做到了理論與實踐相結合。理論的檢驗和驗證也必須通過實踐實現,最優化技術理論和系統實驗相結合是有效的途徑之一。(4) 本書深入淺出、循序漸進地讓讀者從整體上把握最優化計算的實質,進而可將實際問題抽象成易于理解的數學模型,同時利用MATLAB語言進行求解。(5) 本書力求內容豐富,各章節相互聯系,內容具有系統性、科學性、實用性和引導性;同時,各章節又相對獨立,自成體系,為讀者提供極大方便。(6) 在介紹最優化設計的章節中,每章都應用MATLAB解決各領域中的實際最優化問題,從而降低讀者的學習門檻、提高學習效率。本書內容比較詳盡,內容的取舍和安排恰當、循序漸進,講解通俗易懂,實例豐富,并注重培養解決實際問題的能力。力求降低學習難度,通過豐富的算法、經典的實踐例子來引導學習。本書適用于計算應用、最優化領域和科學計算方向的研究人員使用,也可作為高等院校學習該類課程的本科生和研究生的教材,還可供讀者作為查詢最優化數學問題求解方法的參考書。本書在編寫過程中,得到了姜珍妮、任麗艷等研究生同學的大力支持,她們認真、仔細地校對了書中的內容,在此表示感謝。由于時間倉促和水平所限,書中難免有紕漏之處,請各位讀者批評指正。
編者2016年10月◆MATLAB程序設計與最優化計算
目錄Contents第1篇MATLAB編程篇
第1章導論3
1.1概論3
1.2算法的開發與應用3
1.3數據獲取與分析6
1.4數據可視化7
1.5數值計算9
第2章MATLAB基礎10
2.1啟動MATLAB10
2.2命令行窗口13
2.3輸出命令15
2.3.1disp命令15
2.3.2fprintf命令16
2.4保存與加載命令22
2.4.1save命令23
2.4.2load命令23
2.5導入與輸出數據25
2.5.1數據導入或輸出命令25
2.5.2使用導入向導27
2.6工作空間28
2.7顯示格式30
2.8定義標量變量30
2.8.1賦值運算符31
2.8.2變量的命名規則32
2.8.3預定義變量和關鍵字32◆MATLAB程序設計與最優化計算目錄第3章MATLAB編程34
3.1帶標量的算術運算34
3.1.1優先級34
3.1.2用MATLAB作計算器35
3.2基本內置函數35
3.3關系和邏輯運算符37
3.3.1關系運算符37
3.3.2邏輯運算符39
3.3.3優先級40
3.3.4內置邏輯函數42
3.4條件語句43
3.4.1ifend結構43
3.4.2ifelseend結構43
3.4.3ifelseifelseend結構44
3.5switchcase語句45
3.6循環46
3.6.1forend循環46
3.6.2whileend循環47
3.7嵌套循環和嵌套條件語句48
3.8break和continue語句49
第4章腳本與函數文件50
4.1腳本文件50
4.1.1使用腳本文件的注意事項50
4.1.2腳本文件的創建與保存51
4.1.3腳本文件的運行52
4.1.4當前路徑52
4.2函數文件的創建53
4.3函數文件的結構53
4.3.1函數定義行54
4.3.2輸入和輸出參數54
4.3.3H1行和幫助文本行55
4.3.4函數體56
4.4局部變量和全局變量56
4.5函數文件的保存57
4.6用戶自定義函數的使用57
4.7腳本文件與函數文件的比較58
4.8子函數58
第5章矩陣計算60
5.1矩陣的創建60
5.1.1創建一個一維數組(向量)60
5.1.2根據一串已知的數字來創建向量60
5.1.3創建一個二維數組(矩陣)63
5.1.4MATLAB中變量的注意事項65
5.1.5轉置運算符65
5.1.6數組尋址66
5.1.7在數組尋址中使用冒號67
5.1.8向已有變量中添加元素69
5.1.9刪除元素72
5.1.10處理數組的內置函數73
5.2矩陣運算74
5.2.1加法與減法74
5.2.2數組相乘75
5.2.3數組相除78
5.2.4逐元素運算80
5.2.5在MATLAB內置數學函數中使用數組82
5.2.6分析數組的內置函數83
5.2.7隨機數的生成84
第6章數值計算87
6.1多項式87
6.1.1多項式的值87
6.1.2多項式的根89
6.1.3多項式的加法、乘法和除法運算90
6.1.4多項式求導91
6.2曲線擬合92
6.2.1用多項式來實現曲線擬合polyfit函數92
6.2.2使用函數而不是多項式來實現曲線擬合95
6.2.3插值計算98
6.2.4基本擬合接口101
6.3求解單變量方程104
6.4尋找函數最大值或最小值106
6.5數值積分107
6.6常微分方程110
第7章符號計算114
7.1符號對象和符號表達式115
7.1.1創建符號對象115
7.1.2創建符號表達式116
7.1.3findsym命令和默認符號變量118
7.2化簡符號表達式119
7.2.1collect、expand和factor命令119
7.2.2simplify和simple命令121
7.2.3pretty命令122
7.3求解代數方程122
7.4微分125
7.5積分126
7.6求解常微分方程127
7.7符號表達式的數值計算130
第8章二維繪圖133
8.1plot命令134
8.1.1繪制給定數據137
8.1.2繪制函數137
8.2fplot命令139
8.3在同一個plot中繪制多個圖像139
8.3.1使用plot命令139
8.3.2使用hold on 和 hold off 命令141
8.3.3使用line命令141
8.4定義繪圖顯示格式142
8.4.1使用命令定義繪圖顯示格式142
8.4.2使用plot編輯器繪圖145
8.4.3使用誤差線繪圖146
8.5繪制特殊圖形147
8.6直方圖149
8.7polar繪圖152
8.8在同一頁面上繪制多圖153
8.9多圖窗口153
8.10工具欄繪圖154
第9章三維繪圖156
9.1三維曲線156
9.2三維網格和三維曲面圖157
9.3特殊圖形繪圖163
9.4view命令166
第2篇最優化計算基礎篇
第10章優化計算基礎171
10.1優化問題實例171
10.2優化問題標準形式172
10.3無約束優化問題173
第11章線性與非線性優化174
11.1線性優化174
11.2非線性優化174
11.3方程和方程組的解175
11.4多項式180
第12章數值方法優化185
12.1非線性方程185
12.2不動點法求解x=g(x)185
12.2.1牛頓法求解方程f(x)=0187
12.2.2Schrder方法求解方程 f(x)=0188
12.3非線性方程組188
12.3.1Seidel法188
12.3.2牛頓迭代法189
第13章優化工具箱194
13.1優化工具箱194
13.1.1標準算法194
13.1.2大規模的算法194
13.2最小化算法195
13.2.1多目標問題195
13.2.2具有邊界約束的非線性標量最小化197
13.2.3帶約束的非線性最小化198
13.2.4極小極大優化199
13.2.5最小值優化200
13.2.6半無限約束最小值201
13.2.7線性規劃201
13.2.8二次規劃203
13.3求解方程的算法204
第3篇最優化計算高級篇
第14章遺傳算法209
14.1概述209
14.1.1問題解的表示209
14.1.2適應度函數210
14.1.3種群規模初始化211
14.1.4選擇機制211
14.1.5交叉操作212
14.1.6變異操作212
14.1.7繁殖算子212
14.2編碼和優化問題212
14.3遺傳算法的參數213
14.3.1Dejong設置213
14.3.2設置214
14.3.3MicroGA設置214
14.4遺傳算法的MATLAB程序214
14.4.1問題1: 最大化給定區間內的給定一維函數214
14.4.2問題2: 旅行商問題216
第15章微粒群優化224
15.1簡介224
15.2PSO算法224
15.3PSO的數學模型225
15.4PSO中的參數及參數調優225
15.5MATLAB群體智能的例子226
15.5.1問題1: 模擬集群運動使目標函數最小化226
15.5.2問題2: 粒子群優化行為228