1、单元九 Mathematica软件及其运用 9.1 Mathematica入门入门9.1.1 Mathematica使用中的几使用中的几个问题个问题nMathematica系统是美国Wolfram研究公司开发的一个功能强大的计算机数学系统,它的主要功能是进行符号演算、数值计算和图形绘制。它可以做多项式的四则运算、展开、因式分解等;可以求多项式方程、有理式方程和超越方程的精确解和近似解;也可以求函数的极限、导数、积分等;还可以作函数的图形及数据的拟合、程序设计。软件的安装软件的运行使用入门9.1.2 数的表示和计算数的表示和计算1、数学常数:Pi 圆周率 E 自然对数的底e I 虚数单位i In
2、finity 表示无穷大的符号2、数学运算符 加、减、乘、除、乘方 +、-、*、/、3、数的运算规则1)算术运算顺序与数学相同,先乘方、再乘除、最后加减,可用小括号改变运算顺序2)同级运算(除乘方外)从左到右进行,乘方运算从右到左进行例:(23)4 表示为(23)4 而234表示4324、数的运算结果 (1)、整数、分数结果为精确数(2)、浮点数(带有小数点的数)结果为 浮点数(3)、含数学常数的式子除数学常数外,按上面规则进行(4)、精确数转换为浮点数 格式1:Na或a/N 求a的近似值,有效位数取6位 格式2:Na,n 求a的近似值,有效位数取n位 5、比较算符及其运算结果 (1)、比较算
3、符(P.11)(2)、运算结果(True或False)6、逻辑运算符(P.12)9.1.3 变量和算式变量和算式1、变量名以字母开头的字母数字串 例:x,abc,Mapa202、变量的赋值和替换(1)、赋值用“=”表示赋值(2)、替换(代入)格式:表达式/.x-a(3)、清除(取消)格式:=.或 clearx,y,1、系统常用的数学函数 幂函数 Sqrt(平方根)指数函数 Exp(以e为底的指数)对数函数 Log 三角函数 Sin,Cos,Tan,Cot,Sec,Csc 反三角函数 ArcSin,ArcCos,ArcTan,ArcCot 绝对值函数 Abs 求和函数 Sum 取整数函数 Int
4、egerPart 求模函数 Modm,n求m除n所得余数9.1.4 常用函数常用函数2、函数的书写规则(1)函数名的第一个字母大写,后面小写(2)函数作用对象表达式写在函数名的方括号内,如Sinx(3)有多个参数的函数,参数之间用逗号分隔,如Log23=Log2,33、数学函数的运算和函数值4、自定义函数 格式:fx_,y_,:=函数表达式5、函数的嵌套 格式:Nestf,x,n6、定义临时变量 格式:Modulex,y,表达式1;表达式2;使用中的几个问题1、简便输入%表示上次计算的结果%表示上上次计算的结果%n表示第n次计算的结果2、运行程序 Shift+Enter或小键盘上的Enter
5、3、保存文件用菜单进行:save as 4、分号“;”的应用(1)在几个语句中间,表示各语句间并列关系,用于一行多句输入(2)在表达式的末尾,抑制结果显示9.1.5 符号演算和数值计算符号演算和数值计算一、基本表达式操作1、多项式的展开 格式:Expand表达式2、通分 格式:Together表达式3、分解因式 格式:Factor表达式4、化简表达式 格式:Simplify表达式5、约分 格式:Cancel表达式6、把表达式分项 格式:Apart表达式7、求多项式中某项的系数 格式:Cofficient表达式9.1.5.1 解方程或方程组解方程或方程组1、求方程的代数解格式1:Roots方程,
6、变量格式2:Solve方程1,方程2,变量1,变量2,格式3:Reduce方程1,方程2,变量1,变量2,2、求方程的数值解格式1:NRoots方程,变量格式2:NSolve方程1,方程2,变量1,变量2,3、消去变量格式:Eliminate方程,变量4、寻求方程的数值根格式:FindRoot方程,x,x0,y,y0,9.1.5.2 常用的语句常用的语句 1、打印语句(屏幕输出)格式:Print 表达式,表达式,2、求和格式1:Sum通项,n,下限,上限,步长格式2:NSum通项,n,下限,上限,步长3、求积格式1:Product通项,n,下限,上限,步长格式2:NProduct通项,n,下限
7、,上限,步长4、条件语句(P.12)格式1:If 条件,语句1,语句2格式2:Which条件1,语句1,条件2,语句2,条件n,语句n5、循环语句(1)Do语句格式1:Do循环体语句,n 重复计算表达式n次格式2:Do循环体语句,变量,初值,终值,步长 重复计算表达式,变量以步长从初值变化到终值(2)While语句 格式:While条件语句,表达式 反复计算表达式,直到条件失效为止(3)For语句 格式:For初始表达式,条件,步进表 达式,循环体 求初始表达式的值,然后重复计算步进表达式和循环体的值,直到条件失效为止9.1.5.3 表与表达式的结构表与表达式的结构一、表的概念 表是用大括号括
8、起来的若干个表达式,表达式之间用逗号分隔格式:表达式,表达式,例:2,35,Sinx x2,3x+5,Pi 1,2,3,4,4,5例:aa=1,2,3,4,5 bb=2,3,4,5,6求:aa+bb aa bb aa*bb aa/bb aa+5二、表的运算1、表的和、差、积、商运算 两个元素个数相同的表可以进行四则运算,结果是对应元素运算例:tt=Pi/4,12,9+x+x2 Sintt=sin(Pi/4),sin(12),sin(9+x+x2)2、表和函数运算f 表表示函数f作用到表的每一个元素得一新表三、二层表的转换 将某些表的自变量取值与函数值分别放在一起或相反格式:Transpose表
9、例:t1=tablen,Sinn,n,5求:Transposet1四、表的生成1、直接生成(无规律性的表)按顺序写出表中的元素并放在大括号内例:1,0,-1,x2、数值生成函数Rang(有规律性的数值表)格式2:Rangem,n生成表m,m+1,n例2:生成表5,6,7,15格式1:Rangen生成表1,2,n例1:生成表1,2,3,10格式3:Rangem,n,步长例3:生成表1,3,5,213、通用表生成函数Table(循环生成有规律性的表)格式1:Table表达式,n把表达式复制n次生成表例1:生成5,5,5,5,5,5,5例2:生成ex,ex,ex,ex,ex格式2:Table表达式,
10、x,n生成的表中元素x的取值从1到n,步长为1例3:生成Sin1,Sin2,Sin10 例4:生成20个素数组成的表格式3:Table表达式,x,n1,n2 生成的表中元素x的取值从n1到n2,步长为1例5:生成10,11,12,20格式4:Table表达式,x,n1,n2,n3 生成的表中元素x的取值从n1到n2,步长为n3例6:生成10,20,30,150例7:生成e,e4,e7,e10,e13格式5:Tablefm,n,m,m1,m2,m3,n,n1,n2,n3 生成二层表例8:生成2,3,4,5,6,3,4,5,6,7,6,7,8,9,10例9:生成1,2,2,3,3,4,4,5,5,
11、6例10:生成1,Sin1,2,Sin2,5,Sin54、迭代(递推)生成格式:NestList函数名f,初值x,迭代次数n例1:fx_:=1/(1+x)NestListf,x,4例2:NestListSin,x,4五、表的有关操作1、元素的抽取格式1:First表取出表的第一个元素格式2:Last表取出表的最后一个元素格式3:表n取出表的第n个元素格式4:Take表,nn为正数取出表的前n个元素作成一个新表,n为负数则从表的最后一个元素向前取格式5:Take表,m,n取出表的第m个到第n个元素作成一个新表格式6:表n1,n2,n取出多层表中第n1个子表中的n2个子表中的第n个元素例:有表d=
12、3,2,x2,3+y,“abc”,x,4,c求(1)Firstd(2)Lastd(3)d3(4)Taked,2(5)Taked,2,3(6)d3,2,22、去掉元素格式1:Rest表去掉表的第一个元素格式2:Drop表,nn为正值,去掉表的前n个元素,n为负值,去掉表的后n个元素格式3:Drop表,m,n去掉表的第m至第n个元素例 Restd;Dropd,23、按序号选取元素格式:表s1,s2,选出表中第s1,s2,个元素作成一个新表例:d1,4,1,24、表的元素替换格式:表n=x 把表的第n个元素替换为x例:d3=1,25、向表添加元素格式1:Prepend表,表达式将表达式加在原表的所有
13、元素前格式2:Append表,表达式将表达式加在原表的所有元素后格式3:Insert表,表达式,n将表达式插在原表的第n个位置6、表与表合并格式1:Join表1,表2,把几个表的元素按顺序连接格式2:Union表1,表2,表表合并,重复的元素只取一次7、表的排序格式:Sort表将表中的元素按升序排列8、表的长度格式:Length表统计表中的元素的个数六、表的综合操作举例1、生成表1,x,2,x2,3,x3,4,x42、取出所有子表的第一个元素3、求所有子表的第一个元素的指数值4、放回表中相应的位置作业:一、生成下列表1、1,4,9,16,100002、n1,n2,n50其中ni=n/n!,精确
14、到小数点后10位3、1,2,3,10,1,2,3,10共10个子表4、1,2,3,100,101,102,103,200,901,902,903,1000二、1.已知f(x)=ex,求当x=1,2,3,4时的函数值列表及数对(x,y)的列表。2.用Table生成一个自变量取值表,然后结合语句Transpose的用法,给出所生成表的自变量取值与对应正切函数值组成数对的二层表。3.给定二层表1,2,2,3,3,4,4,5,5,6,试用Mathematica命令取出这个表中所有子表的第二个元素组成的表,并取对数后放回原表的相应位置。9.2 Mathematica软件的运用软件的运用9.2.1 用Ma
15、thematica 求极限案例案例9.19 求下列极限(1)(2)(3)(4)(5)(6)(7)xxx5sinlim0;5lim10 xx;5lim10 xx;lim0 xxx;lim0 xxx;arctanlimxx;arctanlimxx解解 (1)In1:=LimitSin5*x/x,x-0 out1=5(2)In2:=Limit5(1/x),x-0,Direction-1 out2=Infinity(Infinity为正无穷大”)(3)In3:=Limit5(1/x),x-0,Direction-1 out3=0(4)In4:=LimitAbsx/x,x-0,Direction-1 o
16、ut4=-1(5)In5:=Limit Absx/x,x-0,Direction-1 out5=1(6)In6:=LimitArcTanx,x-Infinity out6=(7)In7:=LimitArcTanx,x-Infinity out7=2Pi2Pi9.2.2 用用mathematica 进行求导运进行求导运算算在mathematica 系统中,用Dfx,x表示fx对x的一阶导数,用Dfx,x,n表示fx对x的n阶导数,在一定范围内,也能使用微积分中的撇号(撇号为计算机键盘中的单引号)标记来定义导函数,其使用方法为:若fx为一元函数,则fx给出fx的一阶导函数,而fx0给出函数fx在x
17、=x0处的导数值,同样,fx给出fx的二阶导数,fx给出x的三阶导数.案例案例9.20 求下列函数的一阶导函数:(1)(2);10018xy;cos3xxy 案例案例9.20 求下列函数的一阶导函数:(1)(2);cos3xxy;10018xy 案例案例9.20 求下列函数的一阶导函数:(1)(2);cos3xxy 案例案例9.20 求下列函数的一阶导函数:(1)(2);cos3xxy 案例案例9.20 求下列函数的一阶导函数:(1)(2);cos3xxy 解解(1)In1:=D100*x18,x Out1=1800 x17 (2)In2:=Dx3*Cosx,x Out2=3x2Cosx-x3
18、Sinx案例案例9.21 求函数 的二阶导数.xxycos3解解 In3:=Dx3*Cosx,x,2 Out3=6xCosx-x3Cosx-6x2Sinx9.2.3 用用Mathematica 做导数应用题做导数应用题 导数应用就是用导数的性态来研究函数的性态,主要包括函数的单调性、凹向、极值与最值的求法以及一元函数图形的描绘,由于对函数单调性、凹向等问题的研究,不但需要进行求导运算,而且还需要进行解方程及条件判断等工作.因此,在用mathematica 做导数应用题的过程中,经常使用Mathematica 系统中的Solve,Which,Print这三个函数.案例案例9.22 设函数 在 处
19、都取得极值,试定出 的值,并问这时 在 处都取得的是极大值还是极小值?)(xf)(xfba,2,121xxxbxxaxf2ln)(2,121xx解解 In1:=fx_:=a*Logx+b*x2+x;In2:=Solvef1=0,f2=0,a,b(*解方程,求驻点*)In3:=c=%;(*将方程组的解赋给变量c*)In4:=a=a/.c1,1(*等价于a=a/.a-2/3*)In5:=b=b/.c1,2(*等价于b=b/.b-1/6*)解解 In1:=fx_:=a*Logx+b*x2+x;In2:=Solvef1=0,f2=0,a,b(*解方程,求驻点*)In3:=c=%;(*将方程组的解赋给变
20、量c*)In4:=a=a/.c1,1(*等价于a=a/.a-2/3*)In5:=b=b/.c1,2(*等价于b=b/.b-1/6*)解解 In1:=fx_:=a*Logx+b*x2+x;In2:=Solvef1=0,f2=0,a,b(*解方程,求驻点*)In3:=c=%;(*将方程组的解赋给变量c*)In4:=a=a/.c1,1(*等价于a=a/.a-2/3*)In5:=b=b/.c1,2(*等价于b=b/.b-1/6*)解解 In1:=fx_:=a*Logx+b*x2+x;In2:=Solvef1=0,f2=0,a,b(*解方程,求驻点*)In3:=c=%;(*将方程组的解赋给变量c*)In
21、4:=a=a/.c1,1(*等价于a=a/.a-2/3*)In5:=b=b/.c1,2(*等价于b=b/.b-1/6*)nOut2=a-2/3,b-1/6nOut8=f1极小值nOut9=f2极大值另外,Mathematica 系统还提供了用逐步搜索法求函数极值的函数FindMinimum,其使用方法请读者上机练习.9.2.4 用用Mathematica 做一元函做一元函数的积分数的积分在Mathematica 系统中,用Integrate 计算一元函数的积分,其格式与作用如下:Integratef,x 计算不定积分Integratef,x,a,b 计算定积分dxxf)(badxxf)(案例案
22、例9.23 求下列积分.解解(1)In1:=Integratex8,x Out1=x9/9(2)In2:=Integratex8,x,0,2Out2=512/9;)1(8dxx.)2(208dxx9.2.5 用用Mathematica 求偏导数求偏导数与多元函数的极值与多元函数的极值 与在Mathematica 系统中求一元函数的导数类似,求多元函数f的偏导数仍用求导函数完成,具体调用格式如下:、Df,x 给出f对x的偏导数Df,x,n给出f对x的n阶偏导数Df,x1,x2,.给出f对x1,x2.的高阶混合偏导数.案例案例9.24 求函数 的两个一阶偏导数和四个二阶偏导数 解解 In1:=Cl
23、earx,yIn2:=fx_,y_=3(x2+y2);In3:=Dfx,y,xIn4:=Dfx,y,yIn5:=Dfx,y,x,2In6:=Dfx,y,y,2In7:=Dfx,y,x,yIn8;=Dfx,y,y,x)(322yxzOut3=6xOut4=6yOut5=6Out6=6Out7=0Out8=0案例案例5.25 求函数 的驻点.解解 In1:=Clearz,x,yIn2:=zx_,y_:=x2+y2-3*x*y+2x+2yIn3:=a=Dzx,y,x;In4:=a=Dzx,y,y;In5:=Solvea=0,b=0,x,yOut5=x-2,y-2由Out5可知,所求驻点为(2,2).
24、yxxyyxz22322案例案例5.26 求函数 的驻点,并判断在驻点处是否取得极值,取得极大值还是极小值?取得的极值是多少?解解 In1:=Clearz,x,xy,p,A,B,C1,m,a,bIn2:=zx_,y_:=x2+y2+5;In3:=SolveDzx,y,x=0,Dzx,y,y=0,x,y;In4:=m=%;In5:=a=x/.m1,1;522yxzIn6:=b=y/.m1,2;In7:=Ax_,y_=Dzx,y,x,2;In8:=Bx_,y_=Dzx,yx,y;In9:=C1x_,y_=Dzx,y,y,2;In10:=px_,y_=Bx,y2-Ax,y*C1x,y;In11:=W
25、hichpa,b0,Print无极值,pa,b0&Aa,b0,Print有极大值,za,b,pa,b0,Print有极小值,za,b,pa,b=0,Print失效Out11=有极小值由Out11可知,在驻点(0,0)处,函数取得极小值5 9.2.6用用Mathematica计算重计算重积分积分 在Mathematica 系统中,与求定积分类似,仍用函数Integrate 计算重积分,其调用格式如下:Integratef,x,xmin,xmax,y,ymin,ymax 案例案例9.27计算二重积分 .解解 In1:=Clearx,yIn2:=Integratex*Expx*y,x,0,1,y,-1,0Out2=1/EDxyyxDdxdxxe01,10:,案例案例9.28 计算二重积分 ,D是由所围城的区域.解解 In1:=Clearx,yIn2:=Integratex*Sqrty,x,0,1,y,x2,SqrtxOut2=6/55.,dxdxyxD