×
暂无评论
图文详情
  • ISBN:9787111758471
  • 装帧:平装-胶订
  • 册数:暂无
  • 重量:暂无
  • 开本:16开
  • 页数:464
  • 出版时间:2024-07-01
  • 条形码:9787111758471 ; 978-7-111-75847-1

本书特色

如果你可以用Python编程来解决具有挑战性的工程问题会如何?这本“硬核”的书将教你如何使用线性代数、几何和物理知识从头开始编码求解算法,以编写自定义库、绘制基元和构建应用程序。作者在这本书中为机械工程师提供了核心编程技巧,专注于打磨高质量的代码和利用自动化的单元测试来保证实现无差错。你将开发一个几何工具箱,用线和形状来绘制工程问题图,为机械模拟创建矢量图和动画,以及编码算法来执行复杂的计算。*终,你将结合这些知识来构建一个完整的结构分析应用程序,以解决实际工作中可能遇到的二维桁架问题。

通过阅读本书,你将学到:
·使用正则表达式来优雅地解析输入文件
·使用单元测试、封装和描述性名称来优化代码
·使用Tkinter的画布小部件在屏幕上绘制图像和创建动画
·用Cholesky分解算法求解线性方程组
·构建一个可以可视化桁架结构的应力和张力的应用程序

停止依赖第三方软件--通往专业化的道路没有捷径。本书将帮助你掌握编程技巧,让你每次都能获得正确的结果。

内容简介

如果你可以用Pytho编程来解决具有挑战性的工程问题会如何?这本“硬核”的书将教你如何使用线性代数、几何和物理知识从头开始编码求解算法,以编写自定义库、绘制基元和构建应用程序。
ángel Sola Orbaiceta在这本书中为机械工程师提供了核心编程技巧,专注于打磨高质量的代码和利用自动化的单元测试来保证实现无差错。你将开发一个几何工具箱,用线和形状来绘制工程问题图,为机械模拟创建矢量图和动画,以及编码算法来执行复杂的计算。*终,你将结合这些知识来构建一个完整的结构分析应用程序,以解决实际工作中可能遇到的二维桁架问题。
通过阅读本书,你将学到:
使用正则表达式来优雅地解析输入文件:
使用单元测试、封装和描述性名称来优化代码:
使用Tkinter的画布小部件在屏幕上绘制图像和创建动画;
用Cholesky:分解算法求解线性方程组;
构建一个可以可视化桁架结构的应力和张力的应用程序。
停止依赖第三方软件一一通往专业化的道路没有捷径。本书将帮助你掌握编程技巧,让你每次都能获得正确的结果。

目录

目  录
译者序
前言
致谢
作者简介
技术评审员简介
**部分 基础知识
第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 for
Linux软件 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 for
Linux 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
展开全部

作者简介

安琪儿·索拉·奥尔巴塞塔自2013年以来一直在软件行业工作。他拥有机械工程学位,目前在巴塞罗那市中心一家蓬勃发展的初创公司Glovo工作。安琪儿还是InkStructure知名应用程序的创建者,该应用程序用于解决建筑和工程专业的2D结构问题。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航