热门关键字:  听力密码  听力密码  新概念美语  单词密码  巧用听写练听力

MathCAD学步随笔

中国水利水电出版社
    【作 者】张培忠 编著 【I S B N 】978-7-5170-0738-8 【责任编辑】张玉玲 【适用读者群】本专通用 【出版时间】2013-04-01 【开 本】16开 【装帧信息】平装(光膜) 【版 次】第1版第1次印刷 【页 数】440 【千字数】696 【印 张】27.5 【定 价】62 【丛 书】 【备注信息】
图书详情

    本书浓缩了作者多年的使用经验,深入浅出地介绍了MathCAD最基本最有用的内容,适用于MathCAD15及以下版本,主要内容包括MathCAD在初等数学、高等数学、线性代数、概率与统计、微分方程等方面的应用。

    本书不是手册,不像“帮助文件”那样利于查询,最好把它当作“数学小品”来阅读。阅读时还必须同时打开MathCAD软件,边读边练,只有读练结合才能事半功倍。

    本书适合对数学计算有兴趣的学生、希望使用MathCAD来提高工作效率的工程技术人员,以及想用它来编写教学演示的教师学习参考。

    本书浓缩了作者多年的使用经验,深入浅出地介绍了MathCAD最基本最有用的内容,适用于MathCAD15及以下版本,主要内容包括MathCAD在初等数学、高等数学、线性代数、概率与统计、微分方程等方面的应用。

    本书不是手册,不像“帮助文件”那样利于查询,最好把它当作“数学小品”来阅读。阅读时还必须同时打开MathCAD软件,边读边练,只有读练结合才能事半功倍。

    李尚志教授咏数学云:

    数学精微何处寻,纷纭世界有模型。描摹万象得神韵,识破玄机算古今。岂是空文无实效,能生妙策济苍生。经天纬地展身手,七十二行任纵横。

    “岂是空文无实效,能生妙策济苍生。经天纬地展身手,七十二行任纵横。”这首诗写得多么好啊!MathCAD正是在体现它描绘的作用。可惜我的这本书却体现得不够好。

    由于长期在第一线摸爬滚打,再加上喜欢数学,也就爱上了直观实用的MathCAD,在和朋友的交流中积累了一些短文,它们就构成了本书的基本素材。但本书包含的内容仅仅是基本数学范围的题材,一些数学专题分支,如统计、金融等,尽管MathCAD包含它们的应用函数,但本书中未涉及,有兴趣的读者可参阅相关书籍。

    一、引言

    1.M++语言

    有些同行,把MathCAD十分有特色的语言戏称为M++语言,它虽然不是软件包原作者正式取用的名称,倒也很能勾画出它的特点,本人觉得这句戏言(甚至可以说是爱称)深得这个数学软件的三昧,举双手赞成。于是在这篇“学步随笔”中,就用M++语言来称呼MathCAD的编程语言了。

    在经得住时间考验的众多数学软件之中,不论大小都各有自己的特点。MathCAD是属于那种深受用户喜爱的“下里巴人”类型的一类。这不仅由于它有比较全面而强大的数字计算、符号推演、图形绘制、动画制作功能,还因为它有一种完善、实用而又独具特点的高级语言编程能力。

    MathCAD语言的突出特点是,它使得编程语言与数学语言达到了迄今为止的最大靠拢。仅此一点就足可使它身价倍增。它不仅能够在计算机上实现数学问题的求解算法,使之变成轻松愉快的工作,更重要的是它给我们提供了重新审视数学软件价值的新视点,开辟了寻求数学软件与信息技术相结合的新视野。

    下面,直接借用北京航空航天大学出版社出版的专著《MathCAD在数学实验中的应用》的观点来描述MathCAD的这些特点,我甚至觉得M++语言这个别名可能是这本书最先推出的。

    M++语言是一种以数学表达式为主要成分的高级语言。与我们所见到的其他高级语言相比,它的最大特点是,以功能强大的自动翻译程序作后盾,使编程语言中的表达式和传统的数学表达式取得最大限度的统一,而且让这种统一后的表达式占据M++语言的主导地位,并把自然英语词汇的数量减少到最低限度。由此,它具备了以下几个重要特点和优势:

    (1)它是一种完整的结构化语言,基本结构简洁清晰、可读性极强。

    用M++编写的程序可读性极强,无需专门的计算机编程训练,凭借数学知识即可一看就懂,而且程序容易查错,易于调试。

    (2)程序中可接受的数据类型非常丰富。

    使用M++语言编写的程序,能支持多种类型的复杂数据(有些是其他高级语言无法做到的)。除了各种高级语言都能支持的整型、实型等基本类型外,还可以支持复数、复函数、复矩阵、超矩阵、矩阵运算,甚至包括求导和不定积分等解析运算及其相应的操作数。

    (3)将子程序统一在函数概念之下,有超强的返回能力。

    M++语言编写的计算机程序,它的子程序表现为一个个功能强大的内置函数,甚至可以直接返回矩阵和超矩阵。有的计算机行家做过比较后认定:“这一点超过了C语言。”

    (4)函数的参数表中可以容纳函数名(其他语言不具备此功能)。

    (5)具有丰富的函数库。

    MathCAD具有含量丰富的函数库(前面已说明,M++的函数概念包括着其他语言中所说的子程序),并且随着版本的改进不断改善和扩充。到MathCAD 7.0版,已经含有内置函数245条,到了MathCAD 14版,已有683条内置函数(包括扩展包所增加的函数),可以直接调用来进行一般常见数学问题的求解计算。此外,用户还可以把自己的自定义函数添加到这个函数库中去。

    2.使用M++语言编程的两种表现形态

    在MathCAD中,使用M++语言来表达数学问题的求解算法(即编写M++程序)有两种表现形态:

    (1)工作页面程序。

    人们曾经把这类程序叫做“类编程板程序”,它包括所有写在MathCAD工作页上数学区中的数学表达式。MathCAD工作页的数学区联合就是一种语言编程。

    (2)编程板程序。

    它通常编写成用户自定义函数。它有一套专门的算子、一个特制的工具栏和一套编程模式与规则。

    可以相应地把两种编程过程叫做工作页面编程和用户函数编程板编程。我们会看到,用MathCAD的M++语言编写出来的工作页面程序和编程板程序都完全具备结构化语言的特点。

    3.我见

    网上偶尔会听到一些不同的声音,讥之者曰:“MathCAD不过是一个玩具”,荐之者曰:“MathCAD可以做一个‘数学公式输入器’使用”。其实这些都是误解。

    人们可能觉得M++语言太像数学语言,而不太像计算机语言。那是因为人们过于牢固地保留了“计算机语言和数学语言有很大的不同”这种历史印象。也许因为它太平常,也许因为它太好用,好到人们看不到它的特点,看不见它的方便,甚至还会有人因其太平易近人而产生一种失落感。只有变换一个视角,才会得到一个新认识,才能深入一层把握事物的本质。

    二、说明

    本人是MathCAD的忠实粉丝,更是上述观点的忠实奉行者。对于有些朋友对MathCAD“没有代码”的挑剔,觉得失之偏颇。程序语言是不是一定要用“代码”体现?MathCAD的“操作符”、“符号关键字与修饰符”、“函数”等难道不是代码吗?只不过是更为先进的更体贴用户的更人性化的代码而已。

    所以,本书中有不少内容都是在证实与阐述这种观点。而且有一些不见经传的名词术语,如“页面程序语言”、“编程板程序算子”、“页面程序”、“编程板程序”等,都是依据上述观点而生发的。望朋友们勿责作者用语生涩。

    本书是在MathCAD 14环境下编写的,MathCAD 15推出后,又在15版环境中进行过校订,这已经是PTC公司流行版本的最新版了,而市面上才推出的MathCAD prime 1.0实际上应该是现代界面的重写版,由于它尚不成熟、速度慢,而且功能不全、普及面小,因此本书没有涉及。

    现在,MathCAD prime 2.0正式推出了,它淘汰了许多MathCAD 15及以下版本具有的方便用户又贴近工程技术文件的功能,使用户大感不便,于是就在发行MathCAD prime 2.0的同时奉送MathCAD 15,以方便用户。这个版本与14和15版不太兼容,必须通过“迁移手续”转换,请读者使用时注意。

    创作是辛苦的,没有家人的支持,特别是老伴的大力支持是不可能完成的。在本书编辑过程中,参与具体工作的还有:李伟、景小艳、许志清、刘军华、夏惠军、张赛桥、姚新军、张强林、张代全、万雷、王斌、江广顺、李强、余松、郭敏、董茜、陈鲲、王晓、李晓宁、丁佳、虞志勇、吴艳、魏新利、王定标、曹海亮、李言钦、付卫东。在本书创作期间获得中国水利水电出版社老师的大力支持,正是他们的辛苦付出,才使得本书能够在第一时间面向读者。若读者在学习过程中发现问题或有更好的建议,可以通过info@dozan.cn与我们联系。

    由于时间仓促及作者水平有限,书中错误、纰漏之处在所难免,敬请广大读者批评指正。

    前言

    第1章 运算符启蒙 1
    1.1 数学软件中的“宝葫芦” 1
    1.1.1 怎样给变量赋值 2
    1.1.2 怎样用编辑线选定算式 2
    1.1.3 怎样计算表达式的值 3
    1.1.4 从简单的例子开始 3
    1.2 活动的计算器按钮 3
    1.3 这样在工作页面上写入算式 5
    1.3.1 输入最简单的数学表达式 5
    1.3.2 一步一步建造表达式的例子 6
    1.4 微积分学直通车 8
    1.4.1 搭上“直通车” 9
    1.4.2 微积分学运算符的含义与用法 11
    1.4.3 导数 13
    1.4.4 累计和 17
    1.4.5 积分 19
    1.4.6 迭代积 22
    1.4.7 梯度 24
    1.5 数字方阵的奥妙 25
    1.5.1 矢量和矩阵运算符的含义与用法 27
    1.5.2 创建矩阵 28
    1.5.3 写入或调用矩阵元素的索引 28
    1.5.4 矩阵求逆 28
    1.5.5 矩阵行列式值及其他量值 30
    1.5.6 将运算符和函数向量化 32
    1.5.7 调用矩阵的指定列 34
    1.5.8 产生行列互换的转置矩阵 34
    1.5.9 矢量的点积 35
    1.5.10 矩阵乘矢量的点积 35
    1.5.11 矩阵的点积(内积) 36
    1.5.12 矢量叉乘(向量积) 38
    1.5.13 用矩阵数据显示图形 39
    1.6 只有两个值的“布尔代数”运算符 41
    1.7 六类等号的异同 46
    1.7.1 局部与全局定义等号 46
    1.7.2 数值求值等号 47
    1.7.3 符号求解等号 48
    1.7.4 附加关键字的符号求解等号 49
    第2章 符号运算关键字启蒙 50
    2.1 float的浮点运算 50
    2.1.1 使用关键字float来改变计算精度 51
    2.1.2 使用关键字float来实现符号运算 51
    2.2 关键字rectangular 51
    2.3 关键字assume 52
    2.4 关键字solve(求解) 53
    2.4.1 单纯使用solve 53
    2.4.2 使用solve的指定欲解变量修改器 53
    2.4.3 使用fully(完全)修改器 54
    2.4.4 求解方程组 55
    2.5 关键字simplify(简化) 57
    2.6 关键字substitute(代入) 57
    2.7 关键字factor(因子) 58
    2.7.1 整数分解为因数的积 58
    2.7.2 多项式分解 58
    2.7.3 有理式分解 59
    2.7.4 分解表达式为无理因式 59
    2.7.5 分解表达式的复因式 60
    2.8 关键字expand(展开) 60
    2.9 关键字coeffs(系数) 61
    2.9.1 单变量多项式系数的提取 61
    2.9.2 多变量多项式系数的提取 62
    2.9.3 将系数矢量用于求解多项式的
    全部根 62
    2.10 关键字collect(合并) 63
    2.11 关键字series(级数) 63
    2.12 关键字parfrac(部分分式) 65
    2.13 关键字explicit(显式的) 66
    2.14 关键字combine(组合) 67
    2.14.1 关键字的修改器应用实例 67
    2.14.2 combine 与 collect 的区别 68
    2.15 关键字rewrite(重写) 68
    2.16 关键字confrac(连分式) 69
    2.16.1 展开数字为连分数 70
    2.16.2 展开表达式为连分式 71
    第3章 基本数学与求解函数启蒙 72
    3.1 基本数学函数简释 72
    3.1.1 三角函数及双曲线函数 72
    3.1.2 对数与指数函数 74
    3.1.3 关于复数的函数 75
    3.2 单变量方程求解的专用函数root 77
    3.2.1 起步 78
    3.2.2 调用root函数工作 78
    3.2.3 用4参数的root隔出根 83
    3.3 定向专用求解函数lsolve 与 polyroots 87
    3.3.1 线性方程组矩阵求解 87
    3.3.2 n次代数方程求根专用
    函数polyroots 90
    3.3.3 方次超过MathCAD标准的方程 92
    3.3.4 选择合适的演算方法 94
    3.4 求解块的定义与结束函数 95
    3.4.1 求解块的结构简介 95
    3.4.2 设置求解命令块的步骤 96
    3.4.3 大材小用,求解块求解单个方程 96
    3.4.4 渐入佳境,只有两个方程的方程组 99
    3.4.5 没有解决方案的错误和问题 104
    3.4.6 放之四海,N个方程式的方程组 108
    3.4.7 对Minerr函数的使用及了解 113
    3.5 优化函数的函数Minimize与Maximize 117
    3.5.1 用优化函数直接优化目标
    函数(无条件优化) 117
    3.5.2 带约束条件的优化 120
    3.5.3 优化函数与“线性规划” 124
    3.5.4 优化函数与“二次规划” 126
    3.6 页面条件分支函数 if 与 until 127
    3.6.1 条件分支函数 if 127
    3.6.2 条件终止函数 until 128
    3.7 MathCAD魔法——递归函数 130
    3.7.1 一个递归函数定义的分析 131
    3.7.2 错误的递归过程 133
    3.7.3 递归和前定义 134
    第4章 回归拟合函数启蒙 136
    4.1 随心所欲的拟合函数genfit 136
    4.1.1 相关程度的检查函数——
    corr(H(X),Y) 136
    4.1.2 回归函数——genfit 136
    4.2 另辟蹊径的通用拟合函数 142
    4.2.1 linfit 与 genfit 的异同 143
    4.2.2 通用拟合函数实例讲解 143
    4.3 常用线性回归拟合 148
    4.3.1 标准差介绍 148
    4.3.2 line(vx,vy)函数 148
    4.3.3 medift(vx,vy)函数 153
    4.4 非线性拟合的专用利器 154
    4.4.1 演示操作步骤的例子 154
    4.4.2 各个回归函数的例释 155
    第5章 常微分方程求解函数启蒙 161
    5.1 用求解块Odesolve求一阶常微分
    方程的积分曲线 161
    5.1.1 一阶常微分方程的标准格式
    与参数 162
    5.1.2 四种微分方程式组合 162
    5.1.3 其他有关例子 164
    5.1.4 用MathCAD求一阶常微分方程
    的近似解析解 166
    5.2 用求解块Odesolve求高阶常微分方程
    的积分曲线 173
    5.2.1 Odesolve 求解高阶常微分方程的
    使用格式与解的认识 173
    5.2.2 差异与微疵 175
    5.2.3 实战例释 178
    5.3 用求解块Odesolve求常微分方程组的
    数值解 183
    5.3.1 线性一阶常微分方程组求解例释 184
    5.3.2 线性高阶常微分方程组求解例释 186
    5.3.3 非线性高阶常微分方程组
    求解例释 190
    5.4 块外求解常微分方程 196
    5.4.1 Fixed 函数的固定步长的
    龙格-库塔算法 197
    5.4.2 Rkadapt函数四阶龙格-库塔算法 201
    5.4.3 用其他求解器函数求解实现 204
    第6章 矩阵与矢量函数启蒙 207
    6.1 矩阵的创建与分合函数 207
    6.1.1 创建矩阵的函数 207
    6.1.2 合并与提取子矩阵函数 212
    6.2 检视数组特性的函数 214
    6.2.1 直观的数组特性检视函数 214
    6.2.2 隐蔽的数组特性检视函数 218
    6.2.3 各种条件数检视函数 219
    6.2.4 检视特征值与特征向量的函数 221
    6.2.5 矩阵的定量参数 223
    6.2.6 矩阵的线性系统属性 224
    6.3 矩阵分解函数及其他 231
    6.3.1 乔列斯基(Cholesky)分解 231
    6.3.2 LU分解 232
    6.3.3 QR分解 234
    6.3.4 奇异值分解 236
    6.4 其他函数 237
    6.4.1 以均匀间隔给出矢量元素的函数 237
    6.4.2 创建以对数为间隔的点的矢量
    的函数 238
    6.4.3 一维相关性检查函数correl(vx,vy) 238
    6.4.4 二维相关性检查函数correl2d(M,K) 239
    第7章 其他有关函数启蒙 240
    7.1 数论函数的使用及其充实 240
    7.1.1 排列与组合函数 240
    7.1.2 约数与余数 241
    7.1.3 有关素数的扩展函数 244
    7.2 识别千面书生的类型检查函数 249
    7.2.1 内置的类型检查函数 250
    7.2.2 使用类型检查 251
    7.3 取整、舍入与随机数生成函数 253
    7.3.1 直接取整函数 253
    7.3.2 舍入取整函数 256
    7.3.3 常用随机数生成函数 258
    7.4 数的自定义换算函数 260
    7.5 自定义错误信息函数error 266
    7.5.1 error函数的用法 268
    7.5.2 使用 error 实例 268
    7.6 字符串处理函数 273
    7.6.1 合并与拆分提取函数 273
    7.6.2 字符串转换函数 278
    第8章 岂是空文无实效——编程板算子
    解说与使用 280
    8.1 编程板编制程序的算子 280
    8.1.1 堆砌孤立行不是程序 281
    8.1.2 一个简单的没有孤立行的程序 283
    8.2 板内局部赋值 284
    8.2.1 板内局部任务 285
    8.2.2 板内局部函数 288
    8.2.3 你不能这样做的事情 289
    8.2.4 你不应该做的事情 289
    8.2.5 强化的简单编程 290
    8.2.6 一个要点的强调 292
    8.3 if和otherwise算子 292
    8.3.1 if算子是怎样在程序中工作的 295
    8.3.2 otherwise 算子 296
    8.3.3 多 if-otherwise 群 298
    8.3.4 使用 if 与 otherwise 300
    8.3.5 写入if算子的操作方法小结 301
    8.4 for循环算子 302
    8.4.1 for循环算子的细节探讨 303
    8.4.2 使用 for 循环实例 307
    8.5 while循环算子 309
    8.5.1 while实施步骤与简单例子 309
    8.5.2 while循环算子详解 310
    8.5.3 while循环的提示和警告 312
    8.5.4 while循环的例子 315
    8.6 continue(继续)与 break(中断)
    算子 319
    8.6.1 continue 算子如何工作 320
    8.6.2 break(中断)算子 323
    8.7 快刀斩乱麻的命令return算子 325
    8.7.1 利用return算子 326
    8.7.2 return的例子 326
    8.8 编程板程序的符号演算 328
    8.9 错误捕捉算子 331
    8.9.1 定义on error 332
    8.9.2 on error的应用举例 333
    第9章 七十二行任纵横——应用集锦 335
    9.1 非线性回归函数之联合作战 335
    9.2 沿曲线轨道移动的圆心 338
    9.2.1 条件循环程序 338
    9.2.2 定圆心点数循环程序 340
    9.2.3 用图像来验证 343
    9.3 在编程板程序中调用MathCAD
    求解块的解 344
    9.3.1 求方程组各个未知数的所有根
    之和 344
    9.3.2 求齐次不定方程组的整数解 345
    9.3.3 随机数据的拟合程序 347
    9.3.4 对于多笔数据的求解设定 348
    9.4 几个实用有趣的自定义函数 349
    9.4.1 矩阵行交换函数(hhjz) 349
    9.4.2 矢量的部分接管函数(take) 350
    9.4.3 拉威尔(拆散)函数(ravel) 351
    9.4.4 复写函数(dupl) 352
    9.4.5 旋转式移位函数(rot) 354
    9.4.6 反选剩余元素函数(drop) 354
    9.5 最大公约数与最小公倍数 355
    9.5.1 最大公约数的概念 356
    9.5.2 用欧几里得递归算法编程求两数
    的最大公约数 356
    9.5.3 用条件循环求两数的最小
    公倍数 356
    9.5.4 赘言 357
    9.6 多种计算π值的程序 357
    9.6.1 根据S.Rabinowitz与S.Wagon
    算法编制的程序 358
    9.6.2 用瓦里斯公式计算圆周率π 362
    9.6.3 用欧拉公式求圆周率π 363
    9.7 爱纳托斯特尼筛子与质因数分解 364
    9.7.1 寻找质数的爱纳托斯特尼筛子 364
    9.7.2 发现全部n 9.8 用MathCAD编程求未定式 369
    9.8.1 应用洛必达法则编程定未定式 370
    9.8.2 各种实例 372
    9.9 伯努利方程的通解 374
    9.10 求不定方程的正整数解 377
    9.10.1 求解步骤和注意事项 377
    9.10.2 例子与注释 377
    9.11 用MathCAD求解形形色色的
    “孙子点兵”问题 383
    9.11.1 用MathCAD编一个典型孙子
    点兵问题的一般解法程序 384
    9.11.2 具有依赖参数的孙子点兵问题 387
    9.11.3 扩展分拣参数的“孙子定理”—
    从网上得来的问题 389
    9.12 圆柱螺旋压缩弹簧设计 392
    9.12.1 设计要求 392
    9.12.2 材料 393
    9.12.3 端部型式 393
    9.12.4 设计弹簧 393
    9.12.5 弹簧性能校核 394
    9.12.6 几何尺寸计算 396
    9.12.7 弹簧图样 397
    9.13 按传动角设计四连杆机构 398
    9.13.1 曲柄摇杆机构简化线图 398
    9.13.2 输入传动角Ψ12与ϕ12
    选定β 398
    9.13.3 计算杆长 399
    9.14 年龄为出生年份的数码之终极和 401
    9.15 用节点电压法解复杂直流电路 403
    9.15.1 电路1 403
    9.15.2 电路2 405
    9.16 谐振电路分析计算 406
    9.16.1 RLC串联谐振 406
    9.16.2 RLC并联谐振 410
    9.17 桥梁板式橡胶支座选用计算 415
    9.17.1 橡胶垫板的底面积校核 415
    9.17.2 橡胶垫板厚度校核计算 416
    9.17.3 橡胶垫板平均压缩变形验算 416
    9.17.4 在水平力作用下橡胶垫板
    抗滑移验算 417
    9.18 水力学计算应用实例两则 417
    9.18.1 梯形渠道均匀过流量计算 417
    9.18.2 拟合水位流量关系曲线 419
    9.19 用MathCAD解决简单的“派活搭配”
    运筹问题 421
    9.20 用MathCAD处理美工图像举例 424
    9.20.1 图像混合 424
    9.20.2 图像遮盖 427
    9.20.3 图像的翻转 428
    9.20.4 局部更换图像 428
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册