【缺書】【不接受訂購】
前 言 本書的設計目標是為了滿足一個學期的數值方法課程。對于希望學習和應用數值方法來解決工程與科學問題的學生來講,本書正是為他們而編寫的。同樣,這些方法是由實際問題而不是由數學理論來驅動的。本書同時提供了足夠的理論,可以讓學生對這些方法及其不足有深入的認識。 MATLAB?為該課程提供了一個非常棒的環境。盡管還可以選擇其他的環境(如Excel/VBA,Mathcad)或語言(如Fortran 90,C++),但就目前來說,方便的編程特性與強大的內置數值功能的完美結合讓我們選擇了MATLAB。一方面,MATLAB的M文件編程環境可以讓學生以結構化和一致的方式適度地實現一些高級算法。另一方面,MATLAB的內置數值功能增強了學生的能力,讓他們可以求解更加困難的問題,而無需試著“重復一些簡單問題”。 這是本書的第2版,與第1版相比存在如下4個關鍵的不同點: (1) 組織。第1版由20章組成。對于第2版,已經將這些章歸為部分(part),如圖P-1的概括。除了以更加一致的方式組織內容外,這種方式還便于在每部分開頭處增加簡介/概述方面的內容,這樣就可以在學生學習該部分時向他們介紹一些總體內容。第Ⅰ部分 建模、計算機與誤差分析 第Ⅱ部分 求根與最優化 第Ⅲ部分 線性方程組 第Ⅳ部分 曲線擬合 第Ⅴ部分積分與微分 第Ⅵ部分常微分方程 第1章 數學建模、數值方法與問題求解 第5章 求根:劃界法 第8章 線性代數方程及矩陣 第13章 線性回歸 第17章 數值積分公式 第20章 初值問題 第2章 MATLAB基礎 第6章 方程求根: 開方法 第9章 高斯消元法 第14章 一般線性最小二乘回歸與非線性回歸 第18章 函數的數值積分 第21章 自適應方法和剛性方程組 第3章 MATLAB編程 第7章 最優化 第10章 LU分解 第15章 多項式插值 第19章 數值微分 第22章 邊值問題 第4章 舍入誤差與截斷誤差 第11章 矩陣求逆與條件數 第16章 樣條與分段插值 第12章 迭代方法 圖P-1 陰影部分是新增內容。另外,對幾個原有章補充了新的主題、習題和案例研究 (2) 新增章。如圖P-1所示,已經新增了3章的內容。增加這些章的主要原因是讓學生能夠更加完整地學習數值方法和MATLAB的功能。這些新章涉及如下主題:● 最優化。本章剛好位于非線性方程求根這一章之后。盡管標準的MATLAB(也就是說,不包括Toolboxes)并不具有綜合的最優化問題求解功能,但是它具有少數幾個內置函數,有了它們就可以介紹這方面的主題,以及求解某些典型的工程和科學問題。盡管本章的焦點是一維最優化,但是也包含了關于多變量最優化的簡要介紹。● 數值微分。本章在數值積分的最后一章之后。增加這一章是為了保證完整性,以及用實例說明數值微分存在一些固有的困難。增加本章的另一個目的是為了介紹有限差分在求解邊值問題時的作用。● 邊值問題。本章位于常微分方程這一部分的末尾。增加本章也是為了保證完整性。另外,可以用實例來說明如何用有限差分求解ODE(常微分方程)問題。我認為這很重要,因為,盡管沒有顯式地在本部分包含PDE(偏微分方程),但是用于求解ODE邊值問題的有限差分為學生提供了一種思想,即如何用數值方法求解PDE問題。該主題還為更具挑戰性和更有趣的課后練習提供了一個不錯的題材。 (3) 案例研究。這些案例由各種工程和科學應用組成,這些應用比每章中給出的標準例子更復雜、更豐富。它們位于某些所選章之后,其目的有:?用實例說明相關方法的細微區別;?表明如何更加實際地將這些方法和MATLAB用于工程和科學問題求解中。 (4) 新的課后習題。每章的大多數課后習題都有所改動,并且加入了很多新的習題。尤其是,相對第一版的習題而言,盡可能在每章中包含了幾個更具挑戰性和更困難的新習題。 除了增加了這些內容之外,第2版與第1版是非常相似的。尤其是,盡可能地保留了第一版的大多數有益于增強教學效果的優秀特征,包括廣泛地使用實例演示以及使用工程和科學應用實例。與第1版一樣,本書同樣盡可能地滿足學生的使用需求。為此,本書努力做到讓解釋更直接、更實用。 盡管本書的基本目的是增強學生的能力,讓他們能夠更好地進入數值問題求解領域,但是還有一個目的是讓學生在學習時感到激動和愉悅。我相信積極主動的學生會喜愛工程與科學、問題求解、數學,當然還有編程,他們最終會獲得更好的職業。如果本書能夠培養他們對這些主題的激情和興趣,那么我認為這種努力就取得了成功。 致謝。McGraw-Hill團隊中有好幾名成員為本書做出了貢獻。特別要感謝Amanda Green、Suzanne Jeans、Peggy Selle、Bill Stenquist和Megan Hoar,感謝他們的鼓勵、支持和指導。Rick Noel設計了一個整潔、清晰和具有美感的封面。Interactive Composition Corporation公司的Naman Mahisauria在本書出版的最后階段所做的工作非常出色。最后,要感謝Beatrice Sussman,曾經兩度用事實證明了為什么她是最好的文字加工編輯(copy-editor)。 在本書的出版過程中,MathWorks公司的員工真正表現出了他們的才能,以及他們對工程和科學教育的強烈責任感。尤其是,MathWorks公司的圖書策劃Courtney Esposito 和 Naomi Fernandes,他們為本書的出版給予了特別的幫助。 由于伯杰家族(Berger family)的慷慨,尤其是Fred Berger,為我提供了良機,讓我能夠參與像本書這樣與工程和科學相關書籍的創新性項目。另外,還要特別感謝Noelle Brooker、Ilse Allen、Jim Limbrunner和Masoud Sanayei,因為他們為本書提供了支持與幫助。 很多同事也為本書提供了有意義的建議。尤其是Dave Clough (Colorado–Boulder大學)、Mike Gustafson (Duke大學)、Jim Guilkey (Utah大學)、Laura Goadrich (Madison,Wisconsin大學)和Douglas Harder (Waterloo大學),他們提出了很有價值的想法和建議。另外,很多讀者也提出了很有益的反饋信息和建議,他們包括Prabhakar Clement (Auburn大學)、John Cotton (弗吉尼亞理工學院和州立大學)、Deji Demuren (原Dominion大學)、Ali Elkamel (滑鐵盧大學)、Leon Gerber (圣約翰大學)、 Dalia M. Gil (理工大學p.r.-奧蘭多校園)、Naira Hovakimyan (弗吉尼亞理工學院和州立大學)、EgwuE. Kalu (FAMU-FSU理工學院)、Ian H. Leslie (新墨西哥州大學)、Xin Li (中佛羅里達大學)、Leslie Loo (新加坡南洋理工大學)、Betty Mayfield (Hood學院)、Clare McCabe (范德比爾特大學)、John Medige (布法羅大學,紐約州立大學), Robert R. Meyer (威斯康星大學)、Jeff Moehlis (加州大學圣塔芭芭拉分校)、Dan Nguyen (艾伯塔大學)、J. Walt Oler (德克薩斯州科技大學)、Luke Olson (伊利諾伊大學厄巴納-尚佩恩分校)、Jeffrey J. Potoff (韋恩州立大學)、David Rappaport (皇后大學)、Charles Schwartz (馬里蘭大學)、Dipendra K. Sinha (舊金山州立大學)、Brian Vick (弗吉尼亞理工學院和州立大學)和Ralph Wilkerson (密蘇里大學羅拉分校)。 應該強調的是,盡管我從上面提到的每個人那里得到了有益的建議,但是我認為,您很有可能還會發現書中存在不準確或錯誤的地方,如果發現任何錯誤,您可以通過電子郵件聯系我。 最后,我要感謝我的家庭,尤其是我的妻子Cynthia,感謝她在本書編寫過程中一直以來給予的關愛、耐心和支持。 Steven C. Chapra 塔夫斯大學 梅德福,馬薩諸塞州 steven.chapra@tufts.edu
全書共分6大部分。第Ⅰ部分介紹數值方法的背景知識、MATLAB的軟件環境和編程模式,后5部分集中介紹數值方法的主要應用領域,具體包括求根與最優化、線性代數方程組的求解、曲線擬合、數值積分與微分以及常微分方程數值解。本書不但介紹了各類數值方法的基本原理和基于MATLA B的實現, 而且非常注重實際應用和計算能力的訓練,除了針對基本內容給出相應的典型實例外,還在每章的末尾提供了大量實用的習題,這有助于讀者進一步鞏固所學的知識。 本書既可作為工程與科學計算初學者的入門參考書,也可作為理工科院校相關專業本科生和研究生系統學習數值方法的教材,還可供廣大科技工作者參考閱讀。◆ 以關鍵概念(如泰勒級數、收斂、條件數等)闡述理論◆ 使用MATLAB的M文件表示算法◆ 插圖與表格清晰而準確、各章末尾的習題豐富而實用◆ 通過一些應用實例和案例研究,使學生清楚地把握數值計算的每個步驟
目 錄第Ⅰ部分 建模、計算機與誤差分析第1章 數學建模、數值方法與問題求解 31.1 一個簡單的數學模型 41.2 工程與科學中的守恒律 101.3 本書中涉及的數值方法 131.4 習題 14第2章 MATLAB基礎 192.1 MATLAB環境 202.2 賦值 21 2.2.1 標量 21 2.2.2 數組、向量和矩陣 23 2.2.3 冒號操作符 25 2.2.4 linspace和logspace函數 262.3 數學運算 262.4 使用內置函數 302.5 繪圖 332.6 其他資源 362.7 案例研究:探索性數據分析 372.8 習題 39第3章 編寫MATLAB程序 453.1 M文件 46 3.1.1 腳本文件 46 3.1.2 函數文件 47 3.1.3 子函數 493.2 輸入輸出 503.3 結構化編程 54 3.3.1 決策 55 3.3.2 循環 623.4 嵌套與縮進 663.5 將函數傳入M文件 69 3.5.1 匿名函數 69 3.5.2 函數函數 71 3.5.3 傳遞參數 733.6 案例研究:蹦極運動員的速度 743.7 習題 78第4章 舍入與截斷誤差 854.1 誤差 86 4.1.1 準確度與精確度 86 4.1.2 誤差定義 874.2 舍入誤差 90 4.2.1 計算機中數的表示 90 4.2.2 計算機中數的算術運算 954.3 截斷誤差 97 4.3.1 泰勒級數 98 4.3.2 泰勒級數展開的余項 1014.3.3 用泰勒級數估計截斷誤差 103 4.3.4 數值差分 1044.4 總數值誤差 108 4.4.1 數值微分的誤差分析 109 4.4.2 數值誤差的控制 1114.5 粗差、模型誤差和數據不確定性 112 4.5.1 粗差 112 4.5.2 模型誤差 113 4.5.3 數據不確定性 1134.6 習題 113第Ⅱ部分 求根與最優化第5章 求根:劃界法 1215.1 工程和科學領域中的求根問題 1225.2 圖形法 1235.3 劃界法與初始猜測值 1255.4 二分法 1295.5 試位法 1345.6 案例研究:溫室氣體與雨水 1375.7 習題 141第6章 方程求根:開方法 1476.1 簡單不動點迭代 1486.2 牛頓-拉弗森方法 1526.3 割線法 1576.4 MATLAB函數:fzero 1596.5 多項式 1626.6 案例研究:管道摩擦力 1656.7 習題 169第7章 最優化 1757.1 簡介與背景 1767.2 一維最優化 178 7.2.1 黃金分割搜索 179 7.2.2 拋物線插值 184 7.2.3 MATLAB函數:fminbnd 1867.3 多維最優化 1877.4 案例研究:平衡與極小勢能 1897.5 習題 190第Ⅲ部分 線性方程組第8章 線性代數方程和矩陣 2038.1 矩陣代數概述 205 8.1.1 矩陣符號 205 8.1.2 矩陣的運算規則 2078.1.3 將線性代數方程組表示成矩陣形式 2128.2 用MATLAB求解線性代數方程組 2138.3 案例研究:電路中的電流和電壓 2158.4 習題 218第9章 高斯消元法 2239.1 求解小型方程組 224 9.1.1 繪圖法 224 9.1.2 行列式和克拉默法則 225 9.1.3 未知數消元法 2289.2 樸素高斯消元法 2299.2.1 MATLAB M文件:Gauss Naive 232 9.2.2 運算次數 2339.3 選主元 2359.4 三對角方程組 2389.5 案例研究:熱桿模型 2409.6 習題 242第10章 LU分解 24910.1 LU分解概述 25010.2 高斯消元法與LU分解 25110.3 楚列斯基分解 25610.4 MATLAB的左除運算 25910.5 習題 259第11章 矩陣求逆和條件數 26311.1 矩陣的逆 263 11.1.1 逆矩陣的計算 263 11.1.2 激勵-響應計算 26511.2 誤差分析和方程組的條件數 267 11.2.1 向量和矩陣范數 268 11.2.2 矩陣條件數 26911.2.3 用MATLAB計算范數和條件數 27111.3 案例研究:室內空氣污染 27211.4 習題 275第12章 迭代法 27912.1 線性方程組:高斯-賽德爾 27912.1.1 收斂性與對角占優 28212.1.2 MATLAB M文件:GaussSeidel 28212.1.3 松弛法 28312.2 非線性方程組 28412.2.1 逐次代換 28512.2.2 牛頓—拉弗森 28612.3 案例研究:化學反應 29112.4 習題 293第Ⅳ部分 曲 線 擬 合第13章 線性回歸 29913.1 統計學回顧 30013.1.1 描述統計學 30013.1.2 正態分布 30313.1.3 用MATLAB計算描述統計學量 30413.2 線性最小二乘回歸 30613.2.1 “最佳”擬合條件 30713.2.2 直線的最小二乘擬合 30813.2.3 線性回歸誤差的量化 31013.3 非線性關系的線性化 31413.4 計算機應用 31713.4.1 MATLAB M文件:linregr 31713.4.2 MATLAB函數:polyfit和polyval 31913.5 案例研究:?動力學 32013.6 習題 324第14章 一般線性最小二乘回歸和非線性回歸 33314.1 多項式回歸 33314.2 多重線性回歸 33614.3 一般線性最小二乘回歸 33914.4 QR分解與反斜桿運算符 34214.5 非線性回歸 34314.6 案例研究:擬合正弦曲線 34414.7 習題 348第15章 多項式插值 35515.1 插值法導論 35615.1.1 確定多項式的系數 35715.1.2 MATLAB函數:polyfit和polyval 35815.2 牛頓插值多項式 35915.2.1 線性插值 35915.2.2 二次插值 36115.2.3 牛頓插值多項式的一般形式 36215.2.4 MATLAB M文件:Newtint 36515.3 拉格朗日插值多項式 36615.4 逆插值 36815.5 外插值和振蕩 37015.5.1 外插值 37015.5.2 振蕩 37215.6 習題 373第16章 樣條和分段插值 37916.1 樣條導論 37916.2 線性樣條 38116.3 二次樣條 38416.4 三次樣條 38716.4.1 三次樣條的推導 38816.4.2 邊界條件 39116.5 MATLAB中的分段線性插值 39216.5.1 MATLAB函數:spline 39316.5.2 MAYTLAB函數:interp1 39416.6 多維插值 39616.6.1 雙線性插值 39616.6.2 MATLAB中的多維插值 39816.7 案例研究:傳熱 39916.8 習題 402第Ⅴ部分 積分與微分第17章 數值積分公式 41117.1 導論和背景 41217.1.1 什么是積分 41217.1.2 工程和科學中的積分 41317.2 牛頓-科特斯公式 41517.3 梯形法則 41617.3.1 梯形法則的誤差 41717.3.2 復合梯形法則 41917.3.3 MATLAB M文件:trap 42117.4 辛普森法則 42217.4.1 辛普森1/3法則 42317.4.2 復合辛普森1/3法則 42417.4.3 辛普森3/8法則 42617.5 高階牛頓-科特斯公式 42817.6 非等距積分 42917.6.1 MATLAB M文件:trapuneq 42917.6.2 MATLAB函數:trapz和cumtrapz 43017.7 開型方法 43217.8 多重積分 43317.9 案例研究:用數值積分計算功 43517.10 習題 438第18章 函數的數值積分 44518.1 導論 44518.2 龍貝格積分 44618.2.1 理查森外推法 44618.2.2 龍貝格積分公式 44818.3 高斯求積 45118.3.1 待定系數法 45218.3.2 兩點高斯-勒讓德公式的推導 45318.3.3 更多點的公式 45618.4 自適應求積 45718.5 案例研究:均方根電流 45918.6 習題 462第19章 數值微分 46719.1 導論和背景 46819.1.1 什么是微分 46819.1.2 工程和科學中的微分 46919.2 高精度微分公式 47119.3 理查森外推法 47419.4 不等距數據的導數 47519.5 含誤差數據的導數與積分 47619.6 偏導數 47719.7 用MATLAB計算數值微分 47819.7.1 MATLAB函數:diff 47819.7.2 MATLAB函數:gradient 48019.8 案例研究:向量場的可視化 48219.9 習題 484第Ⅵ部分 常微分方程第20章 初值問題 49920.1 概述 50020.2 歐拉法 50120.2.1 歐拉法的誤差分析 50320.2.2 歐拉法的穩定性 50420.2.3 MATLAB的M文件函數:eulode 50520.3 歐拉法的改進 50620.3.1 休恩法 50620.3.2 中點方法 51020.4 龍格-庫塔方法 51120.4.1 二階龍格-庫塔方法 51220.4.2 古典四階龍格-庫塔方法 51320.5 方程組 51620.5.1 歐拉法 51620.5.2 龍格-庫塔方法 51720.5.3 MATLAB的M文件函數:rk4sys 51920.6 案例研究:捕食者-獵物模型與混沌 52120.7 習題 525第21章 自適應方法和剛性方程組 53321.1 自適應龍格-庫塔方法 53321.2 多步方法 53921.2.1 非自啟動休恩法 53921.2.2 誤差估計 54221.3 剛性 54321.4 MATLAB應用:帶繩索的蹦極者 54821.5 案例研究:普林尼的間歇式噴泉 54921.6 習題 552第22章 邊值問題 55722.1 導論和背景 55822.1.1 什么是邊值問題 55822.1.2 工程和科學中的邊值問題 55922.2 打靶法 56222.2.1 導數邊界條件 56422.2.2 非線性ODE的打靶法 56622.3 有限差分法 56822.3.1 導數邊界條件 57022.3.2 非線性ODE的有限差分法 57222.4 習題 574附錄A 特征值 581附錄B MATLAB內置函數 591附錄C MATLAB的M文件函數 593參考文獻 595