Modifiers(数学面板的子面板,与assume联合使用)。
●如果某个数学公式只有一种符号计算形式,输入数学公式后,按快捷键Ctrl+.,然后按回车键或者将十字丝移出数学区域,Mathcad将会给出计算结果,例如积分计算。但是,如果某个数学表达式有若干种符号计算形式,例如对于初等代数运算,Mathcad提供了expand、simplify、collect、factor等多种方法,按Ctrl+., Mathcad是不会为你计算的,因为它不知道该怎么算才是正确的。例如
(x?y)?(x?y)3344233323x?3?x?y?3?x?y?y?x?3?x?y?3?x?y?y
?x
ddx2?sin(x)dx?x?cos(x)?2?cos(x)?2?x?sin(x)2另外,Symbolics/Evaluate或关键字evaluate与此等价,例如
x?tan(x)evaluate?2?x?tan(x)?x?(1?tan(x))
222 下面我们简单介绍一下各种符号运算命令。
1、初等代数运算
●simplify命令或者菜单命令Symbolics/Simplify可进行基本代数与三角表达式的化简,其运算的本质是,在某个表达式的多个等价结果中,给出其数学表达最短的一个,它会根据系统内部定义的等价规则,对表达式进行一系列的变换,如进行factor、expand、collect等变换,直到找到最简数学表达式。
●factor命令或者菜单命令Symbolics/Factor可对表达式进行因式分解,即将基本代数或者三角表达式化成若干项乘积的形式。
●expand命令或者菜单命令Symbolics/Expand可对代数或三角表达式进行展开运算,即将表达式展开成各个子数学表达式和的形式。 ●collect命令或者菜单命令Symbolics/Collect按指定的变量重新整理代数或三角表达式,即将指定变量的相同类型的项的系数合并,使相同类型的项归纳到一起。
●parfrac 命令或者菜单命令Symbolics/Vriable/Convert to Partial Fraction或者可将多项式化成有理分式的形式,即
amxmn?am?1xm?1???a0???b0bnx?bm?1xm?1??ci1i?di??jej?fjxgjx?hjx?lj2
●coeffs 或者菜单命令Symbolics/Polynomial Coefficient可以将多项式的系数按升幂赋给一个列向量。
●substitute命令或者菜单命令Symbolics/Variable/Substitute可用指定的变量或式子替换基本代数或三角表达式中的某个子表达式或者变量。
●evaluate命令或者菜单命令Symbolics/Evaluate可对代数表达式进行求值,如果是数值表达式,则它进行数值运算,如果是符号表达
1-21
式,它进行符号运算。Evaluate还提供了三个运算子项symbolically(符号运算)、floating(实数数值运算)、complex(复数运算),这3个选项可以更进一步指定某种类型的数学运算。
(2?x?3?y)expnad?8?x?36?x?y?54?x?y?27?y33223 8?x3?36?x2?y?54?x?y2?27?y3??(3?y?2?x)3?8?x3??2??36?x3223?8?x?36?x?y?54?x?y?27?ycoeffs,y???54?x????27????
cos(t)?sin(t)233cos(t)?cos(t)?sin(t)simplify?(cos(t)?sin(t))cos(t)
a?x2?b?x?c?x2?x?1collect,x?(1?a)?x2?(1?b)?x?1?c a?x2?b?x?c?x2?x?1substitute,x?1,a?b?2?b?c?3
1x?(x?1)21x?1(x?1)2?1x?1注:关键字parfrac有问题
??c?ab???a?d?b?cd??a??cb??d??1d??(a?d?b?c)???c??(a?d?b?c)??(a?d?b?c)??a?(a?d?b?c)???b
与Mathematica比起来,Mathcad的符号计算功能实在是能力有限,例如,对cos2(x)?sin2(x)使用simplify命令,Mathcad得到的竟然是
cos(x)?cos(x)?1,对于我们下面要介绍的命令,同样是如此。另外,
22它的运算也不到位,比如对上面的三角函数式的化简,Mathematica会
给出 1+tan(x)的形式。
还有一个实际问题,就是对于比较复杂的符号计算,可能要经过很多命令对其反复运算,才能得到最简结果。例如,定积分的结果计算出来后,我们可能要对其应用simplify、factor等命令进行化简,而化简后的结果我们又想画出其函数图形。在Mathcad中,如果下一次运算应用上一次的结果,有两种办法能够做到这一点:①将此结果拷贝至剪裁板(按下鼠标左键移动鼠标或同时按Shift及光标移动键将表达式涂黑,然后执行菜单命令Edit/Copy或按Ctrl+C),再从剪裁板粘贴到工作表
1-22
内(执行菜单命令 Edit/Paste或按Ctrl+V)。②将每次的符号运算结果定义为一个函数,然后下次的运算对此函数操作即可。例如
f(x):?x?atan(x)g(x):?2(1?x)v:?w222d22dxf(x)?2(1?x)2?2?x222(1?x) g(x)simplify?w:?g(2)?225g(2)?0.08v?6.4?10?3g(2)float?0.08v?4625
上面运算表明,“=”求的是数值解,“→”求的是解析解。我们也可以采用一次对表达式进行多种运算的方式,具体做法如下:输入表达式,然后接着按Ctrl+Shift+.,可以看到表达式后面出现一个占位符,键入某个关键字后,再次按Ctrl+Shift+.,可以看到在刚才键入的关键字的左侧出现一条竖线,并且在此竖线右侧的下方又多了一个占位符,在此占位符处键入第二个关键字,依此类推,用这种方法你可以键入更多的关键字,对表达式一次进行多种符号运算,例如 (x?a)2expandsubstitute,x?a?4?a2
其中上面“x=a”的等号从数学面板选取或按快捷键“Ctrl+=”得到。 2、方程与不等式的求解
●solve或者菜单命令Symbolics/Variable/Solve用于求解单个方程或方程组。注意,下面的所有运算符都可从数学面板是选取,如果直接输入,“=”请按Ctrl+=,增加占位符及“→”输入Ctrl+Shift+。
1??1?a???22 x2?a?x?b?0solve,x????1?a?1???22?2a?4?b??
2a?4?b??? x?a?x?b?02?(x?b)x?ii2 注:这是使用菜单命令计算
?x2?y?z?1??x??1??? ?x?y?z?1?solve,?y?????1?x?y?z?1???z????i?? ?i??(?2?x)?(x?2)?32x?5?x?4?x?20?0solve,x??? x?5?? 对于利用solve求不等式的解,如果solve给不出不等式的解又无
1-23
错误信息,则说明不等式恒成立。
●利用求解模块解方程组,需要将方程组输入在given与find之间,并将find后面的“:=”或“=”用“→”替换,不用写初值。
givenx?y?1723x?y?5?4find(x,y)???1329???4?
3、微积分运算 ●求极限运算,包括极限(快捷键Ctrl+L)、右极限(快捷键Ctrl+A)、左极限(快捷键Ctrl+B)。对多元函数极限,只需连续使用多个极限运算符即可。以上运算符也可通过数学面板选取。
?1??1? lim?x?x2?ln?1????x??x??2??limlimx?y?1?1x?y?12
x?0y?0 ●求导运算,包括求一阶导数(快捷键?)、高阶导数(快捷键Ctrl+Shift+/),以上运算均可从数学面板上选取。 f(x,y):?x?x?y?y322d22dxf(x,y)?6?x?2?y
d22ddydxf(x,y)?2
Mathcad不提供如求隐函数、复合函数的导数公式,这需要你利用它提供的基本公式及导数的运算法则来自己用Mathcad推导。 ●求积分运算,包括不定积分(无快捷键,可执行菜单命令Symbolics /Variable/Intgrate,并且若函数中末知数多于一个,要用编辑线选择积分变量)、定积分(快捷键&)、二重积分与三重积分(连续按2次或3次&),以上运算符也可从数学面板选取。
? ?x?sin(2?x)dx?20?122y?2??2?1y2??x?ydxdy?458
●幂级数展开运算,其关键字为series,也可从数学面板选取或者执行菜单命令Symbolics/Variable/Expand to Series。 2?x2series,x?0?2?14?2?x?2132?2?x4
这种展开方法不含高阶无穷小项,而用菜单命令展开(正如前面所看到的)含高阶无穷小项。
1.6 Mathcad程序设计
在Mathcad中进行程序设计,其样子很象其它计算机语言中的流程
1-24
图,特点是程序的层次分明,一目了然。看下面的例子。
xf(x):?x2ifx?1if((x??2)?(x??1)?(x?1)?(x?2))otherwise
4其中“+”与其它计算机语言的“or”相同,“.”是“and”相同。 在工作表内设计的每个子程序,可带有参数(如上面的变量x,相当于PASCAL中以Function开头的函数子程序),也可不带有参数(相当于PASCAL中以Procedure开头的过程),Mathcad的程序总是由“:=”来定义的,分段函数f(x)等号后边的竖线称为层次线,在同一层次下,Mathcad总是由上向下执行的,层次线及if等不能直接通过键盘输入,只能用数学面板中的编程面板中输入。在当前层次下增加新行的方法主要是看编辑线所处的位置,当编辑线在某一行的开始并且括住整个行时,单击“Add Line”按钮,则在此行的前面插入一新行;当编辑线在某一行的结尾并且括住整个行时,单击“Add Line”按钮,则在此行的后面插入一新行。在层次线下再增加层次线的方法是:将编辑线定位在要增加层次线的位置,单击“Add Line”按钮。与其它计算机语言一样,对于含有参数的程序,可以用return返回程序的计算结果,但如果在程序的执行过程中没有遇到return语句,则程序返回最后一行的计算结果。实质上,层次线就是我们其它计算机语言中的结构,例如PASCAL中的“BEGIN..END”块,C语言中用“{...}”括起来的某个结构等,请见下面的例子。
k?1s?0whilek?0?10?prog???
?45? prog:?s?s?kk?k?1?k????s?此程序返回一个列向量,其中“←”称为局部赋值符号,而k、s是两个局部变量,它们在程序prog的外面是不可见的。另外,在程序prog前面所定义的所有变量及函数对程序prog来说,都是可见的。此外,如果prog引用工作表中在它后面出现的变量或者函数,就需要将此变量定义成全局变量(用“≡”定义)的形式。在Mathcad中,可以返回任何符合语法规则的表达式。下面介绍编程面板上的各个语句,其中当expr、expr1、expr2可为多个语句时,可用层次线界定。
1、if语句
if语句提供某种条件控制,其格式为 expr if condition
1-25