►Down◙Main基本符号运算化简因式分解解方程解不等式►Down◄Up◙Main化简化简计算结果在Mathematica中,符号运算的结果经常是没有化简的,与人工计算的答案不同。但是Mathematica提供了很强的化简功能,能自动或在人工参与下将结果化简,最终得到形式满意的答案。常用的化简函数有两个:Simplify[expr]使用变换化简表达式。FullSimplify[expr]使用更广泛的变换化简表达式。如果使用前一个函数不满意,再使用后一个函数。►Down◄Up◙Main例Simplify[Cos[x]^2+Sin[x]^2]Simplify[Cos[x]^2+2Sin[x]Cos[x]+Sin[x]^2]FullSimplify[Cos[x]^2+2Sin[x]Cos[x]+Sin[x]^2]Simplify[]Simplify[,a0]说明:从例中可以看到这两个函数的差异,后一个功能更强。从Out[4]看到根式没有化简,因Mathematics不知道a是什么类型的数,不化简反倒是正确的。从In[5]〕中可以看出,这两个函数允许加上含有条件的第二个可选参数,使化简得以进行。2a2a►Down◄Up◙Main带有条件的化简化简函数允许带有条件,条件可以是等式或不等式,还可以使用下面的表达式指明数的取值范围。x∈dom或Element[x,dom]dom只能取下列集合之一Integers整数集合。Rationals有理数集合。Reals实数集合。Complexes复数集合·Primes素数集合。Algebraics代数数集合。BooleansTrue或False.注意:以上集合都按常规的定义,但是也有例外如小数不算作有理数.►Down◄Up◙Main测试实例:►Down◄Up◙Main带条件的化简化简特殊函数►Down◄Up◙Main常用的因式分解函数因式分解Factor[expr]用于和式的因式分解,也可以分解分式的分子、分母〔还可以先通分再分解)。►Down◄Up◙Main合并同类项合并同类项的函数是CollectCollect[expr,x]将表达式expr中的x的同次幂合并。Collect[expr,{x,y,...}]v将表达式expr按x,y,…的同次幕合并。注意:上例中表明,当第2个参数有多个变量时,答案与第2个参数中变量的次序有关。►Down◄Up◙Main表达式的展开将表达式展开的函数有:Expand[expr]ExpandAll[expr]这两个函数都可用于乘积的展开,也可以展开分式。后者展开得更为彻底,前者展开分式时只展开分子,而后者将分子、分母都进行展开。•还有两个特殊的展开函数:•ExpandNumerator[expr]只展开分式的分子。•ExpandDenominator[expr]只展开分式的分母►Down◄Up◙Main►Down◄Up◙Main分式的化简与展开下列函数分别用于有理式的合并、化简与展开:Together[expr]用于通分,把所有的项放在同一个分母上并化简Cancel[expr]用于约去分子、分母的公因式。Apart[expr]将有理式分解为最简分式的和。说明:由上例可以看出,这三个函数对于同一个分式的作用效果不同。函数Apart通常用于求有理式的积分,它的第二个可选参数表明谁是变量,在上例In[5]中的a,b则作为常数。►Down◄Up◙Main输出的缩减形式有时输出结果很长,并不需要了解其中的细节,只需知道它的结构,这时可以使用函数Short简化结果的输出形式;Short[expr]将输出结果缩略成一行显示。Short[expr,n]将输出结果缩略成n行显示。说明:Out[1]//Short中41表示省略了41项。指定行数n后,有时实际显示会少于n行。上例第3句的函数Length用于求表达式的项数。►Down◄Up◙Main三角函数式的化简三角函数专用的分解、展开、化简函数TrigExpand[expr]将三角函数式展开。TrigFactor[expr]将三角函数式因式分解。TrigReduce[expr]用倍角化简三角函数式。TrigToExp[expr]将三角函数式转换成指数形。ExpToTrig[expr]前一个函数的逆变换。►Down◄Up◙Main注意:从实际常用的倍角公式知道,In[1]的答案应该有3种、但Out[1]只能给出一种,因此使用机器化简远不如人灵活,有时还需要人机结合。►Down◄Up◙MainMathematica在求不定积分时,答案常出现双曲函数,不符合人工解题习惯,可以使用TrigToExp转换►Down◄Up◙Main多项式的运算两个多项式的四则运算使用通常的+,-,*,/运算符,其中乘号可以用空格代替注意:可以看到,乘法和除法其实什么也没做,需要用前面介绍的化简函数将结果再化简。►Down◄Up◙Main介绍四个常用函数:PolynomialQuotient[pl,p2,x]求x的多项式p1被p2除的商。PolynomialRemainder[pl,p2,x]求x的多项式p1被p2除的余。PolynomialGCD[p1,p2,…]求多个多项式的最大公因式。PolynomialLCM[pl,p2,…]求多个多项式的最小公倍式。p1x^43x^3x^24x3;p23x^310x^22x3;PolynomialQuotientp1,p2,xPolynomialGCDp1,p2PolynomialLCMp1,p2►Down◄Up◙Main解方程解符号方程(组)在Mathematica中“=”号用于给变量赋值,而方程中的等号使用符号“==”(即两个等号)表示。方程组用花括号括起来,各个方程用逗号分隔。所有未知量也用花括号括起来,未知量之间用逗号分隔。单个方程和未知量不必使用花括号。以下用eqns表示方程组,用vars表示未知量组。下列函数用于解符号方程(组):Solve[eqns,vars]对系数按常规约定求出方程(组)的全部解。Reduce[eqns,vars]讨论系数出现的各种可能情况,分别求解。►Down◄Up◙Main►Down◄Up◙Main说明:上例首先用这两个解方程的函数解同一个方程,Solve不考虑,a=0的情况,而Reduce则进行讨论。然后再用它们解同一个方程组,Solve给出的答案遵循通常的“系数行列式不等于0”的约定,而Reduce给出的答案就令人厌烦了,因此解符号方程(组)时主要使用Solve.应当指出它们不仅能解一般的代数方程,还可以解一些无理方程、三角函数方程和含有指数、对数的方程等(但是在解超越方程时,Mathematics有时会提示答案不是全部解)。如果在方程的系数中使用小数,则改为求近似解。►Down◄Up◙Main说明:其中例2无解,则输出一个空括号。Mathematica的解集输出优于MATLAB的同类函数的输出,有几个解、各个未知量的值都一目了然。►Down◄Up◙Main解集的再处理解集的表达式也有不方便之处,如何提取解的值供后面引用呢?下例给出一种实用的方法:提示:用以上方法可以将全部解的值存入一个表,后面需要时可以用提取表的元素的方法随意引用。►Down◄Up◙Main下例是解集输出的另一个不便之处及其解决办法:用键入“:”得到。下划线说明:这里复数解的标准输出不符合习惯,按照上例中的方法使用复数展开函数就可以解决求近似解很多方程是根本不能求出准确解的,前面介绍的那些函数也无能为力。下列函数专门用于求方程(组)的数值解,其调用格式如下:►Down◄Up◙MainNSolve[eqns,vars]求代数方程(组)的全部数值解。FindRoot[eqns,{x,x0},{y,y0},…]从(x0,y0,…,)出发找方程(组)的一个解。注意:上例中In[1]说明,如果方程中出现小数,则Solve也求近似解.还有求多项式根的函数Roots,通常可用Solve代替,这里就不介绍了。►Down◄Up◙Main消去某些变量Eliminate[eqns,elims]从一组等式中消去变量(组)elims.注意:上例中In[3]表明,Solve[eqns,Vars,elims]的功能是消去y,z,求出x的值。同样,函数Reduce也有此功能.►Down◄Up◙Main解不等式Mathematica没有解不等式的内部函数,但是它自带的外部函数有此功能,必须将含有此函数的程序文件调入后才能使用,文件位于Mathematica的标准扩展程序包集中。标准扩展程序包集是Mathematica的一个子目录StandardPackages.它的子目录本书称为程序包子集。程序包子集按数学学科分类,如Algebra,Calculus等。每个程序包子集中有多个文件,文件扩展名为m。每个文件中有一个或多个外部函数,将这类文件称为程序包(文件)。►Down◄Up◙Main调入方法是键入:程序包子集名`文件名`(文件名不必带扩展名)也可以调入整个程序包子集:程序包子集名`当Mathernatica启动时自动装入程序包的方法,将留在本书第6章介绍。标推扩展程序包集及其所含程序文件名称可查看Help,如图所示。•下图中显示,在标准程序包集的代数程序包子集中,有解不等式的程序文件。图中一行最大的黑体字就是:程序包子集名’文件名’.以下将该文件调入,并使用其中的函数。►Down◄Up◙Main►Down◄Up◙Main调入并使用外部函数首先调入Algebra程序包子集中的InequalitySolve.m文件InequalitySolve[不等式(或等式)组,变量组]用于解不等式(或等式)组。将该函数调入后,如同内部函数一样使用。这个函数功能强大,在表达式中允许使用各种不等号和等号。注意不等式组和变量组的表示方法。