Python科學(xué)計(jì)算(原書(shū)第2版)
定 價(jià):89 元
叢書(shū)名:計(jì)算機(jī)科學(xué)叢書(shū)
- 作者:[英] 約翰·M. 斯圖爾特(John M. Stewart)
- 出版時(shí)間:2019/8/1
- ISBN:9787111633907
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類(lèi):TP311.561
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開(kāi)本:16開(kāi)
【網(wǎng)店勿用!此為申報(bào)選題所填信息,網(wǎng)店請(qǐng)調(diào)用*終版】對(duì)于科學(xué)家而言,有了本書(shū),你再也不用去購(gòu)買(mǎi)那些昂貴的Python軟件包。書(shū)中包含大量可下載的代碼片段,囊括你需要知道的一切。跟隨作者的講解,你將發(fā)現(xiàn)實(shí)現(xiàn)和測(cè)試非平凡的數(shù)學(xué)算法是多么容易,并將通過(guò)許多免費(fèi)的附加模塊進(jìn)一步動(dòng)手實(shí)踐。這些實(shí)例來(lái)自眾多不同的研究領(lǐng)域,它們展示了Python的強(qiáng)大魅力。此外,作者還介紹了如何在Python環(huán)境中使用遺留代碼,從而免去掌握原始代碼的麻煩。相較于第1版,新版本重寫(xiě)了幾個(gè)章節(jié)以反映IPython筆記本風(fēng)格,擴(kuò)充了索引,并包含討論SymPy的新章節(jié),還新增了大量代碼片段。通過(guò)閱讀本書(shū),研究人員和學(xué)生將迅速掌握有效使用Python所需的所有技能。
第2版前言
Python for Scientists, Second Edition
第1版的前言中包含了本書(shū)的寫(xiě)作動(dòng)機(jī),以及對(duì)眾多協(xié)助編寫(xiě)本書(shū)的工作人員的致謝。在此,我還要感謝許多讀者,他們提供了建設(shè)性的批評(píng)意見(jiàn),其中大部分已經(jīng)被納入第2版中。我還想進(jìn)一步解釋一下為什么要出版第2版。從表面上看,除了新增討論SymPy(Python本身的計(jì)算機(jī)代數(shù)系統(tǒng))的第7章之外,似乎沒(méi)有什么大的變化。
然而,新版本中的大部分內(nèi)容都滲透著一種根本性的變化。在準(zhǔn)備第1版時(shí),使用增強(qiáng)解釋器IPython的可靠方法是通過(guò)傳統(tǒng)的“終端模式”。那時(shí)正在開(kāi)發(fā)增強(qiáng)的“筆記本模式”,該模式與Mathematica筆記本概念類(lèi)似,區(qū)別在于其顯示在計(jì)算機(jī)的默認(rèn)Web瀏覽器中。該項(xiàng)目現(xiàn)在已經(jīng)演變?yōu)镴upyter筆記本,該筆記本允許人們構(gòu)建和發(fā)布包含計(jì)算機(jī)代碼(支持40多種語(yǔ)言)、數(shù)學(xué)公式、說(shuō)明文本、圖形圖像和可視化內(nèi)容的文檔。由于這也許是初學(xué)者獲得Python經(jīng)驗(yàn)的最簡(jiǎn)單的軟件應(yīng)用程序,因此本書(shū)的大部分內(nèi)容已經(jīng)為筆記本用戶(hù)重寫(xiě)了教學(xué)內(nèi)容。特別是第2版的附錄A中還包含了一個(gè)關(guān)于如何使用筆記本的啟發(fā)式教程,并且已經(jīng)擴(kuò)展式地重寫(xiě)了第2章的內(nèi)容以展示其特性。書(shū)中的所有內(nèi)容現(xiàn)在都給出了適當(dāng)?shù)膽?yīng)用實(shí)例。例如,允許SymPy生成其他計(jì)算機(jī)代數(shù)系統(tǒng)無(wú)法比擬的代數(shù)表達(dá)式。
這種變化也影響了交互式圖形和視覺(jué)動(dòng)畫(huà)領(lǐng)域。之所以有這種變化的需求,是因?yàn)闃?biāo)準(zhǔn)Python的二維圖形包Matplotlib難以生成與平臺(tái)無(wú)關(guān)的結(jié)果。實(shí)際上,由于“改進(jìn)”的軟件升級(jí),第1版中用于即時(shí)屏幕動(dòng)畫(huà)的代碼不再有效。然而,筆記本的概念則提供了一個(gè)微妙的解決方案來(lái)破解這一僵局;叵胍幌,筆記本窗口是瀏覽器窗口,它使用現(xiàn)代HTML圖形。第6章介紹了筆記本概念所帶來(lái)的益處。
最后一處改進(jìn)是,除了本書(shū)中列出的最普通的代碼片段之外,所有代碼片段現(xiàn)在都以電子文檔形式提供(當(dāng)然采用筆記本文件格式),而網(wǎng)站中則同時(shí)包括HTML和PDF版本,具體參見(jiàn)1.2節(jié)。電子文檔中不包括代碼前后的說(shuō)明文本。為了讀取代碼說(shuō)明文本,讀者必須閱讀本書(shū)(無(wú)論是紙質(zhì)版還是電子格式)!
編者按:John在第2版完成后不久就不幸去世了,他的同事、朋友和家人都非常想念他,尤其是他的“Python寡婦”。
第1版前言
Python for Scientists, Second Edition
我借助計(jì)算機(jī)從事科學(xué)研究已有40多年了。在這期間,計(jì)算機(jī)硬件越來(lái)越便宜、越來(lái)越快速,并且越來(lái)越強(qiáng)大。然而,與科技工作者相關(guān)的軟件則變得越來(lái)越復(fù)雜。我最喜歡的關(guān)于Fortran90和C++的教科書(shū)分別是1200頁(yè)和1600頁(yè)。同時(shí)我們還需要閱讀關(guān)于數(shù)學(xué)庫(kù)和圖形包的文檔。對(duì)于想沿著這條路走下去的新手,將不得不投入大量的時(shí)間和精力,以便寫(xiě)出有用的程序。這導(dǎo)致了“科學(xué)計(jì)算軟件包”的出現(xiàn),比如Matlab?或Mathematica?,它們避免了編譯語(yǔ)言、獨(dú)立數(shù)學(xué)庫(kù)和圖形包的復(fù)雜性。我一直在使用這些科學(xué)計(jì)算軟件包,發(fā)現(xiàn)它們可以非常方便地用于執(zhí)行開(kāi)發(fā)人員所設(shè)想的任務(wù)。然而,我也發(fā)現(xiàn)它們很難再擴(kuò)展,因此我需要尋找其他方法。
若干年前,一位計(jì)算機(jī)科學(xué)領(lǐng)域的同事建議我研究一下Python。那時(shí),Python就已經(jīng)具有很大的潛力了,但其實(shí)現(xiàn)卻非常脆弱。然而,正因?yàn)槠涿赓M(fèi)且開(kāi)源,所以一直吸引著一支非常有效的開(kāi)發(fā)隊(duì)伍。最近,他們努力的成果得到了協(xié)調(diào)和統(tǒng)一,從而形成了一個(gè)強(qiáng)大的軟件包,該軟件包由一種小型的核心語(yǔ)言和許多外圍附加庫(kù)或者模塊組成。其中一組可以而且確實(shí)復(fù)制了傳統(tǒng)科學(xué)計(jì)算包的功能。更重要的是,如果能夠熟練并睿智地使用Python及其模塊,就完全可以實(shí)現(xiàn)通常由Fortran、C等專(zhuān)業(yè)程序員勝任的大項(xiàng)目。雖然運(yùn)行速度略有損失,但可以由大大縮短的開(kāi)發(fā)時(shí)間來(lái)超額補(bǔ)償。本書(shū)的目的就是向科技工作者介紹如何利用這種相對(duì)未知的資源。
大多數(shù)科學(xué)家對(duì)計(jì)算機(jī)都有一定的熟悉程度和編程意識(shí)(盡管不一定熟悉Python),我將充分考慮這種因素。因此,與大多數(shù)旨在“教”一門(mén)語(yǔ)言的書(shū)籍不同,本書(shū)不僅僅是討論參考手冊(cè)中的內(nèi)容。Python具有很多強(qiáng)大但不為人知的方面,相對(duì)于那些廣為人知的內(nèi)容,這些方面需要更多的解釋。特別是,如果在本書(shū)中遇到“初學(xué)者”或者“粗心大意”的詞句,那么表示在說(shuō)明文檔中沒(méi)有明確指出的關(guān)鍵點(diǎn),至少作者本人在該點(diǎn)上犯了錯(cuò)誤。
本書(shū)的前七章以及附錄A,涵蓋了科技工作者為開(kāi)始有效地使用Python而需要知道的幾乎所有知識(shí)。本書(shū)的編輯和一些評(píng)閱專(zhuān)家建議我在后半部分專(zhuān)注于討論某一領(lǐng)域的問(wèn)題。但這可能會(huì)導(dǎo)致一系列書(shū)籍的產(chǎn)生,“面向生物化學(xué)家的Python”“面向晶體學(xué)家的Python”等,而且所有這些教科書(shū)的前半部分內(nèi)容都相同。我選擇只涉及三個(gè)主題,但是本書(shū)的內(nèi)容也適用于許多更廣泛的領(lǐng)域。第8章涵蓋四種截然不同的常微分方程,并且展示了如何使用各種相關(guān)的“黑盒”,這些“黑盒”通常是那些實(shí)際使用且可信的Fortran代碼的Python封裝。第9章雖然表面上講的是關(guān)于演化偏微分方程的偽譜方法,但實(shí)際上涵蓋了一個(gè)對(duì)許多科學(xué)家都非常有用的主題,即如何在不理解Fortran語(yǔ)言的情況下,在Python語(yǔ)言中以類(lèi)似Fortran的速度來(lái)重用那些通常用Fortran77編寫(xiě)的遺留代碼。最后一章討論通過(guò)多重網(wǎng)格求解非常大的線性
---作者簡(jiǎn)介---
約翰·M. 斯圖爾特(John M. Stewart) 劍橋大學(xué)應(yīng)用數(shù)學(xué)和理論物理系榮譽(yù)退休教授,國(guó)王學(xué)院終身研究員,于2016年逝世。40多年來(lái),他一直是相對(duì)論與引力小組的核心成員,引領(lǐng)著關(guān)于相對(duì)論動(dòng)力學(xué)理論、宇宙微擾理論和數(shù)值相對(duì)論的研究工作。他的著作包括《Non-equilibrium Relativistic Kinetic Theory》(1971)和《Advanced General Relativity》(1991)。
---譯者簡(jiǎn)介---
江紅 華東師范大學(xué)副教授,博士。1994年畢業(yè)于復(fù)旦大學(xué)計(jì)算機(jī)系。曾榮獲上海市教學(xué)成果一等獎(jiǎng)、華東師范大學(xué)教學(xué)成果一等獎(jiǎng)、華東師范大學(xué)任課教師獎(jiǎng)等榮譽(yù)。
余青松 華東師范大學(xué)高級(jí)工程師。1990年畢業(yè)于華東師范大學(xué)并留校任教。編著計(jì)算機(jī)相關(guān)教材30余本,在國(guó)內(nèi)外學(xué)術(shù)期刊和學(xué)術(shù)會(huì)議上發(fā)表科技論文近百篇。
出版者的話(huà)
譯者序
第2版前言
第1版前言
第1章 導(dǎo)論1
1.1 科學(xué)計(jì)算軟件1
1.2 本書(shū)的規(guī)劃3
1.3 Python能與編譯語(yǔ)言競(jìng)爭(zhēng)嗎7
1.4 本書(shū)的局限性8
1.5 安裝Python和附加軟件包8
第2章 IPython入門(mén)9
2.1 Tab鍵代碼自動(dòng)補(bǔ)全功能9
2.2 自省9
2.3 歷史命令11
2.4 魔法命令11
2.5 IPython實(shí)踐:擴(kuò)展示例13
2.5.1 使用IPython終端的工作流程14
2.5.2 使用IPython筆記本的工作流程14
第3章 Python簡(jiǎn)明教程18
3.1 輸入Python代碼18
3.2 對(duì)象和標(biāo)識(shí)符19
3.3 數(shù)值類(lèi)型20
3.3.1 整型20
3.3.2 實(shí)數(shù)21
3.3.3 布爾值22
3.3.4 復(fù)數(shù)23
3.4 名稱(chēng)空間和模塊23
3.5 容器對(duì)象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語(yǔ)句30
3.7 循環(huán)結(jié)構(gòu)31
3.7.1 Python的for循環(huán)結(jié)構(gòu)31
3.7.2 Python的continue語(yǔ)句32
3.7.3 Python的break語(yǔ)句33
3.7.4 列表解析33
3.7.5 Python的while循環(huán)34
3.8 函數(shù)35
3.8.1 語(yǔ)法和作用范圍35
3.8.2 位置參數(shù)38
3.8.3 關(guān)鍵字參數(shù)38
3.8.4 可變數(shù)量的位置參數(shù)38
3.8.5 可變數(shù)量的關(guān)鍵字參數(shù)39
3.8.6 Python的輸入/輸出函數(shù)39
3.8.7 Python的print函數(shù)40
3.8.8 匿名函數(shù)42
3.9 Python類(lèi)簡(jiǎn)介42
3.10 Python程序結(jié)構(gòu)44
3.11 素?cái)?shù):實(shí)用示例45
第4章 NumPy49
4.1 一維數(shù)組50
4.1.1 初始構(gòu)造函數(shù)51
4.1.2 “相似”構(gòu)造函數(shù)52
4.1.3 向量的算術(shù)運(yùn)算52
4.1.4 通用函數(shù)54
4.1.5 向量的邏輯運(yùn)算符55
4.2 二維數(shù)組58
4.2.1 廣播58
4.2.2 初始構(gòu)造函數(shù)59
4.2.3 “相似”構(gòu)造函數(shù)61
4.2.4 數(shù)組的運(yùn)算和通用函數(shù)61
4.3 多維數(shù)組62
4.4 內(nèi)部輸入和輸出62
4.4.1 分散的輸出和輸入62
4.4.2 NumPy文本文件的輸出和輸入64
4.4.3 NumPy二進(jìn)制文件的輸出和輸入65
4.5 外部輸入和輸出65
4.5.1 小規(guī)模數(shù)據(jù)65
4.5.2 大規(guī)模數(shù)據(jù)66
4.6 其他通用函數(shù)66
4.6.1 最大值和最小值66
4.6.2 求和與乘積67
4.6.3 簡(jiǎn)單統(tǒng)計(jì)67
4.7 多項(xiàng)式67
4.7.1 根據(jù)數(shù)據(jù)求多項(xiàng)式系數(shù)68
4.7.2 根據(jù)多項(xiàng)式系數(shù)求數(shù)據(jù)68
4.7.3 系數(shù)形式的多項(xiàng)式運(yùn)算68
4.8 線性代數(shù)68
4.8.1 矩陣的基本運(yùn)算68
4.8.2 矩陣的特殊運(yùn)算70
4.8.3 求解線性方程組71
4.9 有關(guān)NumPy的更多內(nèi)容和進(jìn)一步學(xué)習(xí)71
4.9.1 SciPy71
4.9.2 SciKits72
第5章 二維圖形73
5.1 概述73
5.2 繪圖入門(mén):簡(jiǎn)單圖形74
5.2.1 前端74
5.2.2 后端74
5.2.3 一個(gè)簡(jiǎn)單示例圖形75
5.2.4 交互式操作77
5.3 面向?qū)ο蟮腗atplotlib77
5.4 笛卡兒坐標(biāo)繪圖78
5.4.1 Matplotlib繪圖函數(shù)78
5.4.2 曲線樣式79
5.4.3 標(biāo)記樣式79
5.4.4 坐標(biāo)軸、網(wǎng)格線、標(biāo)簽和標(biāo)題80
5.4.5 一個(gè)稍復(fù)雜的示例:傅里葉級(jí)數(shù)的部分和81
5.5 極坐標(biāo)繪圖82
5.6 誤差條83
5.7 文本與注釋84
5.8 顯示數(shù)學(xué)公式84
5.8.1 非LaTeX用戶(hù)85
5.8.2 LaTeX用戶(hù)86
5.8.3 LaTeX用戶(hù)的替代方案86
5.9 等高線圖87
5.10 復(fù)合圖形89
5.10.1 多個(gè)圖形89
5.10.2 多個(gè)繪圖90
5.11 曼德?tīng)柌剂_特集:實(shí)用示例91
第6章 多維圖形96
6.1 概述96
6.2 降維到二維96
6.3 可視化軟件97
6.4 可視化任務(wù)示例97
6.5 孤立波的可視化98
6.5.1 交互式操作任務(wù)98
6.5.2 動(dòng)畫(huà)任務(wù)100
6.5.3 電影任務(wù)101
6.6 三維對(duì)象的可視化102
6.7 三維曲線103
6.7.1 使用mplot3d可視化曲線103
6.7.2 使用mlab可視化曲線105
6.8 簡(jiǎn)單曲面106
6.8.1 使用mplot3d可視化簡(jiǎn)單曲面106
6.8.2 使用mlab可視化簡(jiǎn)單曲面108
6.9 參數(shù)化定義的曲面109
6.9.1 使用mplot3d可視化Enneper曲面109
6.9.2 使用mlab可視化Enneper曲面110
6.10 居里葉集的三維可視化111
第7章 SymPy:一個(gè)計(jì)算機(jī)代數(shù)系統(tǒng)113
7.1 計(jì)算機(jī)代數(shù)系統(tǒng)113
7.2 符號(hào)和函數(shù)114
7.3 Python和SymPy之間的轉(zhuǎn)換116
7.4 矩陣和向量117
7.5 一些初等微積分118
7.5.1 微分118
7.5.2 積分118
7.5.3 級(jí)數(shù)與極限119
7.6 等式、符號(hào)等式和化簡(jiǎn)120
7.7 方程求解121
7.7.1 單變量方程122
7.7.2 具有多個(gè)自變量的線性方程組122
7.7.3 更一般的方程組124
7.8 常微分方程的求解125
7.9 在SymPy中繪圖127
第8章 常微分方程132
8.1 初值問(wèn)題132
8.2 基本思想132
8.3 odeint函數(shù)135
8.3.1 理論背景135
8.3.2 諧波振蕩器136
8.3.3 范德波爾振蕩器139
8.3.4 洛倫茲方程140
8.4 兩點(diǎn)邊值問(wèn)題142
8.4.1 概述142
8.4.2 邊值問(wèn)題的公式化143
8.4.3 簡(jiǎn)單示例144
8.4.4 線性特征值問(wèn)題145
8.4.5 非線性邊值問(wèn)題147
8.5 延遲微分方程151
8.5.1 模型方程151
8.5.2 更一般的方程及其數(shù)值解152
8.5.3 邏輯斯諦方程153
8.5.4 麥克-格拉斯方程155
8.6 隨機(jī)微分方程157
8.6.1 維納過(guò)程158
8.6.2 It?微積分158
8.6.3 It?與斯特拉托諾維奇隨機(jī)積分162
8.6.4 隨機(jī)微分方程的數(shù)值求解162
第9章 偏微分方程:偽譜方法169
9.1 初邊值