機械工程師Python程式設計 入門 實戰與進 Hardcore Programming for Mechanical Engineers: Build Engineering Applications from Scratch

Angel Sola Orbaiceta 譯 未止

商品描述

本書是一本專門針對工程相關專業讀者的程式設計類技術圖書,主要介紹如何使用Python來解決工程問題。
書中涵蓋如何編碼幾何基元、讀寫文件、繪製向量圖並製作動畫來展示運算結果,
以及求解大型線性方程組,並在最後整合所有知識,搭建了一個求解桁架結構問題的應用程式。
本書適合任何有一定專業背景並且想透過程式設計來解決工程問題的讀者閱讀,同時適合工程相關專業的學生作為參考。
具有線性代數、平面幾何和物理學的基礎知識,並了解材料力學和數值方法的原理會比較有幫助。

目錄大綱

譯者序
前言

作者簡介
技術評審員簡介
第一分 基礎知識
第1章 Python快速入門 2
1.1 Python和模組 2
1.1.1 Python模組 2
1.1.2 Python 3
1.2 運行文件 3
1.3 導入代碼 3
1.4 用文件字串註解程式碼  7
1.5 Python中的元素集 8
1.5.1 集合 8
1.5.2 元組 9
1.5.3 列表 11
1.5.4 字典 14
1.6 解 15
1.7 小結 16
第2章 兩種程式設計範式 17
2.1 函數式程式設計 17
2.1.1 純函數 17
2.1.2 不可變性 18
2.1.3 lambda函數 19
2.1.4 高函數 20
2.1.5 巢狀函數 21
2.1.6 filter、map與reduce函數 22
2.1.7 列表推導式 26
2.2 物件導向程式設計 27
2.2.1 類 28
2.2.2 魔術方法 33
2.3 型提示 35
2.4 小結 36
第3章 命令列 37
3.1 UNIX和Windows系統的命令列 37
3.2 準備好shell 37
3.2.1 安裝Windows Subsystem forLinux軟體 38
3.2.2 初識shell 38
3.3 文件和目錄 38
3.3.1 移動指令 39
3.3.2 建立檔案和目錄 40
3.3.3 刪除檔案和目錄 41
3.3.4 命令匯總 41
3.3.5 使用Windows Subsystem forLinux 42
3.4 運行Python腳本 43
3.5 給腳本傳遞參數 43
3.6 標準輸入與輸出 44
3.6.1 將輸出重定向到檔案 44
3.6.2 將輸入重新導向為檔案 44
3.7 使用PyCharm自備的Python控制台 45
3.8 小結 47
第二分 二維幾何
第4章 點和向量 50
4.1 比較數字 50
4.2 建立類別:Point 51
4.2.1 計算兩點間的距離 52
4.2.2 加減作 53
4.3 建立類別:Vector 54
4.3.1 向量的加減 55
4.3.2 向量的縮放 56
4.3.3 用向量移動點 56
4.3.4 向量的範數 57
4.3.5 不可變的程式設計 58
4.3.6 方法的命名約定 59
4.3.7 向量的點乘 59
4.3.8 向量的投影 60
4.3.9 向量的乘 61
4.3.10 平行與垂直向量 61
4.3.11 向量的夾角 62
4.3.12 向量的旋轉 63
4.3.13 向量的正弦和餘弦 64
4.4 完善Vector類 65
4.4.1 檢定相等性 65
4.4.2 字串表示 67
4.4.3 向量的工廠函數 68
4.5 單元測試 69
4.5.1 測試距離計算方法 70
4.5.2 測試向量的加減法  72
4.5.3 測試向量的乘法方法 73
4.5.4 測試向量的平行和垂直方法 74
4.5.5 單元測試的三個重要規則 75
4.6 小結 77
第5章 直線和線段 78
5.1 創建類別:Segment 78
5.1.1 線段的方向 79
5.1.2 線段的長度 81
5.1.3 參數t和線段中點 83
5.1.4 計算線段上的近點 88
5.1.5 計算線段與點的短距離 91
5.1.6 計算線段的交點 91
5.1.7 相等和字串表示 94
5.2 創建類別:Line 96
5.3 線段的垂直平分線 100
5.4 小結 101
第6章 多邊形 102
6.1 創建類別:Polygon 102
6.1.1 多邊形的邊 103
6.1.2 多邊形的質心 106
6.1.3 檢定多邊形是否含點 108
6.1.4 多邊形的工廠函數  113
6.1.5 檢定多邊形的相等性 114
6.2 創建類別:Circle 116
6.2.1 檢驗圓是否含點 117
6.2.2 圓的近似多邊形 117
6.2.3 圓的相等性和字串表示 118
6.2.4 圓的工廠函數 120
6.3 創建類別:Rect 121
6.3.1 檢定矩形是否含點 123
6.3.2 檢查矩形是否重疊 123
6.3.3 矩形轉多邊形 127
6.3.4 矩形的相等性檢查 128
6.3.5 矩形的工廠函數 130
6.4 小結 132
第7章 仿射變換 133
7.1 初識仿射變換 133
7.2 創建類別:Affine Transform 137
7.2.1 單元測試:點的變換 137
7.2.2 變換線段與多邊形 138
7.2.3 組合變換 140
7.2.4 逆仿射變換 142
7.2.5 縮放變換 144
7.2.6 旋轉變換 146
7.3 值變換 148
7.3.1 值的型別 148
7.3.2 值的實現 150
7.4 Geom2D的後一步 152
7.4.1 測試文件整理 152
7.4.2 同時執行所有測試檔 152
7.4.3 的統一導入 153
7.5 小結 154
第三分 圖形與模擬
第8章 繪製向量圖 156
8.1 位圖與向量圖 156
8.2 SVG格式 157
8.2.1 視框 158
8.2.2 空間變換 159
8.3 創建:svg 160
8.3.1 範本字串 161
8.3.2 導入範本 162
8.3.3 影像模板 163
8.3.4 屬性 165
8.4 SVG的基元 166
8.4.1 直線 167
8.4.2 矩形 168
8.4.3 圓 169
8.4.4 多邊形 170
8.4.5 多段線 171
8.4.6 文本 172
8.4.7 分組 173
8.4.8 箭頭 174
8.5 基元總結 176
8.6 導入 178
8.7 小結 178
第9章 三點畫圓 179
9.1 應用程式的架構 179
9.2 初始設定 180
9.2.1 創建一個運行配置 181
9.2.2 為什麼要使用運行配置 184
9.3 讀取輸入與設定檔 184
9.3.1 正規表示式 185
9.3.2 正規表示式備忘錄 189
9.3.3 匹配點 189
9.3.4 設定檔 190
9.4 問題模型與解決方法 192
9.5 結果輸出 192
9.5.1 繪製結果圓 193
9.5.2 繪製輸入點 195
9.5.3 代碼 197
9.5.4 翻轉y軸方向 199
9.6 分發應用程式 199
9.6.1 理解問題所在 199
9.6.2 尋找解決方案 201
9.6.3 不用文件作為輸入啟動應用程式 203
9.7 小結 203
第10章 圖形使用者介面與畫布 204
10.1 Tkinter介紹 204
10.1.1 我們的第一個GUI程式 204
10.1.2 畫布 207
10.2 繪製幾何基元 212
10.2.1 畫布的裝飾器類 212
10.2.2 繪製線段 214
10.2.3 繪製多邊形 215
10.2.4 繪製箭頭 217
10.3 小結 220
第11章 動畫、模擬與時間循環 221
11.1 名詞解釋 221
11.1.1 什麼是動畫 221
11.1.2 什麼是系統 222
11.1.3 什麼是模擬 222
11.1.4 什麼是時間循環 223
11.2 我們的第一個動畫 224
11.2.1 初始設定 224
11.2.2 新增幀計數標籤 226
11.2.3 系統更新 227
11.2.4 創建運動 228
11.3 抽象主循環函數 230
11.4 重構模擬程式 232
11.4.1 嘗試不同的多邊形近似圓 233
11.4.2 嘗試不同的仿射變換 234
11.5 模組簡潔化 235
11.6 小結 236
第12章 仿射變換動畫化 237
12.1 應用程式架構與圖示 237
12.2 初始設定 238
12.2.1 建立運行設定檔 239
12.2.2 創建一個bash腳本 239
12.3 讀取設定檔 240
12.4 讀取輸入檔 241
12.4.1 輸入格式化 241
12.4.2 新增輸入範例 242
12.4.3 解析仿射變換 243
12.4.4 解析幾何基元 245
12.5 運行模擬程式 251
12.5.1 建立使用者介面 252
12.5.2 實作模擬邏輯 253
12.5.3 繪製座標軸 255
12.6 小結 259
第四分 方程組
第13章 矩陣與向量 262
13.1 列表初始化 263
13.2 初始設定 264
13.3 向量 264
13.3.1 建立類別:Vector 265
13.3.2 測試Vector類別 268
13.4 矩陣 269
13.4.1 設定矩陣值 270
13.4.2 取得矩陣值 272
13.4.3 縮放矩陣值 273
13.4.4 矩陣相等性 273
13.4.5 測試Matrix類 276
13.5 小結 279
第14章 線性方程組 280
14.1 線性方程組簡介 280
14.2 數值方法 281
14.3 Cholesky分解法 282
14.3.1 LU演算法 282
14.3.2 Cholesky演算法原理 284
14.3.3 因式分解過程演算 285
14.3.4 解答過程演算 286
14.3.5 實作Cholesky演算法 288
14.3.6 整合測試法測試Cholesky演算法 298
14.4 小結 299
第五分 桁架結構
第15章 結構模型 302
15.1 求解結構問題 302
15.2 結構件的內力分析 303
15.2.1 彈性體受外力作用 303
15.2.2 軸向力與剪力 304
15.2.3 彎曲與扭轉力矩 304
15.3 拉伸和壓縮 305
15.3.1 胡克定律 305
15.3.2 應力–應變曲線 306
15.4 平面桁架 307
15.5 二力構件 308
15.6 全局座標中的剛度矩陣 309
15.7 結構的初始模型 311
15.7.1 建立類別:StrNode 312
15.7.2 創建類別:StrBar 315
15.7.3 創建類別:Structure 319
15.7.4 用Python shell創建結構 320
15.8 結構的解模型 321
15.8.1 創建類別:StrNodeSolution 321
15.8.2 創建類別:StrBarSolution 324
15.8.3 創建類別:StructureSolution 330
15.9 小結 334
第16章 模型求解 335
16.1 演算法原理 335
16.1.1 剛度矩陣項的意義 336
16.1.2 結構初始化 336
16.1.3 結構求解的主演算法 337
16.1.4 給結構的自由度編號 338
16.1.5 組合與求解方程組 339
16.1.6 創建解模型 345
16.1.7 代碼匯總 347
16.2 進版單元測試法:測試替代技術 350
16.2.1 測試替代技術介紹 351
16.2.2 unittest.mock 351
16.3 測試StructureSolution類別 356
16.4 測試結構問題求解過程 359
16.5 小結 364
第17章 從文件中讀取輸入 365
17.1 定義輸入資料格式 365
17.1.1 節點的格式 365
17.1.2 載重的格式 366
17.1.3 桿的格式 366
17.1.4 文件格式 366
17.2 找到正規表示式 367
17.2.1 節點的正規表示式 367
17.2.2 載重的正規表示式 368
17.2.3 桿的正規表示式 368
17.3 初始設定 369
17.4 節點解析程式 369
17.5 桿解析程式 372
17.6 載重解析程序 374
17.7 結構解析程序 375
17.7.1 總覽 376
17.7.2 設定 377
17.7.3 忽略空白與註釋 377
17.7.4 解析行 378
17.7.5 拆解行與組裝結構 379
17.7.6 代碼匯總 381
17.7.7 程序測試 383
17.8 小結 388
第18章 生成SVG圖像和文字檔 389
18.1 初始設定 389
18.2 從結構解到SVG 390
18.2.1 設定檔 390
18.2.2 參數設定 391
18.2.3 函數:繪製結果圖 392
18.2.4 註釋 394
18.2.5 繪製桿圖形 395
18.2.6 繪製節點圖形 402
18.2.7 節點反作用力 403
18.2.8 載重 408
18.2.9 代碼匯總 409
18.2.10 結果 410
18.3 從結構解到文本 412
18.3.1 結構解的字串表示 412
18.3.2 節點 414
18.3.3 桿 415
18.3.4 Unicode字元 416
18.3.5 代碼匯總 417
18.4 小結 418
第19章 組裝應用程式 419
19.1 概述 419
19.2 設定 420
19.3 輸入參數 421
19.4 產生輸出檔 423
19.5 主腳本 424
19.6 嘗試應用程式 425
19.6.1 嘗試不同的參數輸入 428
19.6.2 解一個大型結構問題 430
19.7 小結 434
參考文獻 435