Python應用數(shù)值方法——解決工程和科學問題
定 價:¥158
中 教 價:¥94.80 (6.00折)
庫 存 數(shù): 2
叢 書 名:計算機與智能科學叢書
《Python應用數(shù)值方法解決工程和科學問題》是為想要學習和應用數(shù)值方法來解決工程和科學問題的學生撰寫的。書中提供了足夠豐富的理論知識。如果讀過本書的姊妹篇《工程與科學數(shù)值方法的MATLAB實現(xiàn)(第4版)》,就會發(fā)現(xiàn)過渡到Python程序是無縫的!不需要事先具有Python編程經(jīng)驗。 本書以解決問題為導向,強調(diào)理論聯(lián)系實際。各章均引入實際的工程和科學問題,提供從相關概念定義、理論分析到算法實現(xiàn)的全套解決方案。每章末尾安排有課后習題,方便讀者在鞏固所學知識的同時,進一步提升自己編寫代碼和解決問題的水平。
我們正處在一個信息技術高速發(fā)展的時代,大數(shù)據(jù)與人工智能推動著傳統(tǒng)技術的智能化變革,對科學和工程技術人員的理論素養(yǎng)與實踐能力的要求越來越高。在此技術變革時代背景下,一名合格的技術人員在學術界和工程界立身的基礎就是能夠發(fā)現(xiàn)和分析問題,以及掌握解決問題的工程實踐手段。Python是目前能最大限度地滿足這種需求的語言之一, 它具有易學易懂、膠水語言的靈活性及豐富的第三方支持庫特性,是技術人員入門、進階的利器,幾乎可滿足當前學術界和工程界各個領域的需求。但令人遺憾的是,目前市面上很少有書籍提供從發(fā)現(xiàn)和分析問題到工程實踐的完整解決方案。本書可滿足在校學生在理論和算法學習方面的需求,并提供詳細的源代碼:按照從相關概念定義、理論分析、算法實現(xiàn)再到源代碼示例的邏輯撰寫,介紹Python在數(shù)值計算中的應用。本書譯者充分結(jié)合自身在計算理論與工程實踐方面的豐富經(jīng)驗,保證了相關理論知識與編程技巧的正確傳達。
20世紀60年代,當我們作為學生首次學習使用計算機時,F(xiàn)ORTRAN是工程和科學計算的首選語言。在接下來的半個世紀里,許多語言已被證明可用于實現(xiàn)研究和教學中非常有價值的數(shù)值計算;隨著一系列FORTRAN改進版本的出現(xiàn),ALGOL、BASIC、Pascal和C/C 等語言都進入了我們的計算工具箱。這種演變存在的一個缺點是,這些語言中的大多數(shù)缺乏完全集成的數(shù)值算法庫,無法讓程序員利用大多數(shù)工程和科學應用所需的大量工業(yè)實力算法。1984年,MathWorks公司通過引入一個完全集成、多范式的數(shù)值計算環(huán)境和名為MATLAB(MATrix LABoratory)的高級編程語言,彌補了這一缺陷。除了程序編程,MATLAB還允許繪圖、創(chuàng)建用戶界面,以及與其他語言進行交互。但最重要的是,MATLAB及其補充工具箱擁有龐大的內(nèi)置函數(shù)和工具箱,使程序員能應用最先進的數(shù)值方法,而不必從頭開發(fā)代碼。雖然MATLAB提供了高質(zhì)量和功能強大的計算環(huán)境,但它的缺點是相對昂貴。盡管對于許多大學等大型組織而言,這通?梢院雎裕覀冇^察到,較小的咨詢公司、地方政府、個人甚至像公司這樣的一些大型實體都在考慮減少費用,因此需要一種成本更低的替代方案。說到Python,Python由Guido van Rossum創(chuàng)建并于1991年首次發(fā)布,是一個多范式的開源計算環(huán)境,可以隨時訪問強大的數(shù)值例程,可供任何個人或組織免費使用。此外,它得到了良好的管理和維護,因此,它正成為越來越受歡迎的MATLAB替代品。由于Python在工程和科學教育中的應用越來越廣泛,我們決定撰寫這本教科書來支持一個為期一學期的數(shù)值方法課程。課程是為那些想要學習和使用數(shù)值方法解決工程和科學問題的學生而寫的。因此,這些方法是由問題(而非數(shù)學)驅(qū)動的,能提供足夠的理論,讓學生能深入了解相關技術及其缺點。Python為此類課程提供了一個很好的環(huán)境,因為它很好地將高級編程語言與強大的內(nèi)置數(shù)值功能相結(jié)合,以允許學生以結(jié)構化和連貫的風格實現(xiàn)中等復雜的算法,同時其數(shù)值能力使學生能夠解決更難的問題,而不必全盤重來。本書的基本內(nèi)容、組織和教學方法與其他數(shù)值方法教科書類似,特別是,為使本書更容易閱讀,有意保持對話式寫作風格。本書試圖直接與讀者對話,部分目的是成為自學工具,因此,相信它在課堂之外對希望熟練掌握數(shù)值方法和Python的專業(yè)人士也有價值。我們努力使本書保留有助于教學的功能,包括廣泛使用實例和工程科學應用,最重要的是,讓解釋簡單實用,以使本書盡可能對學生友好。我們在這里澄清,本書內(nèi)容不是深入講授Python程序語言,而且之前不需要有Python方面的經(jīng)驗。我們提供了足夠的Python編程背景,以方便數(shù)值方法的實現(xiàn),使用歸納法讓學生能夠通過應用及時學習Python的各個方面,并逐漸將這些經(jīng)驗推廣以提升對語言的熟悉程度;本書提供了許多Python代碼示例,能為學生提供自己的代碼開發(fā)模式。我們特意選擇了Spyder集成開發(fā)環(huán)境,因為它提供一個相對友好的界面,包括許多類似MATLAB的功能,其中包括命令窗口、編輯器、變量資源管理器、調(diào)試工具和有用的幫助界面。精通Python的程序員可能會對我們漏掉一些功能感到失望,但我們強調(diào)要關注本書的主要目的:通過學習數(shù)值方法來增強STEM(科學、技術、工程、數(shù)學)學生的能力。本書通過介紹如何解決數(shù)值問題來增強學生的能力。我們相信,熱愛工程和科學、問題解決、數(shù)學和編程的學生,最終會成為更好的專業(yè)人士,如果本書能夠激發(fā)人們對這些主題的熱情和欣賞,我們認為這種努力是成功的。McGraw Hill提供的個性化學習工具讀者可根據(jù)需要訪問mhhe.com/collegesmarter(800.331.5094)來獲取McGraw Hill公司提供的一些在線服務。proctorio由connect中的proctorio托管的遠程監(jiān)考和瀏覽器鎖定功能,通過啟用安全選項和驗證學生的身份,提供了對評估環(huán)境的控制。這些服務與connect無縫集成,使教師能限制瀏覽器活動、記錄學生活動以及驗證學生是否在完成自己的作業(yè)。及時而詳細的報告讓教師對潛在的學術誠信問題一目了然,從而避免個人偏見,支持基于證據(jù)的主張。 隨時隨地閱讀 使用McGraw-Hill的免費ReadAnywhere應用程序,在方便的時候閱讀或?qū)W習。ReadAnywhere可用于iOS或Android智能手機或平板電腦,讓用戶訪問McGraw-Hill工具,包括eBook和SmartBook 2.0或connect中的自適應學習作業(yè)。用戶可在離線狀態(tài)下記筆記、突出顯示和完成作業(yè)。當你使用WiFi訪問打開應用程序時,所有工作都將同步。使用你的McGraw Hill connect用戶名和密碼登錄,隨時隨地開始學習!Tegrity:全天候講座 connect中的Tegrity是一個工具,通過自動捕獲每堂課,使課堂時間全天候可用。通過簡單的一鍵啟動和停止過程,可以一種易于搜索的格式捕獲所有計算機屏幕和相應的音頻。學生可在PC、Mac、iPod或其他移動設備上通過易于使用、基于瀏覽器的界面來重播任何課程的任何部分。教育工作者知道,學生能看到、聽到和體驗到的課堂資源越多,學習效果就越好。事實上,研究證明了這一點。Tegrity獨特的搜索功能可幫助學生在需要的時候,在整個學期的課堂錄音中高效地找到他們需要的東西。有了Tegrity,還可通過減輕學生對筆記的擔憂來提高專注度和課堂參與度。在connect中使用Tegrity將使你更有可能看到學生的臉,而不是他們的頭頂。connect中的Test Builder Test Builder是一個基于云的工具,可在connect中提供。使教師能夠格式化測試,這些測試可以在學習管理系統(tǒng)中打印、管理,或作為測試庫的Word文檔導出。Test Builder提供了一個現(xiàn)代化的、精簡的界面,無須下載。Test Builder允許你:● 從特定標題訪問所有測試庫內(nèi)容。● 通過強大的過濾選項,輕松定位最相關的內(nèi)容。● 操縱問題的順序或重排問題和/或答案。● 將問題固定到測試中的特定位置。● 確定你對算法問題的首選處理方式。● 選擇布局和間距。● 添加說明并配置默認設置。Test Builder提供了一個安全的界面,以更好地保護內(nèi)容,并允許及時更新內(nèi)容。寫作作業(yè) 在connect和connect Master中,Writing Assignment(寫作作業(yè))工具提供了一種學習體驗,幫助學生提高書面溝通技能并加深對概念的理解。作為一名教師,你可以更有效地分配、監(jiān)控和提供寫作反饋,并給出評分。用你的方式寫書 McGraw-Hill的由Create提供支持的內(nèi)容集是一個自助網(wǎng)站,它使教師能夠利用McGraw-Hill的全面、跨學科內(nèi)容創(chuàng)建定制課程材料和電子書。從我們的高質(zhì)量教科書、文章和案例中選擇你想要的,快速輕松地將其與自己的內(nèi)容相結(jié)合,并利用其他受版權保護的第三方內(nèi)容,如案例和文章。內(nèi)容可以最適合你的課程的方式安排,你還可添加課程名稱和信息。為你的課程選擇最佳格式:彩色打印、黑白打印或電子書。電子書可以包含在你的connect課程中,也可在免費的ReadAnywhere應用程序中使用,用于智能手機或平板電腦訪問。完成定制后,你將在幾分鐘內(nèi)收到一份免費的數(shù)字副本供查看!訪問McGraw Hill Createwww.mcgrawhillcreate.com從今天開始創(chuàng)建!
StevenC.Chapra是塔夫茨大學土木與環(huán)境工程系名譽教授和Louis Berger講座教授。他的其他著作包括Surface Water-QualityModeling、《工程數(shù)值方法(第6版)》和《工程與科學數(shù)值方法的MATLAB實現(xiàn)(第4版)》。Steven博士獲得曼哈頓學院和密歇根大學的工程學學位。主要研究方向為地表水質(zhì)建模和環(huán)境工程中的高級計算機應用。Steven是ASCE(美國土木工程學會)的院士和終身會員,并因?qū)W術貢獻獲得多個獎項,包括魯?shù)婪?middot;赫林獎以及梅利亞姆·威利杰出作家獎。Steven還被公認為得克薩斯農(nóng)工大學、科羅拉多大學和塔夫茨大學工程系的杰出教師和顧問。
David E. Clough于1975年加入科羅拉多大學化學與生物工程系。他于2017年從科羅拉多退休,后擔任名譽教授。David博士獲得了凱斯西儲大學和科羅拉多大學的化學工程學位。他在應用計算、過程自動化和各種過程建模方面擁有豐富經(jīng)驗,重點研究的課題包括聚合、高溫催化反應器、流化床、明渠流、生物醫(yī)學儀器和太陽能熱反應器。
第 I 部分 建模、計算機和誤差分析第1章 數(shù)學建模、數(shù)值方法和問題求解 31.1 一個簡單的數(shù)學模型 41.2 工程與科學中的守恒定律 91.3 本書所涉及的數(shù)值方法 111.4 案例研究:自由落體 12習題 14第2章 Python基礎 242.1 Spyder/IPython運行環(huán)境 252.2 賦值 262.2.1 標量 262.2.2 數(shù)組、向量和矩陣 272.2.3 下標和下標的范圍 302.2.4 arange、linspace和logspace函數(shù) 302.2.5 字符串 312.3 數(shù)學運算 332.4 使用內(nèi)置函數(shù) 372.5 制圖 412.6 其他資源 472.7 案例研究:探索性數(shù)據(jù)分析 48習題 51第3章 Python編程 573.1 Python腳本文件 583.1.1 Python腳本 583.1.2 Python函數(shù) 593.1.3 變量作用域 613.2 輸入和輸出 633.3 結(jié)構化編程 663.3.1 決策流程 663.3.2 關于參數(shù)的更多信息 703.3.3 循環(huán) 713.4 嵌套和縮進 763.5 帶有函數(shù)名稱參數(shù)的Python函數(shù) 793.5.1 lambda函數(shù) 793.5.2 函數(shù)-函數(shù) 803.5.3 參數(shù)傳遞 833.6 案例研究:蹦極者的速度計算 85習題 88第4章 舍入和截斷誤差 1004.1 誤差 1004.1.1 準確度和精確度 1014.1.2 誤差定義 1014.1.3 迭代計算的計算機算法 1044.2 舍入誤差 1064.2.1 計算機中數(shù)字的表示法 1064.2.2 計算機中數(shù)字的算術運算 1114.3 截斷誤差 1134.3.1 泰勒級數(shù) 1134.3.2 泰勒級數(shù)式的余數(shù) 1164.3.3 使用泰勒級數(shù)估計截斷誤差 1184.3.4 數(shù)值微分 1184.4 總數(shù)值誤差 1224.4.1 數(shù)值微分的誤差分析 1224.4.2 數(shù)值誤差的控制 1254.5 錯誤、模型誤差和數(shù)據(jù)不確定性 1254.5.1 錯誤 1254.5.2 模型誤差 1264.5.3 數(shù)據(jù)不確定性 126習題 126第Ⅱ部分 求根和最優(yōu)化第5章 求根:交叉法 1335.1 工程和科學應用中的求根問題 1335.2 圖形和試錯法 1345.3 交叉法和初步猜測 1375.4 二分法 1405.5 試位法 1465.6 案例研究:溫室氣體和雨水 148習題 152第6章 根:開型法 1596.1 不動點迭代 1606.2 韋格斯坦法 1646.3 牛頓-拉夫遜法 1686.4 正割法 1746.5 布倫特法 1756.5.1 逆二次插值法 1756.5.2 布倫特法的算法 1776.6 Python SciPy函數(shù):brentq 1796.7 多項式 1806.8 案例研究:管道摩擦 183習題 188第7章 優(yōu)化 1987.1 背景介紹 1997.2 一維優(yōu)化 2017.2.1 黃金分割搜索 2017.2.2 拋物線插值 2077.2.3 Python的SciPy函數(shù):minimize_scalar 2087.3 多維優(yōu)化 2107.4 案例研究:平衡和最小勢能 212習題 214第Ⅲ部分 線性方程組第8章 線性代數(shù)方程與矩陣 2268.1 矩陣代數(shù)概述 2278.1.1 矩陣符號 2288.1.2 矩陣運算規(guī)則 2298.1.3 用矩陣形式表示線性代數(shù)方程 2378.2 用Python求解線性代數(shù)方程 2388.3 案例研究:電路中的電流和電壓 240習題 243第9章 高斯消元法 2499.1 求解少量方程 2499.1.1 圖解法 2509.1.2 行列式和克萊默法則 2519.1.3 消除未知數(shù)法 2539.2 樸素高斯消元法 2549.2.1 Python函數(shù):gaussnaive 2569.2.2 運算計數(shù) 2589.3 主元 2609.3.1 Python函數(shù):gausspivot 2619.3.2 用高斯消元法求行列式 2629.4 三對角方程組 2639.5 案例研究:加熱棒模型 265習題 268第10章 LU因式分解法 27510.1 LU分解法概述 27510.2 LU分解的高斯消元 27610.2.1 涉及主元消元的LU分解 27910.2.2 應用Python的LU分解法 28110.3 喬里斯基分解法 28210.4 Python的np.linalg.solve函數(shù) 284習題 285第11章 矩陣的逆和條件 28711.1 矩陣的逆 28711.1.1 計算逆矩陣 28711.1.2 刺激-響應計算 28911.2 錯誤分析和系統(tǒng)狀態(tài) 29011.2.1 向量和矩陣范數(shù) 29111.2.2 矩陣條件數(shù) 29211.2.3 用Python計算范數(shù)和條件數(shù) 29311.3 案例研究:室內(nèi)空氣污染 294習題 297第12章 迭代法 30212.1 線性方程組:高斯-賽德爾法 30212.1.1 收斂性和對角優(yōu)勢 30412.1.2 Python函數(shù):gaussseide1 30412.1.3 松弛 30612.2 非線性系統(tǒng) 30712.2.1 逐次代換法 30712.2.2 牛頓-拉夫遜法 30912.2.3 Python SciPy函數(shù):root 31312.3 案例研究:化學反應 314習題 316第13章 特征值 32113.1 特征值和特征向量基礎知識 32213.2 特征值和特征向量的應用 32413.2.1 二階微分方程的一階等價方程 32513.2.2 特征值和特征向量在微分方程解中的作用 32513.2.3 特征值和純振蕩的常微分方程 32613.3 物理場景-質(zhì)量-彈簧系統(tǒng) 32913.4 冪法 33113.5 Python NumPy函數(shù):eig和eigvals 33313.6 案例研究:特征值與地震 334習題 338
第Ⅳ部分 曲線擬合第14章 直線線性回歸 34614.1 統(tǒng)計學回顧 34714.1.1 描述性統(tǒng)計 34714.1.2 正態(tài)分布 35114.1.3 使用Python進行描述性統(tǒng)計 35414.2 隨機數(shù)和模擬 35714.2.1 均勻分布中的隨機數(shù) 35714.2.2 正態(tài)分布中的隨機數(shù) 35914.3 直線最小二乘回歸 36114.3.1 最佳擬合的標準 36214.3.2 直線的最小二乘擬合 36314.3.3 繪制直線的荒島法 36514.3.4 線性回歸誤差的量化 36514.4 非線性關系的線性化 37014.5 計算機應用 37514.5.1 Python函數(shù):strlinregr 37514.5.2 Python NumPy函數(shù):polyfit和polyval 37814.6 案例研究:酶動力學 379習題 382第15章 一般線性回歸和非線性回歸 39315.1 多項式回歸 39315.2 多元線性回歸 39715.3 一般線性最小二乘回歸 39915.4 回歸中的模型建立與選擇 40315.5 非線性回歸 40915.6 案例研究:擬合實驗數(shù)據(jù) 414習題 417第16章 傅里葉分析 42416.1 用正弦函數(shù)進行曲線擬合 42516.2 連續(xù)傅里葉級數(shù) 43016.3 頻域和時域 43216.4 傅里葉積分和變換 43516.5 離散傅里葉變換(DFT) 43516.5.1 快速傅里葉變換(FFT) 43616.5.2 Python SciPy函數(shù):fft 43716.6 功率譜 43916.7 案例研究:太陽黑子 440習題 442第17章 多項式插值法 44617.1 插值法簡介 44717.1.1 確定多項式系數(shù) 44717.1.2 Python NumPy函數(shù):polyfit和polyval 44917.2 牛頓插值多項式 44917.2.1 線性插值 44917.2.2 二次插值 45117.2.3 牛頓插值多項式的一般形式 45217.2.4 Python函數(shù)Newtint 45417.3 拉格朗日插值多項式 45517.4 逆插值 45817.5 外推法和振蕩 45817.5.1 外推法 45817.5.2 振蕩 461習題 463第18章 樣條和分段插值 46918.1 樣條簡介 46918.2 線性樣條 47118.3 二次樣條 47718.4 三次樣條 47818.4.1 三次樣條的推導 47918.4.2 末端條件 48218.5 Python中的分段插值 48318.5.1 Python SciPy模塊的interpolate函數(shù):CubicSpline 48518.5.2 附加的Python SciPy插值函數(shù):interp1d和PchipInterpolator 48718.6 多維插值 48818.6.1 雙線性插值 48918.6.2 Python中的多維插值 49018.7 數(shù)據(jù)序列的平滑 49118.7.1 三次樣條平滑 49118.7.2 LOESS平滑法 49418.8 案例研究:湖中的熱傳導 499習題 501
第Ⅴ部分 微積分第19章 數(shù)值積分方程 51119.1 背景簡介 51219.1.1 什么是積分 51219.1.2 工程與科學中的積分 51219.2 牛頓-科特斯方程 51419.3 梯形法則 51619.3.1 梯形法則的誤差 51619.3.2 復合梯形法則 51719.3.3 Python函數(shù):trap 52019.4 辛普森法則 52119.4.1 辛普森1/3 法則 52119.4.2 復合辛普森1/3法則 52219.4.3 辛普森3/8法則 52419.5 高階牛頓-科特斯方程 52619.6 不等段積分 52619.6.1 Python函數(shù):trapuneq 52719.6.2 Python函數(shù):trapz和trap_cumulative 52819.7 開放式方法 53019.8 多重積分 53119.9 案例研究:數(shù)值積分的計算 533習題 536
第20章 函數(shù)的數(shù)值積分 54320.1 簡介 54320.2 Romberg積分 54420.2.1 Richardson外推 54420.2.2 Romberg積分算法 54620.3 高斯求積法 54820.3.1 待定系數(shù)法 54820.3.2 兩點高斯-勒讓德公式的推導 55020.3.3 高點公式 55220.4 自適應求積法 55320.4.1 Python函數(shù):quadadapt 55320.4.2 Python SciPy積分函數(shù):quad 55520.5 案例研究:均方根電流 556習題 559第21章 數(shù)值導數(shù) 56521.1 背景簡介 56621.1.1 什么是導數(shù) 56621.1.2 工程與科學的導數(shù) 56721.2 高精度導數(shù)公式 56821.3 Richardson 外推法 57121.4 不等間距數(shù)據(jù)的導數(shù) 57221.5 有誤差數(shù)據(jù)的導數(shù)和積分 57321.6 偏導數(shù) 57421.7 Python數(shù)值求導 57421.7.1 Python NumPy函數(shù):diff 57421.7.2 Python NumPy函數(shù):gradient 57721.8 案例研究:場的可視化 579習題 580
第Ⅵ部分 常微分方程第22章 初值問題 59422.1 概述 59522.2 歐拉法 59522.2.1 歐拉法的誤差分析 59722.2.2 歐拉法的穩(wěn)定性 59822.2.3 Python函數(shù):eulode 59922.3 改進歐拉法 60122.3.1 Heun方法 60122.3.2 中點法 60422.4 Runge-Kutta方法 60522.4.1 二階Runge-Kutta法 60522.4.2 經(jīng)典四階 Runge-Kutta法 60622.5 方程組 60822.5.1 歐拉法 60922.5.2 Runge-Kutta法 61022.5.3 Python 函數(shù):rk4sys 61122.6 案例研究:捕食者獵物模型和變體 614習題 618第23章 自適應方法和剛性系統(tǒng) 62523.1 自適應Runge-Kutta方法 62523.1.1 RKF 4/5算法的Python函數(shù):rkf45 62623.1.2 求解IVP ODE的Python函數(shù):SciPy solve_ivp積分函數(shù) 63023.1.3 事件 63323.2 多步法 63623.2.1 非自啟動Heun方法 63623.2.2 誤差估計 63823.3 剛度 63923.4 Python 應用:帶繩的蹦極者 64423.5 案例研究:普林尼的間歇噴泉 646習題 649第24章 邊值問題 65924.1 背景簡介 66024.1.1 什么是邊值問題 66024.1.2 工程和科學中的邊值問題 66024.2 打靶法 66324.2.1 導數(shù)邊界條件 66524.2.2 非線性常微分方程的打靶法 66724.3 有限差分法 66924.3.1 導數(shù)邊界條件 67124.3.2 非線性 ODE 的有限差分方法 67324.4 Python函數(shù):solve_bvp 674習題 676掃封底二維碼下載以下內(nèi)容附錄A Matplotlib 685附錄B 三次樣條平滑 705附錄C Python內(nèi)置關鍵字:函數(shù)、方法、操作符、類型 710附錄D 書中用到的Python函數(shù)和腳本 713參考文獻 715