2023年11月25日发(作者:)
第一章 Mathcad简介
Mathcad即数学CAD,是美国Mathsoft公司于1986年推出的一个可
视化的处理数学问题的软件包。其早期版本运行于DOS下,直到4.0版
才运行于Windows环境下。Mathcad早期版本一直偏爱于数值计算,直
到6.0版,才引入符号计算功能,不过符号计算,并不是Mathcad的强
项,它不如我们下面将要介绍的另外两个数学软件包。其程序设计功能,
也是6.0版后才有的功能,但在Mathcad中进行程序设计,却与其它编
程语言有着本质的不同,其语言简单明了,可视化强,近似于其它程序
的流程图。Mathcad不但是一个超级的数学计算器,而且还是一个出色
的数学公式编辑器。只要你用过Word的Eqation,你就会发现用Mathcad
的数学公式编辑器输入一个数学公式有多么的简单。另外,Mathcad也
称得上是一个优秀的文本编辑器,目前国际上很多科技论文,就是用
Mathcad排版打印的。
在Mathcad中,你能够进行有关高等数学、线性代数、数值分析、
概率统计等方面的各种运算,并且能够绘制常用的数学图形。它还为工
程应用提供了各种量纲的转换。下面以Mathcad7 Professional为基础,
简要介绍Mathcad的使用方法。
1.1 Mathcad的集成环境与基本操作
在安装完Mathcad7后,单击“开始→程序→mathcad7→Mathcad 7
Professional”即可进入Mathcad7,下面是Mathcad的用户界面。
可以看出,Mathcad的界面与我们常用的软件如Office系列软件很
相似。它含有9个主菜单,即文件管理(File)、编辑(Edit)、视图(View)、
插入(Insert)、格式(Format)、数学计算(Math)、符号计算(Symbolics)、
窗口管理(Window)、帮助(Help),每个菜单可以直接单击打开,也可以
1-1
同时按ALT和菜单上的下划线字母,如ALT+O。下面我们简要介绍一下
各个菜单的功能。
1、File菜单
“New”建立一个新文件(Mathcad称之为工作表,扩展名为“MCD”),
可以选择已有的模板,对于数学计算,一般选择“Blank Worksheet”;
“Open”打开已有的文件,一般为扩展名为“MCD”的文件;“Close”关
闭当前文件;“Save”将当前编辑的文件存盘;“Save As”将正在编辑的
文件换名存盘;“Collaboratory”连接Internet上的Mathcad论坛;
“Internet Setup”设置Internet;“Send”发送电子邮件;“Page Setup”
页面设置;“Print Preview”打印预览;“Print”打印文件;“Exit”退
出Mathcad。
2、Edit菜单
“Undo”撤消上次编辑操作;“Redo”Undo的逆操作;“Cut”删除
选定的内容,并将内容留在剪裁板;“Copy”将选定的内容复制到剪裁板;
“Paste”粘贴剪裁板的内容;“Paste Special”按指定格式粘贴剪裁板
的内容;“Delete”删除选定的内容且不将内容放到剪裁板;“Links”编
辑OLE对象;“Object”编辑一个嵌入的OLE对象。
3、View菜单
“Toolbar”显示或隐藏工具栏;“Format Bar”显示或隐藏字体工
具栏;“Math Palette”显示或隐藏数学工具面板(以下简称数学面板);
“Regions”区域显示开关,打开后会使各区域与背景颜色之间形成反差,
关闭后则恢复原样;“Zoom”选择当前页面视图的显示比例;“Refresh”
刷新当前屏幕;“Animate”动画制作;“Playback”动画播放。
4、Insert菜单
“Graph”中含如下几个子菜单:“X-Y Plot”建立直角坐标系下的
二维图形,其快捷键为SHIFT+2,“Polar Plot”绘制极坐标图形,
“Surface Plot”绘制曲面图,“Contour Plot”绘制等高线图,“3D Bar
Chart”绘制三维柱形图,其快捷键为CTRL+M,“Vector Field Plot”
绘制二维矢量图;“Matrix”插入矩阵或向量;“Function”从内部函数
中,选取一个函数插入到当前光标处;“Unit”插入某个计量单位;
“Picture”插入图象;“Math Region”在文本区域中插入一个数学区域;
“Text Region”插入一个文本区域,其快捷键是键盘上的双引号;“Page
Break”插入分页符;“Hyperlink”建立Internet超级链接;
“Reference”插入一个以MCD为扩展名的文件;“ Component”插入一
个Mathcad可识别的组件;“Object”插入一个OLE对象。
5、Format菜单
“Number”Mathcad的数据输出格式,例如输出浮点型数还是指数
型数,小数有多少位,允许误差有多大等;“Equation”控制数学公式的
输出格式,例如公式中字符的颜色、字体、字型号等;“Text”定义文本
的输出格式,例如字体、字型号等;“Paragraph”文本中段落的排版格
1-2
式,例如左右对齐,每行的缩进量等;“Style”控制文本的风格,如标
题、小标题、正文的大小、字型号等;“Properties”显示特性控制及优
化计算;“Graph”含子菜单:“X-Y Plot”直角坐标系下的绘图格式,
“Polar Plot”极坐标系下的绘图格式,“3D Plot”三维图形的绘图格
式;“Color”含子菜单:“Background”页面的背景颜色,“Highlight”
方程式突出显示的颜色,即Properties中特性控制的颜色,
“Annotation”对电子书作修改后,修改部分所显示的颜色;“Separate
Regions”自动分离重叠的区域;“Align Regions”自动对齐所选定的区
域;“Lock Regions”设置/解除区域锁定,它包括“Set lock area”、
“Lock area”、“Unlock area”;“Headers/Footers”设置页眉及页脚,
页眉和页脚在工作区内是不可见的。
6、Math菜单,执行数学计算
“Calculate”数学计算,重新绘制屏幕上的图形或计算结果,一般
用于对某些数据更改后进行,其快捷键为F9;“Calculate Worksheet”
同上,但更新当前工作区;“Automatic Calculation”自动计算与手动
计算切换开关,在手动模式下,按F9即可实现自动计算;
“Optimization”数学表达式的优化计算开关;“Option”设置系统误差
变量TOL的大小及用户定义变量的单位和量纲。
7、Symbolics菜单,主要与符号计算有关
“Evaluate”含子菜单:“Symbolically”求一个符号数学表达式的
结果,可使用快捷键“CTRL+.”,“Floating Point”返回符号运算的浮
点结果;“Complex”返回符号运算的复数结果;“Simplify”化简代数表
达式以返回最简单的结果;“Expand”将一个表达式进行代数展开;
“Factor”提取表达式的公因子或对表达式进行因式分解;“Collect”
按指定的符号变量整理代数多项式,即按此变量将相同的幂次合并到一
起;“Polynomial Coefficients”以幂次升序排列求多项式按某个变量
展开的系数,结果为一个列向量;“Variable”含如下子菜单:“Solve”
对指定变量求解方程或不等式,“Substitute”用剪裁板的内容或直接指
定的内容替换所选择的变量,“Differentiate”对指定的变量求微分,
“Integrate”对指定的变量求某个表达式的积分,“Expand to Series”
将函数展开成泰勒级数,“Convert to Partial Fraction”将一个有理
分式分解为部分分式;“Matrix”含子菜单:“Transpose”求转置矩阵,
“Invert”求矩阵的逆,“Determinant”求行列式的值;“Tranform”含
子菜单:“Fourier”付立叶变换,“Inverse Fourier”逆付立叶变换,
“Laplace”拉普拉斯变换,“Inverse Laplace”拉普拉斯逆变换,“Z”
Z变换,“Inverse Z”逆Z变换;“Evaluation Style”设置进行数学符
号推导后,其结果的输出形式。
8、Window窗口
“Cascade”层叠式排列窗口;“Tile Horizontal”水平平铺式排列
窗口;“Tile Vertical”垂直平铺式排列窗口;“Arrange Icons”排列
1-3
窗口图标。
9、Help菜单
“Mathcad Help”帮助窗口;“Resource Center”Mathcad资源中
心;“Tip of the Day”每日一招;“Open Book”打开扩展名为“hbk”
的电子书;“Using Help”如何使用Help。
10、数学面板
在1-1页的图上的工作区的右上角,是Mathcad的数学面板,它共
有8个按钮,按由左到右,由上到下的顺序依次为:函数计算器、逻辑
运算符(主要用于程序设计)、绘图、矩阵及向量运算、有关微积分方面
的数值运算运算、编程面板、希腊字母集、符号计算器。
下面,我们介绍一下Mathcad的一些基本概念。在Mathcad中,常
用的文件有如下几种:普通Mathcad文件,以“MCD”为扩展名;电子书
文件,以“HBK”为扩展名;模板文件,以“MCT”为扩展名;项目文件
(MathConnex建立),以“MXP”为扩展名。我们在Mathcad中计算某些
数学问题,然后取个名字存盘,那么默认的扩展名为“MCD”。如果我们
打开这样的一个文件,并将它读入Mathcad中,例如
如果使用View/Regions命令,可以看到它的各个区域,第一行表示
的是文本区域,在这个区域中,不但能输入文本,也能使用Insert/Math
region插入数学公式;第二行有三个区域,它们代表Mathcad下的三个
数学公式或命令,它们称为数学区域,这是Mathcad默认的区域,即如
果你不键入双引号而输入一串符号,或者你输入一串符号后没有按空格
键,则Mathcad认为你输入了一个命令。要注意的是,数学区域有先后
次序,例如,上面的三个数学区域如果移到曲线图的下面,你将看不到
曲线图形;最后是一张图,称为图形区域。
进入Mathcad后,你会看到一个红色的+号,我们一般称为十字丝,
它表示键入的内容从此处开始,你可以移动光标键或单击鼠标左键重新
定位十字丝,即重新选择输入点。
在上面的计算中,x是变量,f(x)是函数。Mathcad中的变量及函数
无长度限制,但区分大小写,其命名规则如下:以字母、汉字、∞开头,
1-4
后面可跟有字母、汉字、数字、下划线、百分号、下标等,但变量中的
字体要相同。下面是Mathcad预定义的系统内部变量:
圆周率π(快捷键Ctrl+P)、自然数e、虚数i或j(键入方法:1i或
1j,例如复数2+3i可键入2+3i,其中3与i间无乘号)、百分号%,它表
示0.01、无穷大∞(快捷键Ctrl+z)、TOL(用于某些数值计算如数值积分、
求根等的最大容许误差,默认为0.001,可用TOL:=r的形式重新赋值)、
ORIGIN(矩阵或向量起始元素的序号,默认为0,可用赋值语句显式改变)、
CWD(Mathcad的文件存取路径,可改变)。
在Mathcad中,“:=”是真正的赋值操作,它表示将右边的表达式赋
给左边的变量,它是键入冒号“:”产生的;等号“=”的意思是,计算
左侧的数学表达式,并写到等号的右边,它键入的是真正的等号;此外
还有逻辑等号“=”、全局等号“≡”及符号运算中的等号“→”。另外,
“..”是一个很重要的运算符,它能自动产生一个列表,如x=2..4(其
中的..并不是直接输入2个小黑点,而是键入键盘上的分号产生的),将
使x的取值为2,3,4,x=-10,-8..10将使x的取值为-10,-8,-6,…,8,10。
为了使Mathcad的工作表美观、整齐等目地,我们常常要对工作表
内的各区域实行移动、删除、拷贝、对齐等操作,其方法如下:
1、移动区域
如果是移动单个区域,可以移动鼠标至该区域,单击左键,等出现
一个手形图标时,按下左键就可以拖动此区域了,对于多个区域,可以
采用以下方法同时移动:按下鼠标的左键,拖动鼠标,选择要移动的区
域,直到这些区域用虚线框住为止(这个过程我们下面称为选择区域)。
然后将鼠标指向该区域,待出现手形图标后,按下左键就可以同时移动
这些区域了。
2、删除区域
先选择要移动的区域(见上面的说明),然后按delete键、工具栏
中的删除图标或者Edit/Cut及Delete即可。另外,对于非图形区域,
可以使用delete或backspace键直接删除。
3、拷贝区域
选择要拷贝的区域,然后用光标移动键将十字丝移动到合适的位置,
按Ctrol+V或Edit/Paste可。
4、对齐区域
选定要对齐的区域,然后执行Format/Align Regions/Across进行
横向对齐,执行Format/Align Regions/Down进行竖向对齐。
由于Mathcad是一个解决数学问题的软件,因此,在求解一个实际
的数学题时,你首先应该知道,怎样将一个数学公式输入到Mathcad中。
Mathcad是一个真正的数学草稿式的软件包,也就是说,你输入Mathcad
中的每一个数学公式,在屏幕上的显示结果与你在练习纸上所写出的样
子基本上是一致的。下面介绍有关Mathcad公式编辑的方法。
1、占位符
1-5
当我们输入一个数学公式或者画一张图时,都会出现一个到数个黑
色的小方块,这些小方块称为占位符,它表明要输入的数学公式或图形
参数不完整,因此Mathcad还不能计算这个公式或画出图形,只有当你
单击这些黑色小方块,并在这些黑色的小方块上添加适当的字符,等小
方块消失后,才能进行下面的工作。
2、编辑定位线
我们一般称它为编辑线。它是用2条交叉的直线来表示当前的编辑
状态处于数学公式中的哪个位置。如果移动光标键(↑、↓、←、→),
交叉线将会随之变化,此时当前编辑对象也随之改变。Mathcad将一个
数学公式理解成多级别式(或者多层式)的结构,按一次空格键可将交
叉线升高一级,按INS键可以在同级中调换编辑方向。按DEL或者
Backspace键可进行删除操作,其结果视编辑线的所在位置而定。另外,
在输入数学公式过程中,我们常常利用括号的优先级最高而输入我们所
ab
要输入的数学公式。例如,对于分数有2种方法输入:先输入a.b,
c
然后按空格键将编辑线由变成的形式,最后输入“/”就行了;
abab
也可以输入后直接键入“/”,请试试看!
(ab)
3、运算符
由于Mathcad是一个草稿式的数学运算工具,因此,它有大量的数
学运算符。当然,这些运算符都可以通过上面介绍过的9个菜单和数学
面板输入进去,如果你不怕麻烦和浪费时间的话。更简单的方法是利用
快捷键输入运算符。在下面的表中,首先是运算符在屏幕上的显示结果,
然后是键入方法,其次是该运算符所代表的意义。
显示 键入 意义 显示 键入 意义
-------------------------------------------------------------
<>
() , 圆括号 Ctrl+6 矩阵的某列
Ctrl+ - 向量 [ 向量的下标
Ÿ
! ! 阶乘 〓 Ctrl+= 逻辑等号
T
Ctrl+1 矩阵转置 ≠ Ctrl+3 逻辑不等号
∑ Ctrl+4 向量求和 Ctrl+7 极坐标绘图
≣ Ctrl+0 大于等于 ≢ Ctrl+9 小于等于
× Ctrl+8 向量叉积 Ctrl+A 右极限
limŸ
煙
煙-
limŸ
Ctrl+B 左极限 Ctrl+L 极限
limŸ
煙
Ctrl+F 插入函数 ∫d Ctrl+I 不定积分
1-6
Ctrl+J或 换行接着写 Ctrl+M 输入矩阵
Ÿ
Ÿ
Ctrl+N 新建工作表 Ctrl+O 打开工作表
π Ctrl+P 圆周率 Ctrl+Q 退出Mathcad
Ctrl+S 保存工作表 Ctrl+U 插入量纲
Ctrl+W 存盘退出 ∞ Ctrl+Z 无穷大
← { 赋值(编程用) if } 条件判断
Ÿ
Ÿ
] 程序层次线 .. ; 产生列表
:= : 赋值 ” 建立文本区域
, , 符号计算用 < < 小于
Ÿ
> > 大于 / 分式
Ÿ
d
Ÿ
? 微分 | 开平方根
Ÿ
dŸ
|| 绝对值或模 - - 负数
+ + 加法 ( (
. * 乘法 & 定积分
煙d
Ÿ
Ÿ
^ 乘方 % % 百分号
Ÿ
$ 求和 # 求积
Ÿ
Ÿ
Ÿ
@ 画曲线图 ~ 全局等号
ŸŸ
Ctrl+Shift+3 Ctrl+Shift+4
?
煙
Ÿ
Ÿ
d
Ÿ
→ 符号计算 Ctrl+Shift+/
Ÿ
Ÿ
dŸ
4、希腊字母
在很多数学问题中,我们都习惯用希腊字母来表示某个数学变量,
而键盘上又没有这些字符,怎么办呢?Mathcad提供了两种输入希腊字
母的方法,一种是通过数学面板直接输入,另一种是使用字母转换的方
法。我们以β的输入方法为例说明后一种方法:输入字符b后在光标为
b
的形式下按“Ctrl+G”,Mathcad就将字母b转换为希腊字母β。下面是
一张字母转换表。其中箭头后面的第一个希腊字母代表大写字母的转换
结果,第二个希腊字母代表对应小写字母的转换结果。
1-7
Aa→Αα Bb→Ββ Cc→Υχ Dd→Γδ Ee→Δε Ff→Φθ
Gg→Γγ Hh→Ζε Ii→Ηη Jj→ Kk→Κθ Ll→Λι
Mm→Μκ Nn→Νλ Oo→Ον Pp→Ππ Qq→Θζ Rr→Ρξ
Ss→ζ Tt→Ση Uu→Τυ Vv→δ Ww→Χω Xx→Ξμ
Yy→Φψ Zz→Ε
其规律是以希腊字母的英文名称的首字母为索引的。
5、排版打印
Mathcad可以和Word一样进行排版打印,它能够进行纸张类型、左
右边界及上下边界的设定,并且也能够进行页眉与页脚的设定。但是,
与Word不同的是,用File菜单中的Page Setup所设置的左边界你在屏
幕上是看不到的,只有用Print Preview命令或者直接用打印机将工作
表或这个工作表所存的文件打印出来才能观察得到。而工作表上一条虚
竖线表示页面的右边界,实竖线表示当前页面上,实际打印字符的右边
界,而这两条线之间的距离就是你所设置页面的右边界。另外,工作表
内可同时横向及纵向排列很多页。
6、对象的插入
在Mathcad中,你可以通过菜单Insert/Object插入某个OLE对象,
例如插入Word文件、音乐、图片、Excel工作表等。
7、组件的插入
通过菜单Insert/Component可以插入一个符合Mathcad规定的组
件,如Axum、MATLAB、Excel等等。
8、插入超级链接
通过菜单Insert/Hyperlink可以插入一个超级链接,它在屏幕上,
用一个区域来表示,当用鼠标指向它并双击时,可打开此链接。我们可
以通过这个功能来链接一个普通的Mathcad文件或Internet地址。
9、量纲的插入
Mathcad中内置了四套常用的单位制,即SI制(标准国际单位)、
MKS(米、公斤、秒制)、CGS制(厘米、克、秒制)、US制(美制)。插入量
纲后,Mathcad将自动进行单位转换,比如若2个变量的单位是长度,
则相乘后将会得到面积单位。
10、插入引用文件
使用Insert/Reference插入一个引用文件后,则引用文件中的所有
变量及结果从引用位置起对当前工作表来说,都是已知的。
11、计算模式的改变
使用Math/Automatic Calculation可转换手动与自动计算模式。这
对于打印排版一篇文章时很有用处。
1-8
1.2 数值计算及其相关函数
Mathcad提供了覆盖各个数学学科的大量数学函数,实际上,我们
上一节中介绍的数学运算符就是函数的一种特殊形式。在Mathcad中输
入其内部定义函数,有以下几种方法:在工作表中直接键入函数名、单
击工具栏上的函数图标、按快捷键“Ctrl+F”、数学面板、使用
Insert/Function菜单。下面分类介绍Mathcad的各种常用函数。注意,
如果不特别说明,则以下函数中的参数遵循如下规则:m,n,i,j,k表示
整数变量;a,b,x,y表示实数变量;v表示向量;M,A,B等大写字母表示
矩阵。
1、全局优先运算符.
Mathcad工作表的执行顺序是由左到右,再由上到下。因此,假设
有一个变量或函数在工作表的某处使用“:=”定义,那么,你在这个定
义之前引用此变量或函数将会得到错误信息。而用全局变量或函数运算
符“”(快捷键~ )来定义,则在工作表的任何位置都有效。
2、条件函数
条件函数主要用于逻辑判断,列出如下:
if(cond,tval,fval)若cond为真,返回tval,否则返回fval
until(expr1,expr2)一直迭代到expr1<0终止,返回expr2的值
δ(m,n)(键入d,然后按Ctrl+G)如果m=n则返回1,否则返回0
Φ(x)(键入F,然后按Ctrl+G) x>0时返回1,否则返回0
3、自定义函数或变量
对于变量,可使用:
a:=1 b2 k:=1..10 x:=0,0.1..1
的方法定义,其中b为一全局变量;k也是一个变量,它的取值范围是
从1到10这10个整数值,而变量x=0,0.1,0.2,…,1.0,其一般语法是
(其中“..”按键盘上的“;”得到,而不是真正的2个小黑点):
x:=3 x的值为:x1,x2,x2+(x2-x1),x2+2(x2-x1),…,x3
3 x的值为:x1,x1+1,x1+2,x1+3,…,x3
对于非常简单的函数,可以使用如下方法定义:
f(x):=x+1 g(x,y)sin(x)+cos(y)
2
h(x,y,z):=Φ(x)+y+z s(x)if(x,x,-x)
其中“:=”按快捷键“:”,它定义的函数或变量从定义外开始有效,而
用“”定义的函数对整个工作表有效。对于复杂的函数,应使用我们以
后介绍的编程方法去定义一个函数。
4、基本函数
下面列出的大部分函数,都是最基本的数学函数。对于一目了然的
函数,我们不加说明。
●初等函数:exp(z)、ln(z)、log(z)(常用对数)、sin(z)、cos(z)、
1-9
tan(z)、csc(z)、sec(z)、cot(z)(余切)、asin(z)(反正弦)、acos(z)(反
余弦)、atan(z)(反余切)、sinh(z)、cosh(z)、tanh(z)、csch(z)、sech(z)、
coth(z)、asinh(z)(反双曲正弦)、acosh(z)、atanh(z)。
●复数函数:Re(z)(实部)、Im(z)(虚部)、arg(z)(辐角主值)。
●其它:ceil(x)、floor(x)、mod(x,y)、angle(x,y)(x轴正向和
原点与点(x,y)连线的夹角)。
5、向量与矩阵函数
对于向量,Mathcad可进行加、减、向量与数的乘法、转置、数量
积与向量积等运算;对于矩阵,Mathcad可进行矩阵与数的乘法、矩阵
间加、减、乘运算、矩阵求逆及转置、对矩阵取行列式的值等运算。这
些运算都可从数学面板或通过运算符的快捷键直接输入,以下是不能通
过数学面板或快捷键直接输入的矩阵或向量函数。
●矩阵连接函数:augment(A,B)将B放到A的左边而组成一个新的
矩阵,stack(A,B)将矩阵A放到矩阵B的上面组成一个新矩阵。
●子矩阵函数:submatrix(A,ir,jr,ic,jc)返回矩阵A的子矩阵,
其行数由ir到jr,列数由ic到jc。Mathcad默认向量或矩阵的下标
是从0开始的,但你可以重新设置系统变量ORIGIN的值来定义向量或
矩阵的开始下标,系统默认ORIGIN的初始值为0。
●向量与矩阵的大小函数:rows(A)返回矩阵A的行数;cols(A)返
回矩阵A的列数;identity(n)返回一个n×n的单位矩阵;length(v)
返回向量v的元素个数;last(v)返回v中最后一个元素的下标。
●一些与矩阵有关的值:max(A)返回矩阵中的最大元素值;min(A)
返回矩阵的最小元素值;tr(A)矩阵的迹;rank(A)矩阵的秩;norm1(A)
矩阵的1-范数;norm2(A)矩阵的2-范数;norme(A)矩阵的欧几里德范数;
normi(A)矩阵的无穷范数;cond1(A),cond2(A),conde(A),condi(A)由上
面各范数所计算出的矩阵条件数。
●矩阵与向量的重新排序;sort(v)将向量v以升序排列;reverse(v)
将向量v以降序排列;Csort(A,n)将矩阵A以第n行为索引,升序排列;
rsort(A,n)将矩阵A以第n列为索引,降序排列。
●矩阵的约化及分解:diag(v)返回一个矩阵,其对角元素为向量v,
其它为0;rref(A)利用行变换将A约化;cholesky(A)矩阵A的cholesky
Tm×n
分解,即返回下三角阵L,使L.L=A;qr(A)矩阵A的QR分解,即返回
矩阵[Q,R],其中Q为正交阵,R为上三角阵,且A=Q.R;lu(A)方阵
m×mm×n
A的LU分解,返回矩阵[P,L,U],其中L为下三角阵,U为上三角阵,且
有P.A=L.U。
●特征值与特征向量:eigenvals(A)返回由矩阵A的特征值所组成
的向量;eigenvec(A,z)返回矩阵A关于特征值z的全部单位化后的特征
向量;eigenvecs(A)返回矩阵A全部单位特征向量所组成的矩阵,矩阵
中的每一列为一个特征向量,第n列对应由eigenvals(A)所得到的第n
个特征值。
1-10
下面是Mathcad有关矩阵计算方面的例子。
ORIGIN:=1 TOL:=10
-4
5120.2266.849100.062
163A:A6.849100.2120.089
2370.0620.0890.199
13
3
|A|146A3AA17max(A)7rank(a)3
2,3
12
0.8160.4410.3744.387
eigenvecs(A)0.5770.5770.5773.194eigenvals(A)
0.6870.7260.03910.419
B:2A3A|B|8.526410|AA|0
25T
6、微积分的数值运算
这些运算都可以从数学面板或者快捷键选取,此处的微分与积分运
算是数值运算,符号运算我们将另外介绍。
d
f(x)2.070796TOL:10f(x):xsin(x)x:1
82
dx
100
v:(123456)k:2..4f(x)dx5.18600210
3
1
3
s1
5
v12v9(v)24
0,k0,js
kj1
T
7、数理统计
Mathcad提供了大量有关统计方面的函数,对于这些函数,我们都
列出其公式,但不给出具体例子。
●随机数的生成函数:rnd(x)返回一个介于0到x之间均匀分布的
随机数;runif(m,a,b)返回一个m个元素的向量,向量中的每个值都在
区间(a,b)间均匀分布。
1
m1n1
m×n
●统计公式:mean(A)=,其中A=(a),返回矩阵A
a
I,j
i,j
mn
i0j0
1
m1n1
的均值;var(A)= ,返回矩阵A的方差,其中
|amean(A)|
i,j
2
mn
i0j0
1
m1
A与上面相同;Var(v)= 返回样本矢量v的方差;
|amean(v)|
i
2
m1
i0
1-11
stdev(A)= 返回矩阵A的均方差;
1
m1n1
2
|amean(A)|
i,j
mn
i0j0
Stdev(v)= 返回样本矢量v的均方差;
1
m1
|amean(v)|
i
2
m1
i0
1
m1n1
cvar(A,B)=返回A与B的协方
(amean(A))(bmean(B))
i,ji,j
mn
i0j0
差;corr(A,B)用于计算A与B的相关系数。
●绘制直方图:hist(int,A)返回一个向量,其值是矩阵A中介于向
量int中第i个元素到第(i+1)个元素间的个数,其中v必须以升序排列,
要将返回的向量绘制成直方图,可使用Inset/Graph/3D Bar Chart,例
如:
A:=(1 1 8 9 3 5 6 7 2 4 6 7 5 2 5 4 9 6 5 3 5 6 8 5 2 5)
Int:=(0 1 2 3 4 5 6 7 8 9) g:=hist(int,A)
T
下面的统计分布函数我们给出了某些分布的具体公式,其它的分布
公式读者可查阅概率统计方面的资料。其中每一种分布有4个函数,分
别是:统计分布密度函数(首字母为d)、累积分布密度函数(首字母为p)、
分布的百分点函数(首字母为q,它是累积分布密度函数的反函数)、分
布的随机点列生成函数(首字母为r,它的第一个参数m表示产生服从某
个分布的向量的个数)。对于每个函数的详细信息,可参考HELP菜单的
说明。
●均匀分布:数学定义为
1
,axb
p(x)
ba
其它0,
函数dunif(x,a,b),punif(x,a,b),qunif(x,a,b),runif(x,a,b)。
●二项式分布:其数学定义为
n
binom(k,n,p)p(1p),0p1,k1,2,,n
knk
k
dbinom(k,n,p),pdinom(k,n,p),qbinom(p,n,r),rbinom(m,n,p)。
●负二项分布:
dnbinom(k,n,p),pnbinom(k,n,p),
qnbinom(p,n,r),rnbinom(m,n,p)。
●几何分布:其数学定义为
geom(k,p)p(1p),p1
k
1-12
dgeom(k,p),pgeom(k,p),qgeom(p,r),rgeom(m,p)。
●指数分布:其数学定义为
dexp(x,r)rexp(rx),r0
dexp(x,r),pexp(x,r),qexp(p,r),rexp(m,r)。
●泊松分布:
dpois(k,l),ppois(k,l),qpois(p,l),rpois(m,l)。
●正态分布:其数学定义为
(x)
2
normal(x,,(exp(),x
2
2
2
1
dnorm(x,κ,ζ),pnorm(x,κ,ζ),qnorm(p,κ,ζ),rnorm(m,κ,ζ)
●F分布:dF(x,a,b),pF(x,a,b),qF(p,a,b),rF(m,a,b)。
●t分布:dt(x,d),pt(x,d),qt(p,d),rt(m,d)。
●X分布:
2
dchisq(x,d),pchisq(x,d),qchisq(p,d),rchisq(m,d)。
8、线性插值与回归分析
●线性插值函数:linterp(vx,vy,x)返回以(vx,vy)为数据点,进
kk
行线性插值后,插值点x处的值,其中vx表示x轴上的点,必须升序排
列,vy代表相应y轴的点,它们的元素个数一定要相同。
●三次样条插值函数:interp(cspline(vx,vy),vx,vy,x)返回数据
点x处的三次样条插值后的值;interp(pspline(vx,vy),vx,vy,x)与上
面一样,只不过在曲线的2个端点处用抛物线进行连接,而不是用三次
曲线;interp(lspline(vx,vy),vx,vy,x)同上,但在2个端点处用直线
进行连接,其中vx、vy是实向量且vx升序。实际上,cspline(vx,vy),
pspline(vx,vy),lspline(vx,vy)的主要作用是:返回一个能够用插值
函数interp(vs,vx,vy,x)处理的向量vs。
●一维多项式回归:regress(vx,vy,k)与上面的样条插值函数一样,
返回一个用于函数interp(vs,vx,vy,x)中的向量vs,其结果是数据点x
处的最佳k次拟合多项式的值;loess(vx,vy,span)同样返回一个用于
interp(vs,vx,vy,x)的向量vs,它的每个数据点的某个邻域内都是最佳
的二次多项式拟合,其邻域的大小由span控制,其中vx、vy是2个元
素相同的实向量,vx升序,span为一正实数,其值在0与1间,当数据
在某些地方波动较大时,可选取较大的span,span一般应取0.75左右
为好,k是正整数,其值一般小于等于5。
●二维多项式回归:二维多项式回归与一维多项式回归大致相同,
只不过二维回归得到的是曲面上某点的值,而一维是一条曲线上某点的
值,对于二维多项式回归,Mathcad有三个函数:regress(Mxy,vz,k)返
回一个用于向量vs,再调用interp(vs,Mxy,vz,v)就可计算出在v处的
值,其中、Mxy是一个含有坐标(x,y)的m×2的矩阵,vz是m×1的向量,
1-13
它含有坐标z的值,v是要计算的插值点处的值,它是含有2个元素的
向量,分别表示x及y的值;对于函数loess(Mxy,vz,span)及
interp(vs,Mxy,vz,v),其用法可参考上面的,这里略去。
9、快速付立叶变换
Mathcad含有以下变换,具体可参考Help:fft、ifft、cfft、icfft、
FFT、IFFT、CFFT、ICFFT。
10、特殊函数
Mathcad也提供了许多特殊函数,下面是一些常用的特殊函数。
●Bessel函数:J0(x)、Y0(x)、J1(x)、Y1(x)、Jn(m,x)、Yn(m,x)、
I0(x)、K0(x)、I1(x)、K1(x)、In(m,x)、Kn(m,x)。
●其它函数:对于以下函数,如果写上函数,直接按键盘上的等号,
Mathcad是不会为你计算的,你应该使用菜单命令Math/Evaluate来计
算。其函数的具体说明,参见Help。列出如下:Chi(x)、Ci(x)、csgn(z)、
dilog(x)、Dirac(x)、Ei(x)、erf(z)、FresnelC(x)、FresnelS(x)、
GAMMA(z)、hypergeom(,,z)、LegendreE(x,k)、
LegendreEc(k)、LegendreEc1(k)、LegendreF(x,k)、LegendreKc(k)、
LegendreKc1(k)、LegendrePi(x,n,k)、LegendrePic(n,k)、
LegendrePic1(n,k)、Psi(n,x)、Psi(x)、Shi(x)、Si(x)、signum(x)、
W(x)、W(n,x)、Zeta(s)。
11、数据文件的读写函数
以下的f为一个字符串,如、c:等等,文件中的
数据可为常用格式(2.345)或科学计数法格式(1.23E10),文件中的数据
的分隔符可为回车、空格或TAB符。READ(f)从文件f中读入一个数;
READPRN(f)读入文件中的所有数据并赋给一个矩阵,此时数据格式要满
足矩阵的输入形式,即数据文件中每行的元素要相同;WRITE(f)将单个
数据写入文件中;WRITEPRN(f)将一个向量或矩阵写入文件中;APPEND(f)
将单个数据写入文件的末尾;APPENDPRN(f)将一个向量或矩阵一次写入
文件的末尾。对于向文件中写数据(使用WRITEPRN时),可以用系统内部
变量PRNPRECISION 及PRNCOLWIDTH来控制输出的列宽及小数点的位数,
系统默认为8位及4位。例如:若D盘根目录下文件中有3行数
据分别是1,2,3;4,5,6;7,8,9;则
i08aREAD("d:")a123456789
i
T
123
BREADPRN("d:")B456WRITEPRN("d:")B
789
1.3 方程的求解
1-14
本节专门介绍单个方程及方程组的求解方法、不等式的求解、求微
分方程的数值解等。
1、单个方程的求解
对于单个方程,可调用root(expr,var)求出它的根(返回一个数值),
其中expr表示求解方程的函数名或者某个函数表达式,var是根的估计
值。由于系统内部是使用割线法来求根的,因此,如果某个expr有多个
根,选取不同的var将得到不同的根,建议在求根前,先画出expr的函
数图形,然后再根据图形,选取不同的var,求出不同的根。另外,改
变系统变量TOL(默认为10)的值,可提高求根的精度。例如
-3
f(x)=x-sin(x) x:=1 root(f(x),x)=0.92863454
3
TOL:=10 y:=1 root(f(y),y)=-0.92862631
-8
但是,不能将TOL选得太小,否则对某些方程将会不收敛。最后,如果
能猜出方程存在复根,为了求出复根,应当选取复数初值,例如
f(x)=x+1 x=1+2i root(f(x),x)=i
2
2、求多项式的根
用函数root()一次只能求出一个根,而且这个求出的根还与所选取
的初值有关,而对于多项式,Mathcad中有一个专门求解其根的函数
polyroots(v),它能求出多项式的所有根(返回一个列向量),其中v是
一个列向量,它包含多项式中按幂次升幂排列的所有多项式系数。与上
面一样,系统变量TOL是控制根的精度的量。
例 求x+2x-8=0的根。
42
V=(-8 0 2 0 1) polyroots(v)=[-1.414 –2i 2i 1.414]
TT
另外,对求解多项式的次数的限制最高为100阶。还有一个更大的问题
是,对高次多项式,根的求解精度越来越差。在我们要介绍的3个数学
软件包中,Mathematica在这方面做得是最好的一个。
3、方程组的求解
Mathcad与Mathematica与MATLAB不同,它有一个特别的求解方程
组的数值方法,即求解模块。用这种方法,能够求出另外2个软件所不
能求解的方程组的解。求解模块不是一个函数,而是一种独特的结构,
它总是以关键字Given开始,以关键字Find结束,在Given与Find之
间,是方程组中的各个方程,它们无先后顺序,而在Given的前面,还
要对方程组中的各个变量赋初始值,即估计值。请看下面的例子:
TOL:=10 x:=1 y:=2 z:=3 %赋初值及重定义求解精度
-6
Given %Given与Find大小写可互用
x-2y+3z〓4 %这是恒等号,不是通常等号
2
x-y+sin(z)〓5 %快捷键是:Ctrl+=
cos(x)+sin(y)+cos(z)〓1 %或数学面板上的逻辑等号
T
Find(x,y,z) = [0.916 -4.889 -2.206] %返回一个列向量
结果是Find返回一个列向量,对比上例,我们可得到:x=0.916,
1-15
y=-4.889,z=-2.206。另外,也可以在求解模块前不定义初值,而是将
求解模块定义成函数形式,然后用初值调用此函数来获得方程组的解,
这种方法特别适合于试验不同初值,以获得不同的解,例如:
Given
x-2y+3z〓4
2
x-y+sin(z)〓5
cos(x)+sin(y)+cos(z)〓1
f(x,y,z):=Find(x,y,z) %定义求解函数f(x,y,z)
f(1,1,1)= [0.916 -4.889 -2.206]
T
f(-10,10,10) = [0.246 -5.475 -2.337]
T
但Find函数也不是什么方程都能求解,对于某些方程组,不论你选
取什么初值,Find函数可能都会告诉你,该方程组在这个初值下找不到
解。在这种情况下,Mathcad为我们提供了另外一个代替Find的函数
minerr,在用函数Find找不到解时,可以用这个函数来替代Find,其
用法与Find相同,例如,上面2个例子中含有Find的一行可写成
minerr(x,y,z)及f(x,y,z):=minerr(x,y,z)的形式。但是要注意的是,
T
minerr方法求出的是方程的近似解,其误差与方程的性态与初值有很大
的关系,建议只有在Find无效时,才使用minerr方法求解。另外,不
论用何种方法,求解模块中的自变量个数应不少于方程的个数。
求解模块不但能够求出方程组的解,它还能够在求解模块中输入不
不等式条件以求出在某些不等式限定条件下方程的解,甚至在求解模块
中都是不等式而没有任何一个方程,这可是Mathcad的一大特点。我们
下面就具体例子说明它的用法及其适用范围。例如
Given x+y〓2 x+y〓3 f(x,y):=find(x,y)
22
f(2,1) = [1.707 0.293] f(0,1) = [0.293 1.707]
TT
选取不再的初值,解可能会不相同,但是,增加一个不等式条件后:
Given x+y〓2 x+y〓3 y>x+1 f(x,y):=find(x,y)
22
f(2,1) = [0.293 1.707] f(0,1) = [0.293 1.707]
TT
在求解方程过程中,为了得到某个确定的解,可以适当增加不等式
条件,但一定不能与已有的方程或不等式矛盾。
4、微分方程的数值解
对于求解微分方程或微分方程组的初值问题数值解,即求下面方程
dY
F(x,y),Y(x)Y
00
,或方程组:Mathcad为我们提供了函数3个函
dX
数。rkfixed(y,x0,x1,npoints,D)用定步长Runge-Kutta法求方程的数
值解,其中y是含有n个初始条件的向量(对于一阶方程,n=1),[x0,x1]
是方程要求解的区间,npoints是在区间[x0,x1]内插入npoints个等分
点,将[x0,x1]分成(npoints+1)等份,D是这n个函数的导数所构成的列
向量,即函数向量F(x,y)(对于n=1,即某个简单的函数f(x,y)的形式);
rkadapt(y,x0,x1,npoints,D)采用变步长的Runge-Kutta法求解,最多
1-16
有npoints个分点,其它同上;bulstoer(y, x0,x1,npoints,D)采用
Bulirsh-Stoer方法求解,其求解精度比定步长的Runge-Kutta法略好
一点,其它同rkfixed函数的说明。这3个函数都返回一个矩阵,其首
列对应求解区间内的npoints个点上的x值,其它列对应它在这npoints
个点上的函数值(即解)。对于求解微分方程的边值问题,应该首先将边
值问题转化为初值问题再求解,具体作法请参考有关微分方程数值解方
面的书籍。
例 在[0,1]上求初值问题的数值解。
yxy,y(0)1
22
y=-1 x0:=0 x1:=1 n:=100 D(x,y)=x+y
0
22
S:=rkfixed(y,x0,x1,n,D) length(S)=101
<0>
((S))=[0.5 -0.631] ((S))=[1 -0.233]
T<50>TT<100>T
S是一个101行2列的矩阵,第0列是x在各分点上的值,第一列
是对应的函数值。下面是解的曲线图:
例 解方程 。
yy2y,y(0)1,y(0)3
设, 则
y(x)y(x),y(x)y(x)
01
dy
0
dy
y(x),y(x)2y
110
1
dxdx
即若设,
Y(y,y),F(x,y)(y,y2y),Y(1,3)
011100
TTT
则有,因此求解过程如下:
dY
F(x,y),YY
dx
x0
0
1
yD(x,y)S:rkfixedy,0,10,1000,D
3
y
1
y2y
10
其中S是一个1001行3列的矩阵,其中第0列是x在各分点上的值,
最后的一列即第二列才是对应点上的函数值。
1.4 图形绘制与动画制作
1-17
Mathcad的绘图功能虽然不如下面我们要介绍的2个数学软件强,
但它也能够满足实际应用的需要了。
1、绘制平面图形
选择Insert/Graph/X-Y Plot可绘制直角坐标系的平面图形(快捷键
@),选择Insert/Graph/Polar Plot可绘制极坐标图形(快捷键Ctrl+7)。
例如
f(x):=x.sin(x) g(x):=(x)
2
双击绘图区域,就会弹出一个对话框,可对图形选项进行修改:对
数轴或者直角坐标系轴、刻度的标注方法、坐标轴是否交叉、线型、坐
标轴及图形的标题等等,另外,也可直接单击图形的占位符修改如变量
或函数的形式及个数、变量或函数的取值范围等。另外,从上一节中,
我们可以看出,对2个长度相同的列向量,我们将其中一列看成是自变
量,另一列看成是函数值,就可以对它绘图。
2、绘制空间图形
选择Insert/Graph/Surface Plot绘制曲面图(快捷键Ctrl+2),选
择Insert/Graph/Contour Plot绘制等高线图(快捷键Ctrl+5),选择
Insert/Graph/3D Scatter Plot绘制三维散点图,选择Insert/Graph /3D
Bar Char绘制直方图,选择Insert/Graph/Vector Field Plot 绘制向
量场图,三维图可进行旋转观察,其它说明与上面相同。
Mathcad画曲面图的作法是:将曲面的高度值存入一个矩阵,然后
调用Insert/Graph/Surface Plot,将矩阵变量填入图形中的占位符内,
下面画出z=x+y的图象,由于它的显示效果及功能都太差劲,我们不想
22
过多说明。等高线的输入要求与此相同。
三维直方图的画法很简单,它只需要先建立一个向量,然后调用
Insert/Graph /3D Bar Char,在出现的绘图的图形占位符处输入这个向
量符号即可。例如
bar:=(3 2 1 4 7 3 9 6 8) %然后创建直方图,在占位符处输入bar
1-18
向量场图的绘制方法是:先创建一个矩阵,矩阵中的每一个元素都
表示该场中的某一个点(x,y),此点用复数Z=x+iy的形式表示,然后将
此矩阵向量填入向量场图的占位符处即可。要注意复数的输入方法,例
如:3+2i的2与i之间不应有乘号,即使是输入i,也应输入1i才行。
3、动画制作
Mathcad能够制作动画并且还能将它存为AVI格式的文件以供其它
程序如媒体播放器播放。我们以Help/Resource Center/Animation中的
一个例子来介绍动画的制作过程。
例 制作极坐标下的图形r(x)=x(螺旋线)的动画,其中x为角度。
先输入绘图函数及x的取值范围,其中FRAME是一个系统变量,它
不能在工作区内赋值,只能通过View/Animate赋值,系统默认初始值为
0。下面一行的意思是,对此图形从x=0到x=FRAME(即帧),按x每次
增加0.1计,生成若干幅不同的图形(即不同的帧)。
r(x):=x x:=0,0.1..FRAME
然后,调用Inert/Graph/Polar Plot插入一个极坐标图形,但由于
FRAME=0,你将看不到螺旋线。现在,打开View/Animate菜单,你会看
到弹出一个对话框,其中FRAME的初值为From(它表示从第From帧开始
播放),终值为To(它表示到To帧终止播放),每秒的播放速度为At。选
取合适的值,比如我们想让这个动画播放2秒,每秒16帧,则可选取
From=0, To=35, At=16。然后,在图形区域内,按下鼠标左键并拖动,
选取此图形要求播放动画的部分,单击弹出菜单的Animate按钮,你就
会看到动画。另外,你也可以在紧接着弹出的Playback(回放)窗口中往
复观察其执行结果。最后,如果你高兴的话,可以单击对话框中的Save
As按钮,将之存成AVI文件以供其它程序使用。
在动画制作过程中,最关键是:画出若干幅(帧)图象,而每一幅(帧)
都与变量FRAME有关,并且是连续变化的。下面是在y=x的图象上,直
2
线y=c(其中c为常数,它与FRAME有关,总是在变化)垂直于y轴从y=0
移动到y=1的例子。先定义函数及规定取值范围。
FRAME
x:1,0.99..1f(x):xg(x):
2
39
然后按@键画出图形,双击图形区域,选取交叉坐标轴。再调用菜单
View/Animate,取From=0, To=39, At=10, 按下左键,拖动鼠标,选择
全部图形区域,然后单击对话框中的Animate按钮,就可观察到一条直
线从x轴开始,平行于x轴慢慢向上移动,最后到y=1的位置时动画结
束,时间正好是4秒。怎么样,制作一个平面图形动画真是太容易了!
不过我得提醒你,绘图的范围要选得合适,即每帧的图形x及y的坐标
范围都要一样,否则会发生滚屏现象。
1.5 符号计算
1-19
Mathcad的符号运算功能不如Mathematica与MATLAB强大,但它直
观易懂、基本上不用记忆即可使用。它所有的符号运算都包含在菜单
Symbolics之内,你可以按以下步骤在Mathcad中进行符号运算:
●输入要计算的合法数学表达式,其中大部分数学符号都可用快捷
键或通过数学面板输入。用鼠标选定要计算的数学公式,或者将十字丝移
至数学区域内,然后执行菜单Symbolics中的某个合适的计算功能计算
结果,此时Mathcad将会把计算结果显示在紧靠数学区域的下面。例如
输入积分
b
xedx
a
x
exp(b)bexp(b)exp(a)aexp(a)
在输入上面的积分后,选Symbolics/Evaluate/Symbolically菜单
命令或按快捷键Shift+F9即可在当前数学公式的下面,得到计算结果。
另外,你也可以进入Symbolics/Evaluation Style选项,修改表达式输
出结果的位置,使结果显示在表达式的后面。
●输入数学公式后,紧接着按Ctrl+Shift+.,Mathcad显示“→”,
在占位符处输入符号计算相应的关键字或直接从数学面板上选取关键
字,将十字丝移出数学区域或者直接按回车键即可。
(xy)expandx4xy6xy4xyy
4432234
另外对于某些需要指定变量的命令,如方程求解命令、幂级数展开
命令等,可以采用上面的方法,也可以采用如下方法:进入数学区域后,
用编辑线选择指定的变量,然后执行某个需要指定变量的命令,如
Symbolics/Variable中的命令。具体方法如下:
sin(ax)axaxaxOx
sin(ax)xaxaxaO(a)
11
33556
6120
11
35556
6120
如果你不愿意记住关键字,那你可以从数学面板上选取,全部关键
字都在“Symbolic Keyword Palette”子板上,它们是:→(输入单个
占位符)、→(输入双占位符)、float(表达式求实数值)、complex(表
达式求复值)、expand(展开表达式)、solve(方程求解)、simplify(化简
表达式)、substitute(变量代换)、collect(整理表达式)、series(级数
展开)、assume(规定变量的类型、范围等)、parfrac(将多项式化成有理
分式)、coeffs(提取多项式的系数)、factor(提取公因子)、fourier及
invfourier(付立叶变换及逆变换)、laplace及invlaplace(拉式变换及
逆变换)、M→(矩阵转置)、M→(矩阵求逆)、|M|→(行列式求值)、
T-1
1-20
Modifiers(数学面板的子面板,与assume联合使用)。
●如果某个数学公式只有一种符号计算形式,输入数学公式后,按
快捷键Ctrl+.,然后按回车键或者将十字丝移出数学区域,Mathcad将
会给出计算结果,例如积分计算。但是,如果某个数学表达式有若干种
符号计算形式,例如对于初等代数运算,Mathcad提供了expand、
simplify、collect、factor等多种方法,按Ctrl+., Mathcad是不会
为你计算的,因为它不知道该怎么算才是正确的。例如
(xy)(xy)
44
x3xy3xyyx3xy3xyy
33233323
xsin(x)dxxcos(x)2cos(x)2xsin(x)
22
另外,Symbolics/Evaluate或关键字evaluate与此等价,例如
d
xtan(x)evaluate2xtan(x)x(1tan(x))
222
dx
下面我们简单介绍一下各种符号运算命令。
1、初等代数运算
●simplify命令或者菜单命令Symbolics/Simplify可进行基本代
数与三角表达式的化简,其运算的本质是,在某个表达式的多个等价结
果中,给出其数学表达最短的一个,它会根据系统内部定义的等价规则,
对表达式进行一系列的变换,如进行factor、expand、collect等变换,
直到找到最简数学表达式。
●factor命令或者菜单命令Symbolics/Factor可对表达式进行因
式分解,即将基本代数或者三角表达式化成若干项乘积的形式。
●expand命令或者菜单命令Symbolics/Expand可对代数或三角表
达式进行展开运算,即将表达式展开成各个子数学表达式和的形式。
●collect命令或者菜单命令Symbolics/Collect按指定的变量重
新整理代数或三角表达式,即将指定变量的相同类型的项的系数合并,
使相同类型的项归纳到一起。
●parfrac 命令或者菜单命令Symbolics/Vriable/Convert to
Partial Fraction或者可将多项式化成有理分式的形式,即
efx
jj
axaxa
mm10
mm1
1
2nm1
cd
bxbxbgxhxl
nm10jjj
ij
ii
●coeffs 或者菜单命令Symbolics/Polynomial Coefficient可以
将多项式的系数按升幂赋给一个列向量。
●substitute命令或者菜单命令Symbolics/Variable/Substitute
可用指定的变量或式子替换基本代数或三角表达式中的某个子表达式或
者变量。
●evaluate命令或者菜单命令Symbolics/Evaluate可对代数表达
式进行求值,如果是数值表达式,则它进行数值运算,如果是符号表达
1-21
式,它进行符号运算。Evaluate还提供了三个运算子项symbolically(符
号运算)、floating(实数数值运算)、complex(复数运算),这3个选项
可以更进一步指定某种类型的数学运算。
(2x3y)expnad8x36xy54xy27y
33223
8x36xy54xy27y(3y2x)
32233
8x
3
2
36x
8x36xy54xy27ycoeffs,y
3223
54x
27
cos(t)sin(t)(cos(t)sin(t))
33
simplify
2
cos(t)
cos(t)cos(t)sin(t)
axbxcxx1collect,x(1a)x(1b)x1c
222
axbxcxx1substitute,x1,ab2bc3
22
1111
x(x1)(x1)
22
注:关键字parfrac有问题
xx1
abab
adbc
cdcdca
db
1
(adbc)(adbc)
(adbc)(adbc)
与Mathematica比起来,Mathcad的符号计算功能实在是能力有限,
例如,对使用simplify命令,Mathcad得到的竟然是
cos(x)sin(x)
22
cos(x)cos(x)1
22
,对于我们下面要介绍的命令,同样是如此。另外,
它的运算也不到位,比如对上面的三角函数式的化简,Mathematica会
给出 1+tan(x)的形式。
还有一个实际问题,就是对于比较复杂的符号计算,可能要经过很
多命令对其反复运算,才能得到最简结果。例如,定积分的结果计算出
来后,我们可能要对其应用simplify、factor等命令进行化简,而化简
后的结果我们又想画出其函数图形。在Mathcad中,如果下一次运算应
用上一次的结果,有两种办法能够做到这一点:①将此结果拷贝至剪裁
板(按下鼠标左键移动鼠标或同时按Shift及光标移动键将表达式涂黑,
然后执行菜单命令Edit/Copy或按Ctrl+C),再从剪裁板粘贴到工作表
1-22
内(执行菜单命令 Edit/Paste或按Ctrl+V)。②将每次的符号运算结果
定义为一个函数,然后下次的运算对此函数操作即可。例如
d2x
22
f(x):xatan(x)g(x):f(x)2
2222
dx(1x)(1x)
2
g(x)simplifyg(2)0.08g(2)float0.08
22
(1x)
24
w:g(2)v:wv6.410v
23
25625
上面运算表明,“=”求的是数值解,“→”求的是解析解。我们也可
以采用一次对表达式进行多种运算的方式,具体做法如下:输入表达式,
然后接着按Ctrl+Shift+.,可以看到表达式后面出现一个占位符,键入
某个关键字后,再次按Ctrl+Shift+.,可以看到在刚才键入的关键字的
左侧出现一条竖线,并且在此竖线右侧的下方又多了一个占位符,在此
占位符处键入第二个关键字,依此类推,用这种方法你可以键入更多的
关键字,对表达式一次进行多种符号运算,例如
(xa)4a
22
expand
substitute,xa
其中上面“x=a”的等号从数学面板选取或按快捷键“Ctrl+=”得到。
2、方程与不等式的求解
●solve或者菜单命令Symbolics/Variable/Solve用于求解单个方
程或方程组。注意,下面的所有运算符都可从数学面板是选取,如果直
接输入,“=”请按Ctrl+=,增加占位符及“→”输入Ctrl+Shift+。
11
2
aa4b
22
2
xaxb0solve,x
11
aa4b
2
22
注:这是使用菜单命令计算
xaxb0
2
(xb)
2
x
xyz1x
2
yxyz1solve,
1ii
1ii
xyz1z
(2x)(x2)
x5x4x200solve,x
32
x5
对于利用solve求不等式的解,如果solve给不出不等式的解又无
1-23
错误信息,则说明不等式恒成立。
●利用求解模块解方程组,需要将方程组输入在given与find之间,
并将find后面的“:=”或“=”用“→”替换,不用写初值。
givenxy17xy5find(x,y)
23
439
124
3、微积分运算
●求极限运算,包括极限(快捷键Ctrl+L)、右极限(快捷键Ctrl+A)、
左极限(快捷键Ctrl+B)。对多元函数极限,只需连续使用多个极限运算
符即可。以上运算符也可通过数学面板选取。
111
limxxln1limlim
2
xx0y0
x2xy2
xy11
●求导运算,包括求一阶导数(快捷键?)、高阶导数(快捷键
Ctrl+Shift+/),以上运算均可从数学面板上选取。
f(x,y):xxyyf(x,y)6x2y
322
d
2
dx
2
dd
2
2
f(x,y)2
dx
dy
Mathcad不提供如求隐函数、复合函数的导数公式,这需要你利用
它提供的基本公式及导数的运算法则来自己用Mathcad推导。
●求积分运算,包括不定积分(无快捷键,可执行菜单命令Symbolics
/Variable/Intgrate,并且若函数中末知数多于一个,要用编辑线选择
积分变量)、定积分(快捷键&)、二重积分与三重积分(连续按2次或3次
&),以上运算符也可从数学面板选取。
145
xsin(2x)dxxydxdy
22
28
01
2
y2
y
2
●幂级数展开运算,其关键字为series,也可从数学面板选取或者
执行菜单命令Symbolics/Variable/Expand to Series。
11
2x2xseries,x022x
422
432
这种展开方法不含高阶无穷小项,而用菜单命令展开(正如前面所看到的)
含高阶无穷小项。
1.6 Mathcad程序设计
在Mathcad中进行程序设计,其样子很象其它计算机语言中的流程
1-24
图,特点是程序的层次分明,一目了然。看下面的例子。
xifx1
f(x):xif((x2)(x1)(x1)(x2))
2
4otherwise
其中“+”与其它计算机语言的“or”相同,“.”是“and”相同。
在工作表内设计的每个子程序,可带有参数(如上面的变量x,相当
于PASCAL中以Function开头的函数子程序),也可不带有参数(相当于
PASCAL中以Procedure开头的过程),Mathcad的程序总是由“:=”来定
义的,分段函数f(x)等号后边的竖线称为层次线,在同一层次下,Mathcad
总是由上向下执行的,层次线及if等不能直接通过键盘输入,只能用数
学面板中的编程面板中输入。在当前层次下增加新行的方法主要是看编
辑线所处的位置,当编辑线在某一行的开始并且括住整个行时,单击“Add
Line”按钮,则在此行的前面插入一新行;当编辑线在某一行的结尾并
且括住整个行时,单击“Add Line”按钮,则在此行的后面插入一新行。
在层次线下再增加层次线的方法是:将编辑线定位在要增加层次线的位
置,单击“Add Line”按钮。与其它计算机语言一样,对于含有参数的
程序,可以用return返回程序的计算结果,但如果在程序的执行过程中
没有遇到return语句,则程序返回最后一行的计算结果。实质上,层次
线就是我们其它计算机语言中的结构,例如PASCAL中的“BEGIN..END”
块,C语言中用“{...}”括起来的某个结构等,请见下面的例子。
k1
s0
whilek0
prog:prog
ssk
kk1
k
s
10
45
此程序返回一个列向量,其中“←”称为局部赋值符号,而k、s是
两个局部变量,它们在程序prog的外面是不可见的。另外,在程序prog
前面所定义的所有变量及函数对程序prog来说,都是可见的。此外,如
果prog引用工作表中在它后面出现的变量或者函数,就需要将此变量定
义成全局变量(用“≡”定义)的形式。在Mathcad中,可以返回任何符
合语法规则的表达式。下面介绍编程面板上的各个语句,其中当expr、
expr1、expr2可为多个语句时,可用层次线界定。
1、if语句
if语句提供某种条件控制,其格式为
expr if condition
1-25
或
expr1 if confition
expr2 otherwise
它就是其它计算机语言中的if..else结构,其中otherwise不能单独使
用,只能与if联合使用。
2、while循环
while循环是比较控制条件是否得到满足来控制循环的,其格式为
while condition
expr1
3、for循环
for循环提供另一种条件控制的循环机制,其格式为
for varloop_value
expr
下面是for循环的一种最常用的格式,也是我们在其它计算机语言
中常常看到的格式。
s0s0
sum1(n):fori1,3..nsum(n):fori1..n
ssissi
22
sum1(5)35sum(5)55
在for循环中,loop_value也可以是一个向量,例如,下面的两个
程序其内部机理是一样的。
u(1.23.45.67.89.0)u(1.23.45.67.89.0)
TT
s0s0
sum2(v):fori0..length(v)1sum3(v):forv1v
ssvssv1
i
sum2(u)27sum3(u)27
4、return语句
我们知道,如果没有return语句,程序返回最后一行的计算值,但
是,可以使用return语句在程序运行的适当位置,返回程序的值。例如
fori0..length(v)1
return0ifv0
i
f(v):
v
v
i
1
v
i
上面函数当列向量v中含有为零的分量时,返回f(v)=0,否则返回将该
列向量的每个分量取倒数后的向量。
5、break与continue语句
1-26
如果break用在for或者while循环中,则会中断当前循环进程,
程序跳转到紧接着for或者while循环的下一个语句继续执行;如果
break用在某个非for或者while结构块中,它会直接跳出此结构块,
请看下面的两个例子。
s1
s1a0
2
g(x):sbreakh(x):aas
3ss1
xs
g(5)2h(5)16
whilesx
breakifs3
a10
continue语句只能用在for和while循环体中,当程序执行到此语
句后,它会马上重新进入下一个循环,而不会再运行循环体内continue
后面的语句。这里我们不再举出相应的例子。
6、on error语句
on error语句为我们提供了一种程序出错时,对错误进行标记的方
法,其格式为
expr1 on error expr2
它的意思是,当表达式expr2计算可行时为表达式expr2的值,当
表达式计算出错时为表达式expr1的值。例如对上面在return语句中定
义的函数f(v),它要求v是一个列向量,如果你输入一个不满足条件的
值,比如f(2),将会得到如下错误信息:This value must be a vector.
It can be neither a matrix nor a scalar。也就是说,Mathcad认为,
此处应当输入一个列向量,增加on error语句后,有
F(v):=”v must be a vector!” on error f(v)
F(2)=”v must a vector!”
20.5
F()=
40.25
其中,on error只能通过编程面板输入,”v must a vector”是一个
字符串,它的分隔符是键盘上的双引号。
Mathcad中的基本内容,我们都已经介绍过了,下一章,我们将介
绍另一个符号运算功能强大的数学软件包---Mathematica的基本使用方
法。
1-27
发布评论