本書從編程基礎(chǔ)開始講解SageMath,內(nèi)容涵蓋Python、Cython和C 語言等多種前置技術(shù),講解全面,可以當作入門書使用。此外,本書更以數(shù)學(xué)思維講解SageMath,按照群、環(huán)和域的分類提供了大量的實際用例,使讀者可以輕松地對照書中的用例解決理工類學(xué)科的問題,可以當作工具書使用。
第1章和第2章講解了SageMath的概述內(nèi)容和安裝相關(guān)的知識,讀者可以根據(jù)自己的硬件環(huán)境確定自己的安裝方式。
SageMath本身就是一款非常優(yōu)秀的科學(xué)計算軟件,本書提供了其豐富的用例,并且覆蓋面廣,內(nèi)容涵蓋多個領(lǐng)域,適合初學(xué)者和研究人員使用。
第3章講解了運算符與輸入/輸出。由于SageMath是一款面向科學(xué)計算的編程工具,所以SageMath支持更多的運算符號(如左除號),這對沒有進入科學(xué)計算領(lǐng)域的程序員而言可以說是一個不小的挑戰(zhàn),而對于輸入/輸出而言,SageMath依托于Python的擴展性,擁有十余種輸入/輸出方式,用戶可以在合適的場合中調(diào)用適當?shù)妮斎?輸出函數(shù)。
第4章講解了基本數(shù)據(jù)結(jié)構(gòu)。本章主要講解在Python級別的數(shù)據(jù)結(jié)構(gòu),對于每種數(shù)據(jù)結(jié)構(gòu)更配有相應(yīng)的功能函數(shù),讀者可以配合不同種類的數(shù)據(jù)結(jié)構(gòu)快速學(xué)會SageMath的基本數(shù)據(jù)處理。
第5章講解了如何編寫腳本。腳本有多種運行方式,主要分為在SageMath軟件內(nèi)運行和在操作系統(tǒng)的終端直接運行,更有spyx等需要編譯的腳本,運行方式多樣,讀者可以根據(jù)實際的應(yīng)用場景,使用不同的編寫方式編寫相應(yīng)的腳本。腳本還支持傳參,因此可以在運行腳本時增加相應(yīng)的參數(shù),編寫功能更豐富的腳本。
第6章講解了如何編寫控制語句?刂普Z句決定了程序的運行流程,讀者可以理解判斷語句和循環(huán)語句等控制語句的編寫方式。
第7章講解了函數(shù)的相關(guān)知識。本章的順序從創(chuàng)建函數(shù)開始,確保讀者可以設(shè)計一個可用的函數(shù)。本章還包含函數(shù)的設(shè)計方法,真正教會讀者如何設(shè)計函數(shù)邏輯。
第8章講解了類的相關(guān)知識,讀者可以學(xué)會如何創(chuàng)建并使用類。本章幫助讀者使用面向?qū)ο蟮姆绞竭M行程序設(shè)計。本章還講解了類的繼承和方法重載,這些內(nèi)容將幫助讀者創(chuàng)建復(fù)用性強的類,使程序的可維護性進一步增強。
第9~13章講解了常用向量、常用矩陣、常用群、常用環(huán)和常用域,讀者可以根據(jù)數(shù)學(xué)學(xué)科的思維學(xué)習(xí)這幾章,這也和SageMath的設(shè)計理念是一致的。讀者可以根據(jù)數(shù)學(xué)中的變量特性直接創(chuàng)建對應(yīng)的SageMath變量,用這種方式即可方便地使用相應(yīng)的算法。
第14章講解了繪圖相關(guān)知識。本章講解各種繪圖函數(shù)的用法。SageMath還支持先進的three.js三維繪圖庫,可以輕松地實現(xiàn)三維圖像的可視化,并且具有優(yōu)秀的顯示效果。
第15章講解了SageMath用例,主要講解理工科的實際用例,配合實際的代碼,方便讀者快速上手對應(yīng)領(lǐng)域內(nèi)的科學(xué)計算知識。
掃描目錄上方的二維碼可下載本書源碼。
限于本人的水平和經(jīng)驗,書中難免存在疏漏之處,懇請專家與讀者批評指正。
于紅博2025年1月于哈爾濱
第1章緒論
第2章SageMath簡介
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中運行SageMath代碼
第3章運算符與輸入/輸出
3.1運算符
3.1.1布爾運算符
3.1.2比較運算符
3.1.3算術(shù)運算符
3.1.4位運算符
3.1.5賦值運算符
3.1.6賦值表達式(海象運算符)
3.1.7條件表達式(三元運算符)
3.1.8Lambda表達式
3.1.9其他符號
3.1.10運算符的優(yōu)先級
3.2終端輸入/輸出
3.2.1引用終端的方式
3.2.2終端輸入
3.2.3輸出到文本流
3.2.4存取變量
3.2.5存取整個會話
3.3格式化輸入/輸出
3.3.1printf風(fēng)格的格式化字符串
3.3.2textwrap
3.3.3Template
3.3.4f字符串
3.3.5str.format()
3.3.6手動格式化
3.3.7以LaTeX格式輸出
3.3.8以數(shù)學(xué)公式寫法輸出
3.3.9Jupyter輸出
3.3.10MathJax
3.4文件輸入/輸出
3.4.1文件輸入流
3.4.2打開文件
3.4.3文件和with關(guān)鍵字
3.4.4文件對象的方法
3.5序列化和反序列化
3.5.1JSON
3.5.2pickle
3.5.3marshal
第4章基本數(shù)據(jù)結(jié)構(gòu)
4.1布爾值
4.2字符串
4.3二進制數(shù)據(jù)
4.3.1二進制字符串
4.3.2二進制列表
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可獨立運行的腳本
5.4腳本傳參
第6章控制語句
6.1判斷語句
6.2循環(huán)語句
6.3跳出語句
6.4繼續(xù)語句
6.5空語句
6.6匹配語句
第7章函數(shù)
7.1創(chuàng)建函數(shù)
7.2函數(shù)的作用域
7.3訪問函數(shù)
7.4調(diào)用函數(shù)
7.5函數(shù)的返回值
7.6方法
7.7參數(shù)
7.7.1指定參數(shù)的默認值
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)建對象
8.4類變量和實例變量
8.5方法
8.6單繼承
8.7多繼承
8.8方法重寫
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ù)double向量
9.3復(fù)數(shù)double向量
9.4二模向量
9.5n模向量
9.6有理數(shù)向量
第10章常用矩陣
10.1符號矩陣
10.2稠密一元多項式矩陣
10.3稠密多元多項式矩陣
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增長群
11.17一元增長群
11.18一元增長群中的元素
11.19指數(shù)增長群
11.20指數(shù)增長群中的元素
11.21一元非增長群
11.22一元非增長群中的元素
11.23指數(shù)非增長群
11.24指數(shù)非增長群中的元素
11.25帶索引的群
11.26帶索引的自由群
11.27帶索引的自由阿貝爾群
第12章常用環(huán)
12.1無窮大和無限環(huán)
12.1.1無窮大
12.1.2正無窮大
12.1.3負無窮大
12.1.4無限數(shù)
12.1.5有限數(shù)
12.1.6區(qū)分正負的有限數(shù)
12.1.7無限環(huán)
12.1.8無窮大環(huán)
12.2漸進環(huán)和漸進展開
12.2.1漸進環(huán)
12.2.2漸進展開
12.3布爾多項式環(huán)和布爾重構(gòu)
12.3.1布爾多項式環(huán)
12.3.2一元布爾同構(gòu)
12.3.3布爾單項式
12.3.4布爾多項式
12.3.5布爾多項式的理想
12.4C有限序列環(huán)和C有限序列
12.4.1C有限序列環(huán)
12.4.2C有限序列
12.5無窮多項式環(huán)
12.5.1稀疏無窮多項式環(huán)
12.5.2稀疏無窮多項式
12.5.3稠密無窮多項式環(huán)
12.5.4稠密無窮多項式
12.6洛朗多項式環(huán)和洛朗多項式
12.6.1一元洛朗多項式環(huán)
12.6.2多元洛朗多項式環(huán)
12.6.3洛朗多項式
12.6.4一元洛朗多項式
12.6.5多元洛朗多項式
12.7洛朗級數(shù)環(huán)和洛朗級數(shù)
12.7.1洛朗級數(shù)環(huán)
12.7.2洛朗級數(shù)
12.8多項式環(huán)
12.8.1稀疏多項式
12.8.2用FLINT庫實現(xiàn)的稠密整數(shù)多項式
12.8.3用NTL庫實現(xiàn)的稠密整數(shù)多項式
12.8.4用FLINT庫實現(xiàn)的稠密有理數(shù)多項式
12.8.5用FLINT庫實現(xiàn)的n模多項式
12.8.6用FLINT庫實現(xiàn)的稠密實數(shù)多項式
12.8.7交換環(huán)上的多項式環(huán)
12.8.8一元多項式環(huán)
12.8.9一元多項式
12.8.10用Arb庫實現(xiàn)的一元多項式
12.8.11多元多項式環(huán)
12.8.12多元多項式
12.8.13用libsingular庫實現(xiàn)的多元多項式環(huán)
12.8.14用libsingular庫實現(xiàn)的多元多項式
12.9多項式商環(huán)及其元素
12.9.1多項式商環(huán)
12.9.2多項式商環(huán)的元素
12.10冪級數(shù)環(huán)和冪級數(shù)
12.10.1一元冪級數(shù)環(huán)
12.10.2一元冪級數(shù)
12.10.3多元冪級數(shù)環(huán)
12.10.4多元冪級數(shù)
12.10.5基于PARI庫的冪級數(shù)
12.10.6冪級數(shù)多項式
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ù)域
13.3.4代數(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庫的復(fù)數(shù)域
13.4.10基于MPC庫的復(fù)數(shù)
13.5分式域和分式
13.5.1分式域
13.5.2分式
13.5.3一元多項式環(huán)上的分式域
13.5.4一元多項式環(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絕對數(shù)域
13.8.4絕對數(shù)域中的元素
13.8.5相對數(shù)域
13.8.6相對數(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ù)域
13.10.2懶惰復(fù)數(shù)域
13.10.3懶惰數(shù)
13.11實數(shù)域和實數(shù)
13.11.1實數(shù)域
13.11.2實數(shù)
13.11.3實數(shù)double域
13.11.4double實數(shù)
13.11.5實數(shù)球域
13.11.6實數(shù)球
13.11.7實數(shù)區(qū)間域
13.11.8實數(shù)區(qū)間
13.12整數(shù)域和整數(shù)
13.12.1整數(shù)域
13.12.2整數(shù)
13.13p進數(shù)域
13.13.1p進數(shù)域的基類
13.13.2整數(shù)環(huán)上的p進數(shù)域
13.13.3有理數(shù)環(huán)上的p進數(shù)域
13.13.4p進數(shù)
第14章繪圖
14.1圖形對象
14.1.1設(shè)置圖例選項
14.1.2顯示圖片
14.1.3保存圖片
14.1.4圖形對象內(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點
14.2.12多邊形
14.3顏色
14.4點標記
14.5線型
14.6函數(shù)圖像
14.6.1復(fù)數(shù)域中的函數(shù)圖像
14.6.2隱函數(shù)圖像
14.6.3參數(shù)化的二維圖像
14.6.4極坐標圖像
14.6.5對數(shù)坐標系的函數(shù)圖像
14.6.6x軸為對數(shù)坐標系,y軸為線性坐標系的函數(shù)圖像
14.6.7x軸為線性坐標系,y軸為對數(shù)坐標系的函數(shù)圖像
14.6.8球坐標系的三維圖像
14.6.9柱坐標系的三維圖像
14.6.10旋轉(zhuǎn)曲線三維圖像
14.7填充選項
14.8數(shù)據(jù)圖像
14.8.1對數(shù)坐標系的數(shù)據(jù)圖像
14.8.2x軸為對數(shù)坐標系,y軸為線性坐標系的數(shù)據(jù)圖像
14.8.3x軸為線性坐標系,y軸為對數(shù)坐標系的數(shù)據(jù)圖像
14.9統(tǒng)計圖
14.9.1條形圖
14.9.2等高線圖
14.9.3密度圖
14.9.4扇形圖
14.9.5直方圖
14.9.6散點圖
14.9.7階梯圖
14.10函數(shù)區(qū)域
14.11矩陣圖
14.12向量場
14.13斜率場
14.14流線圖
14.15文本
第15章SageMath用例
15.1靜力學(xué)
15.1.1匯交力系
15.1.2空間力系
15.1.3平面一般力系
15.2運動學(xué)
15.2.1點的運動學(xué)
15.2.2剛體的基本運動
15.2.3點的合成運動
15.3動力學(xué)
15.3.1動力學(xué)基本方程
15.3.2動能定理
15.3.3動量定理
15.3.4動量矩定理
15.3.5動靜法
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)變分析、強度理論
15.4.6壓桿穩(wěn)定
15.5結(jié)構(gòu)力學(xué)
15.5.1簡支梁
15.5.2懸臂梁
15.5.3一端簡支、另一端固定梁
15.5.4兩端固定梁
15.5.5外伸梁