Python 科學計算, 2/e (Python for Scientists, 2/e)

[英] 約翰·M. 斯圖爾特(John M. Stewart) 著

買這商品的人也買了...

商品描述

相對於傳統的Matlab和Mathematica等昂貴的商業軟件包,Python科學計算軟件包以其開源、免費、庫資源豐富的特點,贏得了廣大科技工作者和理工科學生的青睞。本書講解如何使用Python科學計算軟件包來實現和測試復雜的數學算法,第2版針對Jupyter筆記本用戶更新了部分代碼,並新增了講解SymPy的章節。
書中首先簡要介紹Python相關知識,涵蓋IPython、NumPy和SymPy,以及二維和多維圖形的繪制。這些知識旨在為讀者提供必要的基礎,而非呈現Python語言的所有細節。之後,書中討論了三個不同領域的應用實例,涉及常微分方程、偏微分方程和多重網格,並展示了處理Fortran遺留代碼的方法。讀者可以在這些實例的基礎上舉一反三,嘗試採用合適的附加模塊來解決自己所在領域的實際問題。
此外,書中所有代碼均可免費獲取,請訪問www.cambridge.org/PfS2下載。

作者簡介

[英]約翰·M.斯圖爾特(John M. Stewart)著

---作者簡介--- 
約翰·M.斯圖爾特(John M. Stewart)劍橋大學應用數學和理論物理系榮譽退休教授,國王學院終身研究員,於2016年逝世。40多年來,他一直是相對論與引力小組的核心成員,引領著關於相對論動力學理論、宇宙微擾理論和數值相對論的研究工作。他的著作包括《Non-equilibrium Relativistic Kinetic Theory》(1971)和《Advanced General Relativity》(1991)。

---譯者簡介--- 
江紅華東師範大學副教授,博士。1994年畢業於復旦大學計算機系。曾榮獲上海市教學成果一等獎、華東師範大學教學成果一等獎、華東師範大學優秀任課教師獎等榮譽。

余青松華東師範大學高級工程師。1990年畢業於華東師範大學並留校任教。編著計算機相關教材30餘本,在國內外學術期刊和學術會議上發表科技論文近百篇。

目錄大綱

出版者的話
譯者序
第2版前言
第1版前言
第1章導論1 
1.1科學計算軟件1 
1.2本書的規劃3 
1.3 Python能與編譯語言競爭嗎7 
1.4本書的局限性8 
1.5安裝Python和附加軟件包8 
第2章IPython入門9 
2.1 Tab鍵代碼自動補全功能9 
2.2自省9 
2.3歷史命令11 
2.4魔法命令11 
2.5 IPython實踐:擴展示例13 
2.5.1使用IPython終端的工作流程14 
2.5.2使用IPython筆記本的工作流程14 
第3章Python簡明教程18 
3.1輸入Python代碼18
3.2對象和標識符19 
3.3數值類型20 
3.3.1整型20 
3.3.2實數21 
3.3.3布爾值22 
3.3.4複數23 
3.4名稱空間和模塊23 
3.5容器對象25 
3.5.1列表25 
3.5.2列表索引26 
3.5.3列表切片26 
3.5.4列表的可變性27 
3.5.5元組28 
3.5.6字符串29 
3.5.7字典29 
3.6 Python的if語句30 
3.7循環結構31 
3.7.1 Python的for循環結構31 
3.7.2 Python的continue語句32 
3.7.3 Python的break語句33 
3.7.4列表解析33 
3.7.5 Python的while循環34 
3.8函數35 
3.8.1語法和作用範圍35 
3.8.2位置參數38 
3.8.3關鍵字參數38 
3.8.4可變數量的位置參數38 
3.8.5可變數量的關鍵字參數39 
3.8.6 Python的輸入/輸出函數39
3.8.7 Python的print函數40 
3.8.8匿名函數42 
3.9 Python類簡介42 
3.10 Python程序結構44 
3.11素數:實用示例45 
第4章NumPy49 
4.1一維數組50 
4.1.1初始構造函數51 
4.1.2 “相似”構造函數52 
4.1.3向量的算術運算52 
4.1.4通用函數54 
4.1.5向量的邏輯運算符55 
4.2二維數組58 
4.2.1廣播58 
4.2.2初始構造函數59 
4.2.3 “相似”構造函數61 
4.2.4數組的運算和通用函數61 
4.3多維數組62 
4.4內部輸入和輸出62 
4.4.1分散的輸出和輸入62 
4.4.2 NumPy文本文件的輸出和輸入64 
4.4.3 NumPy二進製文件的輸出和輸入65 
4.5外部輸入和輸出65 
4.5.1小規模數據65 
4.5.2大規模數據66 
4.6其他通用函數66 
4.6.1最大值和最小值66 
4.6.2求和與乘積67 
4.6.3簡單統計67
4.7多項式67 
4.7.1根據數據求多項式係數68 
4.7.2根據多項式係數求數據68 
4.7.3係數形式的多項式運算68 
4.8線性代數68 
4.8.1矩陣的基本運算68 
4.8.2矩陣的特殊運算70 
4.8.3求解線性方程組71 
4.9有關NumPy的更多內容和進一步學習71 
4.9.1 SciPy71 
4.9.2 SciKits72 
第5章二維圖形73 
5.1概述73 
5.2繪圖入門:簡單圖形74 
5.2.1前端74 
5.2 .2後端74 
5.2.3一個簡單示例圖形75 
5.2.4交互式操作77 
5.3面向對象的Matplotlib77 
5.4笛卡兒坐標繪圖78 
5.4.1 Matplotlib繪圖函數78 
5.4.2曲線樣式79 
5.4.3標記樣式79 
5.4.4坐標軸、網格線、標籤和標題80 
5.4.5一個稍複雜的示例:傅里葉級數的部分和81 
5.5極坐標繪圖82 
5.6誤差條83 
5.7文本與註釋84 
5.8顯示數學公式84
5.8.1非LaTeX用戶85 
5.8.2 LaTeX用戶86 
5.8.3 LaTeX用戶的替代方案86 
5.9等高線圖87 
5.10複合圖形89 
5.10.1多個圖形89 
5.10.2多個繪圖90 
5.11曼德爾布羅特集:實用示例91 
第6章多維圖形96 
6.1概述96 
6.2降維到二維96 
6.3可視化軟件97 
6.4可視化任務示例97 
6.5孤立波的可視化98 
6.5.1交互式操作任務98 
6.5.2動畫任務100 
6.5.3電影任務101 
6.6三維對象的可視化102 
6.7三維曲線103 
6.7.1使用mplot3d可視化曲線103 
6.7.2使用mlab可視化曲線105 
6.8簡單曲面106 
6.8.1使用mplot3d可視化簡單曲面106 
6.8.2使用mlab可視化簡單曲面108 
6.9參數化定義的曲面109 
6.9.1使用mplot3d可視化Enneper曲面109 
6.9.2使用mlab可視化Enneper曲面110
6.10居里葉集的三維可視化111 
第7章SymPy:一個計算機代數係統113 
7.1計算機代數係統113 
7.2符號和函數114 
7.3 Python和SymPy之間的轉換116 
7.4矩陣和向量117 
7.5一些初等微積分118 
7.5 .1微分118 
7.5.2積分118 
7.5.3級數與極限119 
7.6等式、符號等式和化簡120 
7.7方程求解121 
7.7.1單變量方程122 
7.7.2具有多個自變量的線性方程組122 
7.7.3更一般的方程組124 
7.8常微分方程的求解125 
7.9在SymPy中繪圖127 
第8章常微分方程132 
8.1初值問題132 
8.2基本思想132 
8.3 odeint函數135 
8.3.1理論背景135 
8.3.2諧波振盪器136 
8.3.3范德波爾振盪器139 
8.3.4洛倫茲方程140 
8.4兩點邊值問題142 
8.4.1概述142 
8.4.2邊值問題的公式化143 
8.4.3簡單示例144
8.4.4線性特徵值問題145 
8.4.5非線性邊值問題147 
8.5延遲微分方程151 
8.5.1模型方程151 
8.5.2更一般的方程及其數值解152 
8.5.3邏輯斯諦方程153 
8.5. 4麥克-格拉斯方程155 
8.6隨機微分方程157 
8.6.1維納過程158 
8.6.2 It微積分158 
8.6.3 It與斯特拉托諾維奇隨機積分162 
8.6.4隨機微分方程的數值求解162 
第9章偏微分方程:偽譜方法169 
9.1初邊值問題169 
9.2直線法170 
9.3有限差分空間導數170 
9.4週期問題的譜技術空間導數方法171 
9.5空間週期問題的IVP172 
9.6非週期問題的譜技術174 
9.7 f2py概述176 
9.7.1使用標量參數的簡單示例177 
9.7.2向量參數178 
9.7.3使用多維參數的簡單示例179 
9.7.4 f2py的其他特徵180 
9.8 f2py真實案例181 
9.9實用示例:伯格斯方程182 
9.9.1邊界條件:傳統方法183
9.9.2邊界條件:懲罰方法183 
第10章案例研究:多重網格187 
10.1一維情形188 
10.1.1線性橢圓型方程188 
10.1.2平滑眾數和粗糙眾數188 
10.2多重網格工具189 
10.2 .1鬆弛法189 
10.2.2殘差與誤差191 
10.2.3延拓和限制192 
10.3多重網格算法193 
10.3.1雙重網格算法194 
10.3.2 V循環算法195 
10.3.3完全多重網格算法195 
10.4簡單的Python多重網格實現196 
10.4.1實用函數197 
10.4.2平滑函數198 
10.4.3多重網格函數200 
附錄A安裝Python環境205 
附錄B偽譜方法的Fortran77子程序213 
參考文獻218