实验一 Mathematica软件简介 实验目的: 1.掌握软件的基本功能,为数学实验提供工具。 2.掌握用Mathematica软件作函数图形的语句或作图方法。 实验重点: 软件Mathematica的运行环境及基本知识 实验难点: 软件Mathematica的命令格式 实验过程与要求: 教师利用多媒体组织教学,边讲边操作示范。 实验的内容: Mathematica系统是美国Wolfram公司的产品,1986年由美国伊利诺大学复杂系统研究中心主任、物理学、数学和计算机科学教授Stephen Wolfram研制。Mathematica系统是符号计算系统,它使用方便、功能强大、用户友好、扩展便利。Mathematica是最大的单应用程序之一,它内容丰富、功能强大的函数覆盖了初等数学、微积分和线性代数等众多的数学领域。它包含了数学多方向的新方法和新技术;它包含的近百个作图函数,是数据可视化的最好工具;它也是“数学模型”和“数学实验”课程最好的工具之一,世界各地的大学和高等教育工作者已开发基于Mathematica的多门课程。 Mathematica是用C语言编写的,具有BASIC语言的简单易学的交互式操作方式;具有MathCAD、Matlab那样强的数值计算功能;具有Macsyma、Maple、Reduce和SMP那样的符号计算功能;具有APL和LISP那样的人工智能列表处理功能;象C与PASCAL那样的结构化程序设计语言。 这里主要介绍Windows环境下的4. 1版本在高等数学等领域的应用,其它版本类似. 一、Mathematica软件功能简介 (1)作函数的图像:用作图程序,当输入被作函数时,计算机直接作出该函数的图像. (2)数值计算:可简单地计算函数值,积分值等,可求微分方程的数值解等. (3)符号运算:可计算函数的极限,导数,不定积分,求微分方程的通解等.在这以前,计算机只能作数值计算,不能作符号运算. 二、Mathematica的启动与基本操作 (1)启动:系统安装好以后,在Windows98中,用鼠标点击开始—程序—Mathematica 4.1—Mathematica 4.1菜单即可进入系统.计算机屏幕出现Mathematica的主工作窗口(图1). (2)基本操作:进入系统后,出现Mathematica的主工作窗口,即可键入指令.如键入1+2,然后同时按下Shift+Enter,即可得到结果.窗口显示如图2,其中In[1]为第一输入行的标志,Out[1] 为第一输出行的标志(注意:输入行的标志In[1]:=, In[2]:=,……;输出行的标志Out[1]=,Out[2]=,……均是计算机自动给出的).如果输入的语句和表达式不能在一行显示完,可以按Enter键后在下一行继续输入,但一个命令或表达式在没写完需换行则要加“\”,在后面接着按Enter后继续输入.  图1  图2 三、Mathematica中的数、运算符、变量与表达式 1.数 Mathematica的数据分为两大类:一类是我们平常写出的数,叫普通数,另一类是系统内部的常数,有固定的写法. Mathematica中的普通数有整数、有理数、实数、复数四种类型,见表1 表1 类型 描述 实例 特征说明  整数 Integer 33889 任意长度的精确数  有理数 Rational 27/79 化简过的分数  实数 Real 109.0 任意精确度的近似数  复数 Complex 12.0+2I 实部、虚部可为整数、有理数、实数  常数 在Mathematica中定义了一些常数和常量,现将它们列如下表: 常量名 数学含义 解释  Pi π 圆周率  E e 自然对数的底数  I i 虚数单位  Infinity ∞ 无穷大  Degree π/180 度数  GoldRatio  黄金分割率   In[1]:=N[Pi,50] Out[1]=  要注意这些数书写时必须以大写字母开头. 2.运算符 (1)算术运算符 +、-、*、/、^分别表示加、减,乘、除、乘方的运算,其中在不引起混淆的情况下乘法运算符“*”也可省略不写,另外开方可以表示成分数指数,上述运算的优先顺序同数学运算完全一致. (2)关系运算符 = =、!=、>、>=、<、<=分别表示等于、不等于、大于、大于等于、小于、小于等于. (3)逻辑运算符 逻辑运算符及其意义见表2 表2 逻辑运算符 名称 实例 意义  ! 非 !A 若A为真,则!A为假;若A为假,则!A为真  && 与 A&&B 当A,B均真时,则A&&B为真;否则A&&B为假  || 或 A||B 当A,B中有一为真,则A||B为真;否则A||B为假  3.变量 Mathematica中变量的名称是以小写字母(不能以数字开头)开头的字符或字符串,但不能有空格和标点符号,例如: abc和g2均是合法的变量名.在Mathematica中,变量即取即用,不需先说明变量的类型后再使用.在Mathematica中变量不仅可存放一个整数或复数,还可存放一个多项式或复杂的算式. 4.表达式 表达式是以变量、常量、运算符构成的式子、表、甚至是图形,例如 3*x^3-2*x+5和x<=0分别是算术表达式和关系表达式. 写表达式时,要注意以下几点: (1)所有表达式必须以线性形式写出.因此分子、分母、指数、下标等都必须写在同一行上. (2)只能使用合法的标识符(字符或字符串). (3)为了指定运算的次序可以利用括号.括号必须成对出现,且只有一种括号“(”与“)”,除了特定符号外不得使用方括号“[”与“]”及花括号“{”与“}”. 变量的赋值,格式为:变量名=表达式 或 变量名1=变量名2=表达式. 例如:a=3*5^2 y=2*x^2-1 代数式中的变量也可以用另一个变量(或代数式)替换,如把上例中变量y中的x用Pi-x替换,可表述为 y=2*x^2-1; y/.x->Pi-x x->Pi-x中的“->”是由键盘上的减号及大于号组成的,以后各节中不在说明. 变量的清除,当一个变量a无用时,可以用命令Clear[a]加以清除,以免影响后面计算的结果.注意在Mathematica中,内部函数或命令都是以大写字母开头的标识符(字符或字符串). 四、用Mathematica作算术运算与代数运算 1.算术运算 进入系统后,出现Mathematica的主工作窗口(图1),此时可以通过键盘输入要计算的表达式,再按Shift+Enter键得运算结果. 实验1 计算 80!. 解 在主工作窗口用户区输入80!. 按下Shift+Enter键得运算结果(图3).  图3 实验2 先求表达式的值,再求该表达式的平方. 解 在主工作窗口用户区输入表达式3*5^2-10/(1+4)后 按下Shift+Enter键得该表达式运算结果,然后输入%^2按下Shift+Enter键得该表达式平方运算结果(图4). 其中%代表上一输出结果,该例中指73;如果输入行的标志In[1]:=, In[2]:=,……;输出行的标志Out[1]=,Out[2]=,……代表的表达式是唯一的,则可将其写入以后的运算表达式中代表其对应的表达式参与运算.例如上例中求表达式的平方还可输入为In[1]^2或Out[1]^2后按下Shift+Enter键得该表达式平方运算结果.  图4 2.代数运算 Mathematica的一个重要的功能是进行代数公式演算,即符号运算. 实验3 设有多项式. (1)求二者的和,差,积; (2)将二者的积分解因式; (3)将二者的积展开成单项式的和. 解 In[1]:=p1=x^2-x-2 Out[1]= In[2]:=p2=x^3-1 Out[2]= In[3]:=p1+p2 Out[3]= In[4]:=p1-p2 Out[4]= In[5]:=p1*p2 Out[5]= In[6]:=Factor[p1*p2] Out[6]= In[7]:=Expand[p1*p2] Out[7]= 其中Factor[多项式]表示将其括号内的多项式分解因式;Expand[多项式] 表示将其括号内的多项式展开成按升幂排列的单项式之和的形式. 值得注意的是,上面提到的Factor[多项式]和 Expand[多项式]均是Mathematica系统中的函数,其中Factor和 Expand分别为其函数名(函数名的第一个字母必须大写).事实上Mathematica系统中含有丰富的函数,后面将结合具体内容介绍有关函数命令. 课后实验一 1.计算下列各式:  2.将多项式 3.设有多项式,求二者的和、差、积. 五、函数运算 (一)常用函数 Mathematica系统中的数学函数是根据定义规则命名的.就大多数函数而言,其名字通常是英文单词的全写.对于一些非常通用的函数,系统使用传统的缩写.下面给出一些常用函数的函数名及功能. 1.数值函数 N[x,k] 求出表达式的近似值,其中k为可选项,它指有效数字的位数 Round[x] 舍入取整 Abs[x] 取绝对值 Max[x1,x2,…] 取x1,x2,…中的最大值 Min[x1,x2,…] 取x1,x2,…中的最小值 x+Iy 复数x+iy Re[z] 复数z的实部 Im[z] 复数z的虚部 Abs[z] 复数z的模 Arg[z] 复数z的辐角 PrimeQ[n] n为素数时为真,否则为假 Mod[m,n] m被n除的正余数 GCD[n1,n2,…] n1,n2…的最大公约数 LCM[n1,n2,…] n1,n2…的最小公倍数 Sqrt[x] 求平方根 2.基本初等函数 Exp[x] 以e为底的指数函数 Log[a,x] 以a为底的对数函数 Log[x] 以e为底的对数函数 Sin[x] 正弦函数 Cos[x] 余弦函数 Tan[x] 正切函数 Cot[x] 余切函数 Sec[x] 正割函数 Csc[x] 余割函数 ArcSin[x] 反正弦函数 ArcCos[x] 反余弦函数 ArcTan[x] 反正切函数 ArcCot[x] 反余切函数 使用Mathematica系统中的数学函数要注意以下几点: (1)Mathematica系统中的函数都以大写字母开头.如果用户输入的函数没有用大写字母开头,Mathematica将不能识别,并提出警告信息; (2)Mathematica系统中的函数的自变量都应放在方括号内; (3)这些函数的自变量可以是数值,也可以是算术表达式; (4)计算三角函数时,要注意使用弧度制,如果要使用角度制,不妨把角度制先乘以Degree常数(Degree=π/180),转换为弧度制. 实验4 求表达式lg2+ln3的值. 解 In[1]:=Log[10,2]+Log[3] In[2]:=N[Log[10,2]+Log[3],6] Out[2]= In[3]:=Log[10.0,2]+Log[3.] Out[3]= 实验4中,对应于输入语句In[1],输出语句Out[1]并没有给出lg2及ln3的“数值结果”,这是由于Mathematica符号计算系统的“对于只含有准确数的输入表达式也只进行完全准确的运算并输出相应的准确结果”的特性所决定的.在In[2]中用数值转换函数N[Log[10,2]+Log[3],6],将对表达式Log[10,2]+Log[3]的运算转换成了计算结果具有6位有效数字的实数形式运算,所以输出结果Out[2]=.在In[3]:=Log[10.0,2]+Log[3.]中,用实数10.0代替整数10,用实数3.代替整数3,这里10.0及3.都是实数的表示法,两种表示可以任选其一. 计算时欲得“数值结果”输入数时用实数形式. 实验5 求sin90o. 解 In[4]:=Sin[90Pi/180] (二)自定义函数 1.不带附加条件的自定义函数 在Mathematica系统中,所有的输入都是表达式,所有的操作都是调用转化规则对表达式求值.一个函数就是一条规则,定义一个函数就是定义一条规则.定义一个一元函数的规则是: f[x_ ]:=表达式 其中表达式是以x为自变量的,x_称为形式参数,f是函数名,函数名的命名规则同变量名的命名规则. 调用自定义函数f[x_ ],只需用实在参数(变量或数值等)代替其中的形式参数x_即可. 在运行中,可用“f[x_ ]:=.”清除函数f[x_ ]的定义,用Clear[f]清除所有以f为函数名的函数定义. 实验6 定义函数,先分别求时的函数值, 再求. 解 In[5]:=f[x_]:=x^3+2Sqrt[x]+Sin[x] In[6]:=f[1.] Out[6]= In[7]:=f[5.1] Out[7]= In[8]:=f[N[Pi]/2.] Out[8]= In[9]:=f[x^2] 在Out[9]中,由于系统不知道变量x的符号,所以没有对进行开方运算. 2. 带附加条件的自定义函数 在使用“f[x_ ]:=表达式”定义规则时,可以给规则附加条件,附加条件放在定义规则表达式后面,通过“/;”与表达式连接.规则的附加条件形式为: f[x_ ]:=表达式/;条件 在调用上述规则时,实在参数必须满足附加条件,系统才调用规则. “附加条件”经常写成用关系运算符连接着的两个表达式,即关系表达式.用一个关系表达式只能表示一个条件,如表示多个条件的组合,必须用逻辑运算符将多个关系表达式组合到一起. 实验7 设有分段函数  解 In[10]:=f[x_]:=Exp[x]Sin[x]/;x<=0 In[11]:=f[x_]:=Log[x]/;(x>0)&&(x<=E) In[12]:=f[x_]:=Sqrt[x]/;x>E In[13]:=f[-100.0] Out[13]= In[14]:=f[1.5] Out[14]= In[15]:=f[2.0] Out[15]= In[16]:=f[100.0] Out[16]= 课后实验二 1.求表达式lg100+lne-lg5的值. 2.求sin30o. 3.求复数3+2i的模,辐角,实部及虚部. 4.设f(x)=sin2x-5lnx-ex,求f(1.3),f(2)及f(100). 5.设函数,求f(-1.5)及f(2). 六、作函数图像 1、作图函数与输入格式 在Mathematica系统中用函数Plot可以很方便地作出一元函数的静态图像,基本格式为: Plot[{f1,f2,…},{x,xmin,xmax},可选参数] 其中表{f1,f2,…}的fi(i=1,2,3,…)是绘制图形的函数名,表{x,xmin,xmax}中x为函数fi(i=1,2,3,…)的自变量,xmin和xmax是自变量的取值区间的左端点和右端点. 实验7 作y=x2-1在[-2,2]内的图像和作y=lgx在[0.3,4]内的图像,其输入和输出如图5.  图5 2、作图时的可选参数 1)参数AspectRatio(面貌比) 平时我们作图时,两个坐标轴的单位长度应该一致,即1:1.但在Mathematica系统中根据美学原理系统默认的纵横之比为1:0.618,而将参数AspectRatio的值设置为Automatic(自动的)时可使纵横比为1:1. 实验8 (1)作y=sinx和y=cosx在[0,2π]内的图像,且两坐标轴上的单位比为0.618. (2)作y=sinx和y=cosx在[0,2π]内的图像,且两坐标轴上的单位比为1:1. 其输入和输出如图6.  图6 2)参数PlotStyle(画图风格) PlotStyle的值是一个表,它决定画线的虚实、宽度、色彩等. (1)取值RGBColor[r,g,b]—决定画线的色彩.r,g,b分别表示红,绿,蓝色的强度,其值为[0,1]之间的数. 实验9 作y=sinx在[0,2π]内的图像,线条用红色. 输入:Plot[Sin[x],{x,0,2Pi},PlotStyle->{RGBColor[1,0,0]}] 表示画出的曲线为红色. (2) 取值Thickness[t](厚度,浓度)—决定画线的宽度.t是一个介于0,1之间的数,且远远小于1,因为整个图形的宽度为1. 实验10 作y=sinx在[0,2π]内的图像,线条厚度t=0.02. 输入:Plot[Sin[x],{x,0,2Pi},PlotStyle->Thickness[0.02]] 输出如图7  图7 (3) 取值Dashing[{d1,d2,…}]—决定画线的虚实,其中表{d1,d2,…}确定线的虚实分段方式,di(i=1,2,…)的取值介于0,1之间. 实验11 作y=sinx在[0,2π]内的图像,线条用虚线. 输入:Plot[Sin[x],{x,0,2Pi},PlotStyle->Dashing[{0.03,0.07}]] 输出如图8  图8 实验12 作y=sinx和y=cosx在[0,2π]内的图像,且两坐标轴上的单位比为1:1,线条用蓝色虚线. 输入: Plot[{Sin[x],Cos[x]},{x,0,2Pi},AspectRatio->Automatic,PlotStyle->{{RGBColor[0,0,1],Dashing[{0.02,0.05}]}}] 输出如图9  图9 3)参数DisplayFunction(显示函数) 该参数决定图形的显示与否,当取值为Identity 时,图形不显示出来. 当取值为$DisplayFunction时恢复图形的显示. 图形的组合显示函数Show Plot的作用可以同时在同一坐标系的同一区间内作出不同函数的图像,但有时需要在同一坐标系的不同区间作出不同函数的图像,或者在同一坐标系作一个函数而要求函数的各个部分具有不同的形态(像分段函数),这个时候就需要使用Show函数. 实验13 在同一坐标系中作出y=ex和y=lnx的图像,并说明它们的图像关于直线y=x对称. 输入: a=Plot[Exp[x],{x,-2,2},AspectRatio->Automatic,PlotStyle->RGBColor[0,1,0], DisplayFunction->Identity] b=Plot[Log[x],{x,0.3,3},AspectRatio->Automatic,PlotStyle->RGBColor[1,0,0], DisplayFunction->Identity] c=Plot[x,{x,-2,2},AspectRatio->Automatic,PlotStyle->Dashing[{0.09,0.04}], DisplayFunction->Identity] Show[a,b,c,DisplayFunction?$DisplayFunction] 输出如图10.  图10 课后实验三  6.在同一坐标系中作出y=x,y=sinx,x∈[-π/2,π/2]和y=arcsinx, x∈[-1,1]的图像, 且要求两坐标轴上的单位比为1:1, y=x用虚线和红色,y=sinx用绿色,y=arcsinx用蓝色.