本書(shū)從編程基礎(chǔ)開(kāi)始講解SageMath,內(nèi)容涵蓋Python、Cython和C 語(yǔ)言等多種前置技術(shù),講解全面,可以當(dāng)作入門書(shū)使用。此外,本書(shū)更以數(shù)學(xué)思維講解SageMath,按照群、環(huán)和域的分類提供了大量的實(shí)際用例,使讀者可以輕松地對(duì)照書(shū)中的用例解決理工類學(xué)科的問(wèn)題,可以當(dāng)作工具書(shū)使用。
第1章和第2章講解了SageMath的概述內(nèi)容和安裝相關(guān)的知識(shí),讀者可以根據(jù)自己的硬件環(huán)境確定自己的安裝方式。
SageMath本身就是一款非常優(yōu)秀的科學(xué)計(jì)算軟件,本書(shū)提供了其豐富的用例,并且覆蓋面廣,內(nèi)容涵蓋多個(gè)領(lǐng)域,適合初學(xué)者和研究人員使用。
第3章講解了運(yùn)算符與輸入/輸出。由于SageMath是一款面向科學(xué)計(jì)算的編程工具,所以SageMath支持更多的運(yùn)算符號(hào)(如左除號(hào)),這對(duì)沒(méi)有進(jìn)入科學(xué)計(jì)算領(lǐng)域的程序員而言可以說(shuō)是一個(gè)不小的挑戰(zhàn),而對(duì)于輸入/輸出而言,SageMath依托于Python的擴(kuò)展性,擁有十余種輸入/輸出方式,用戶可以在合適的場(chǎng)合中調(diào)用適當(dāng)?shù)妮斎?輸出函數(shù)。
第4章講解了基本數(shù)據(jù)結(jié)構(gòu)。本章主要講解在Python級(jí)別的數(shù)據(jù)結(jié)構(gòu),對(duì)于每種數(shù)據(jù)結(jié)構(gòu)更配有相應(yīng)的功能函數(shù),讀者可以配合不同種類的數(shù)據(jù)結(jié)構(gòu)快速學(xué)會(huì)SageMath的基本數(shù)據(jù)處理。
第5章講解了如何編寫(xiě)腳本。腳本有多種運(yùn)行方式,主要分為在SageMath軟件內(nèi)運(yùn)行和在操作系統(tǒng)的終端直接運(yùn)行,更有spyx等需要編譯的腳本,運(yùn)行方式多樣,讀者可以根據(jù)實(shí)際的應(yīng)用場(chǎng)景,使用不同的編寫(xiě)方式編寫(xiě)相應(yīng)的腳本。腳本還支持傳參,因此可以在運(yùn)行腳本時(shí)增加相應(yīng)的參數(shù),編寫(xiě)功能更豐富的腳本。
第6章講解了如何編寫(xiě)控制語(yǔ)句?刂普Z(yǔ)句決定了程序的運(yùn)行流程,讀者可以理解判斷語(yǔ)句和循環(huán)語(yǔ)句等控制語(yǔ)句的編寫(xiě)方式。
第7章講解了函數(shù)的相關(guān)知識(shí)。本章的順序從創(chuàng)建函數(shù)開(kāi)始,確保讀者可以設(shè)計(jì)一個(gè)可用的函數(shù)。本章還包含函數(shù)的設(shè)計(jì)方法,真正教會(huì)讀者如何設(shè)計(jì)函數(shù)邏輯。
第8章講解了類的相關(guān)知識(shí),讀者可以學(xué)會(huì)如何創(chuàng)建并使用類。本章幫助讀者使用面向?qū)ο蟮姆绞竭M(jìn)行程序設(shè)計(jì)。本章還講解了類的繼承和方法重載,這些內(nèi)容將幫助讀者創(chuàng)建復(fù)用性強(qiáng)的類,使程序的可維護(hù)性進(jìn)一步增強(qiáng)。
第9~13章講解了常用向量、常用矩陣、常用群、常用環(huán)和常用域,讀者可以根據(jù)數(shù)學(xué)學(xué)科的思維學(xué)習(xí)這幾章,這也和SageMath的設(shè)計(jì)理念是一致的。讀者可以根據(jù)數(shù)學(xué)中的變量特性直接創(chuàng)建對(duì)應(yīng)的SageMath變量,用這種方式即可方便地使用相應(yīng)的算法。
第14章講解了繪圖相關(guān)知識(shí)。本章講解各種繪圖函數(shù)的用法。SageMath還支持先進(jìn)的three.js三維繪圖庫(kù),可以輕松地實(shí)現(xiàn)三維圖像的可視化,并且具有優(yōu)秀的顯示效果。
第15章講解了SageMath用例,主要講解理工科的實(shí)際用例,配合實(shí)際的代碼,方便讀者快速上手對(duì)應(yīng)領(lǐng)域內(nèi)的科學(xué)計(jì)算知識(shí)。
掃描目錄上方的二維碼可下載本書(shū)源碼。
限于本人的水平和經(jīng)驗(yàn),書(shū)中難免存在疏漏之處,懇請(qǐng)專家與讀者批評(píng)指正。
于紅博2025年1月于哈爾濱
第1章緒論
第2章SageMath簡(jiǎn)介
2.1SageMath的起源
2.2SageMath的安裝方式
2.2.1源碼安裝
2.2.2在Linux系統(tǒng)中安裝SageMath軟件
2.2.3在Windows系統(tǒng)中安裝SageMath軟件
2.2.4在WSL中安裝SageMath軟件
2.2.5在Cygwin中安裝SageMath軟件
2.2.6在macOS系統(tǒng)中安裝SageMath軟件
2.2.7使用condaforge安裝SageMath軟件
2.2.8使用Mambaforge安裝SageMath軟件
2.2.9可以編譯也可以自行安裝的外部軟件
2.3SageMath的用戶界面
2.3.1SageMath的終端
2.3.2在Jupyter中運(yùn)行SageMath代碼
第3章運(yùn)算符與輸入/輸出
3.1運(yùn)算符
3.1.1布爾運(yùn)算符
3.1.2比較運(yùn)算符
3.1.3算術(shù)運(yùn)算符
3.1.4位運(yùn)算符
3.1.5賦值運(yùn)算符
3.1.6賦值表達(dá)式(海象運(yùn)算符)
3.1.7條件表達(dá)式(三元運(yùn)算符)
3.1.8Lambda表達(dá)式
3.1.9其他符號(hào)
3.1.10運(yùn)算符的優(yōu)先級(jí)
3.2終端輸入/輸出
3.2.1引用終端的方式
3.2.2終端輸入
3.2.3輸出到文本流
3.2.4存取變量
3.2.5存取整個(gè)會(huì)話
3.3格式化輸入/輸出
3.3.1printf風(fēng)格的格式化字符串
3.3.2textwrap
3.3.3Template
3.3.4f字符串
3.3.5str.format()
3.3.6手動(dòng)格式化
3.3.7以LaTeX格式輸出
3.3.8以數(shù)學(xué)公式寫(xiě)法輸出
3.3.9Jupyter輸出
3.3.10MathJax
3.4文件輸入/輸出
3.4.1文件輸入流
3.4.2打開(kāi)文件
3.4.3文件和with關(guān)鍵字
3.4.4文件對(duì)象的方法
3.5序列化和反序列化
3.5.1JSON
3.5.2pickle
3.5.3marshal
第4章基本數(shù)據(jù)結(jié)構(gòu)
4.1布爾值
4.2字符串
4.3二進(jìn)制數(shù)據(jù)
4.3.1二進(jìn)制字符串
4.3.2二進(jìn)制列表
4.3.3memoryview
4.4序列
4.4.1列表
4.4.2元組
4.4.3范圍
4.5集合
4.6字典
4.7迭代器
4.8向量
4.9矩陣
4.10群
4.11環(huán)
4.12域
第5章腳本
5.1Sage文件
5.2spyx文件
5.3可獨(dú)立運(yùn)行的腳本
5.4腳本傳參
第6章控制語(yǔ)句
6.1判斷語(yǔ)句
6.2循環(huán)語(yǔ)句
6.3跳出語(yǔ)句
6.4繼續(xù)語(yǔ)句
6.5空語(yǔ)句
6.6匹配語(yǔ)句
第7章函數(shù)
7.1創(chuàng)建函數(shù)
7.2函數(shù)的作用域
7.3訪問(wèn)函數(shù)
7.4調(diào)用函數(shù)
7.5函數(shù)的返回值
7.6方法
7.7參數(shù)
7.7.1指定參數(shù)的默認(rèn)值
7.7.2關(guān)鍵字參數(shù)
7.7.3傳參限制
7.7.4可變參數(shù)列表
7.7.5參數(shù)解包
7.8Lambda函數(shù)
7.9文檔字符串
第8章類
8.1創(chuàng)建類
8.2類的作用域
8.3創(chuàng)建對(duì)象
8.4類變量和實(shí)例變量
8.5方法
8.6單繼承
8.7多繼承
8.8方法重寫(xiě)
8.9繼承判斷
8.10名稱篡改
8.11super
8.12裝飾器
8.12.1函數(shù)裝飾器
8.12.2類裝飾器
8.12.3常用的裝飾器
第9章常用向量
9.1整數(shù)向量
9.2實(shí)數(shù)double向量
9.3復(fù)數(shù)double向量
9.4二模向量
9.5n模向量
9.6有理數(shù)向量
第10章常用矩陣
10.1符號(hào)矩陣
10.2稠密一元多項(xiàng)式矩陣
10.3稠密多元多項(xiàng)式矩陣
10.4稠密整數(shù)矩陣
10.5稀疏整數(shù)矩陣
10.6稠密有理數(shù)矩陣
10.7稀疏有理數(shù)矩陣
10.8稠密double矩陣
10.9稠密二模矩陣
10.10稠密n模矩陣
10.11稀疏n模矩陣
10.12GAP矩陣
第11章常用群
11.1阿貝爾群
11.2有限群
11.3Artin群
11.4Artin群中的元素
11.5Braid群
11.6Braid群中的元素
11.7三階Braid群
11.8三階Braid群中的元素
11.9有限呈示群
11.10有限呈示群中的元素
11.11自由群
11.12自由群中的元素
11.13伽羅瓦群
11.14交換群
11.15交換群中的元素
11.16增長(zhǎng)群
11.17一元增長(zhǎng)群
11.18一元增長(zhǎng)群中的元素
11.19指數(shù)增長(zhǎng)群
11.20指數(shù)增長(zhǎng)群中的元素
11.21一元非增長(zhǎng)群
11.22一元非增長(zhǎng)群中的元素
11.23指數(shù)非增長(zhǎng)群
11.24指數(shù)非增長(zhǎng)群中的元素
11.25帶索引的群
11.26帶索引的自由群
11.27帶索引的自由阿貝爾群
第12章常用環(huán)
12.1無(wú)窮大和無(wú)限環(huán)
12.1.1無(wú)窮大
12.1.2正無(wú)窮大
12.1.3負(fù)無(wú)窮大
12.1.4無(wú)限數(shù)
12.1.5有限數(shù)
12.1.6區(qū)分正負(fù)的有限數(shù)
12.1.7無(wú)限環(huán)
12.1.8無(wú)窮大環(huán)
12.2漸進(jìn)環(huán)和漸進(jìn)展開(kāi)
12.2.1漸進(jìn)環(huán)
12.2.2漸進(jìn)展開(kāi)
12.3布爾多項(xiàng)式環(huán)和布爾重構(gòu)
12.3.1布爾多項(xiàng)式環(huán)
12.3.2一元布爾同構(gòu)
12.3.3布爾單項(xiàng)式
12.3.4布爾多項(xiàng)式
12.3.5布爾多項(xiàng)式的理想
12.4C有限序列環(huán)和C有限序列
12.4.1C有限序列環(huán)
12.4.2C有限序列
12.5無(wú)窮多項(xiàng)式環(huán)
12.5.1稀疏無(wú)窮多項(xiàng)式環(huán)
12.5.2稀疏無(wú)窮多項(xiàng)式
12.5.3稠密無(wú)窮多項(xiàng)式環(huán)
12.5.4稠密無(wú)窮多項(xiàng)式
12.6洛朗多項(xiàng)式環(huán)和洛朗多項(xiàng)式
12.6.1一元洛朗多項(xiàng)式環(huán)
12.6.2多元洛朗多項(xiàng)式環(huán)
12.6.3洛朗多項(xiàng)式
12.6.4一元洛朗多項(xiàng)式
12.6.5多元洛朗多項(xiàng)式
12.7洛朗級(jí)數(shù)環(huán)和洛朗級(jí)數(shù)
12.7.1洛朗級(jí)數(shù)環(huán)
12.7.2洛朗級(jí)數(shù)
12.8多項(xiàng)式環(huán)
12.8.1稀疏多項(xiàng)式
12.8.2用FLINT庫(kù)實(shí)現(xiàn)的稠密整數(shù)多項(xiàng)式
12.8.3用NTL庫(kù)實(shí)現(xiàn)的稠密整數(shù)多項(xiàng)式
12.8.4用FLINT庫(kù)實(shí)現(xiàn)的稠密有理數(shù)多項(xiàng)式
12.8.5用FLINT庫(kù)實(shí)現(xiàn)的n模多項(xiàng)式
12.8.6用FLINT庫(kù)實(shí)現(xiàn)的稠密實(shí)數(shù)多項(xiàng)式
12.8.7交換環(huán)上的多項(xiàng)式環(huán)
12.8.8一元多項(xiàng)式環(huán)
12.8.9一元多項(xiàng)式
12.8.10用Arb庫(kù)實(shí)現(xiàn)的一元多項(xiàng)式
12.8.11多元多項(xiàng)式環(huán)
12.8.12多元多項(xiàng)式
12.8.13用libsingular庫(kù)實(shí)現(xiàn)的多元多項(xiàng)式環(huán)
12.8.14用libsingular庫(kù)實(shí)現(xiàn)的多元多項(xiàng)式
12.9多項(xiàng)式商環(huán)及其元素
12.9.1多項(xiàng)式商環(huán)
12.9.2多項(xiàng)式商環(huán)的元素
12.10冪級(jí)數(shù)環(huán)和冪級(jí)數(shù)
12.10.1一元冪級(jí)數(shù)環(huán)
12.10.2一元冪級(jí)數(shù)
12.10.3多元冪級(jí)數(shù)環(huán)
12.10.4多元冪級(jí)數(shù)
12.10.5基于PARI庫(kù)的冪級(jí)數(shù)
12.10.6冪級(jí)數(shù)多項(xiàng)式
12.11商環(huán)及其元素
12.11.1商環(huán)
12.11.2商環(huán)元素
第13章常用域
13.1有限域
13.2代數(shù)閉包有限域及其元素
13.2.1代數(shù)閉包有限域
13.2.2代數(shù)閉包有限域中的元素
13.3代數(shù)數(shù)域和代數(shù)數(shù)
13.3.1代數(shù)數(shù)域
13.3.2代數(shù)數(shù)
13.3.3代數(shù)實(shí)數(shù)域
13.3.4代數(shù)實(shí)數(shù)
13.4復(fù)數(shù)域和復(fù)數(shù)
13.4.1復(fù)數(shù)域
13.4.2復(fù)數(shù)
13.4.3復(fù)數(shù)double域
13.4.4double復(fù)數(shù)
13.4.5復(fù)數(shù)球域
13.4.6復(fù)數(shù)球
13.4.7復(fù)數(shù)區(qū)間域
13.4.8復(fù)數(shù)區(qū)間
13.4.9基于MPC庫(kù)的復(fù)數(shù)域
13.4.10基于MPC庫(kù)的復(fù)數(shù)
13.5分式域和分式
13.5.1分式域
13.5.2分式
13.5.3一元多項(xiàng)式環(huán)上的分式域
13.5.4一元多項(xiàng)式環(huán)上的分式
13.5.5FpT分式域上的分式
13.6函數(shù)域及其元素
13.6.1函數(shù)域
13.6.2函數(shù)域中的元素
13.6.3有理數(shù)域上的函數(shù)域
13.6.4有理數(shù)域上的函數(shù)域中的元素
13.7理想域
13.7.1理想
13.7.2主理想
13.7.3整數(shù)環(huán)的主理想
13.8數(shù)域
13.8.1數(shù)域的基類
13.8.2數(shù)域中的元素
13.8.3絕對(duì)數(shù)域
13.8.4絕對(duì)數(shù)域中的元素
13.8.5相對(duì)數(shù)域
13.8.6相對(duì)數(shù)域中的元素
13.8.7分圓域
13.8.8二次域
13.8.9分圓域或二次域中的元素
13.9有理數(shù)域和有理數(shù)
13.9.1有理數(shù)域
13.9.2有理數(shù)
13.10懶惰數(shù)域
13.10.1懶惰實(shí)數(shù)域
13.10.2懶惰復(fù)數(shù)域
13.10.3懶惰數(shù)
13.11實(shí)數(shù)域和實(shí)數(shù)
13.11.1實(shí)數(shù)域
13.11.2實(shí)數(shù)
13.11.3實(shí)數(shù)double域
13.11.4double實(shí)數(shù)
13.11.5實(shí)數(shù)球域
13.11.6實(shí)數(shù)球
13.11.7實(shí)數(shù)區(qū)間域
13.11.8實(shí)數(shù)區(qū)間
13.12整數(shù)域和整數(shù)
13.12.1整數(shù)域
13.12.2整數(shù)
13.13p進(jìn)數(shù)域
13.13.1p進(jìn)數(shù)域的基類
13.13.2整數(shù)環(huán)上的p進(jìn)數(shù)域
13.13.3有理數(shù)環(huán)上的p進(jìn)數(shù)域
13.13.4p進(jìn)數(shù)
第14章繪圖
14.1圖形對(duì)象
14.1.1設(shè)置圖例選項(xiàng)
14.1.2顯示圖片
14.1.3保存圖片
14.1.4圖形對(duì)象內(nèi)插
14.2圖元
14.2.1圓弧
14.2.2箭頭
14.2.3貝塞爾路徑
14.2.4圓
14.2.5橢圓
14.2.6雙曲弧線
14.2.7雙曲多邊形
14.2.8雙曲三角形
14.2.9規(guī)則的雙曲多邊形
14.2.10直線
14.2.11點(diǎn)
14.2.12多邊形
14.3顏色
14.4點(diǎn)標(biāo)記
14.5線型
14.6函數(shù)圖像
14.6.1復(fù)數(shù)域中的函數(shù)圖像
14.6.2隱函數(shù)圖像
14.6.3參數(shù)化的二維圖像
14.6.4極坐標(biāo)圖像
14.6.5對(duì)數(shù)坐標(biāo)系的函數(shù)圖像
14.6.6x軸為對(duì)數(shù)坐標(biāo)系,y軸為線性坐標(biāo)系的函數(shù)圖像
14.6.7x軸為線性坐標(biāo)系,y軸為對(duì)數(shù)坐標(biāo)系的函數(shù)圖像
14.6.8球坐標(biāo)系的三維圖像
14.6.9柱坐標(biāo)系的三維圖像
14.6.10旋轉(zhuǎn)曲線三維圖像
14.7填充選項(xiàng)
14.8數(shù)據(jù)圖像
14.8.1對(duì)數(shù)坐標(biāo)系的數(shù)據(jù)圖像
14.8.2x軸為對(duì)數(shù)坐標(biāo)系,y軸為線性坐標(biāo)系的數(shù)據(jù)圖像
14.8.3x軸為線性坐標(biāo)系,y軸為對(duì)數(shù)坐標(biāo)系的數(shù)據(jù)圖像
14.9統(tǒng)計(jì)圖
14.9.1條形圖
14.9.2等高線圖
14.9.3密度圖
14.9.4扇形圖
14.9.5直方圖
14.9.6散點(diǎn)圖
14.9.7階梯圖
14.10函數(shù)區(qū)域
14.11矩陣圖
14.12向量場(chǎng)
14.13斜率場(chǎng)
14.14流線圖
14.15文本
第15章SageMath用例
15.1靜力學(xué)
15.1.1匯交力系
15.1.2空間力系
15.1.3平面一般力系
15.2運(yùn)動(dòng)學(xué)
15.2.1點(diǎn)的運(yùn)動(dòng)學(xué)
15.2.2剛體的基本運(yùn)動(dòng)
15.2.3點(diǎn)的合成運(yùn)動(dòng)
15.3動(dòng)力學(xué)
15.3.1動(dòng)力學(xué)基本方程
15.3.2動(dòng)能定理
15.3.3動(dòng)量定理
15.3.4動(dòng)量矩定理
15.3.5動(dòng)靜法
15.4材料力學(xué)
15.4.1拉伸、壓縮與剪切
15.4.2扭轉(zhuǎn)
15.4.3彎曲內(nèi)力
15.4.4彎曲應(yīng)力
15.4.5應(yīng)力和應(yīng)變分析、強(qiáng)度理論
15.4.6壓桿穩(wěn)定
15.5結(jié)構(gòu)力學(xué)
15.5.1簡(jiǎn)支梁
15.5.2懸臂梁
15.5.3一端簡(jiǎn)支、另一端固定梁
15.5.4兩端固定梁
15.5.5外伸梁