1数学软件Mathematica——使用入门2主要内容符号计算系统Mathematica基本用法基本运算符号计算图形功能程序设计(略)3符号计算系统借助计算机速度快的特点,帮助人们完成在短时间内无法完成的公式推导计算。也称为计算机代数以推理为主,是一个表示数学知识和数学工具的系统与代数计算、算法设计、机器学习、自动推理等紧密联系一般由系统内核、符号计算语言和若干软件包组成通常包括符号计算、数值计算、图形演示和程序设计符号计算系统4常见的符号计算软件商业软件Mathematica,Maple,MuPAD,MathCad符号计算系统免费软件Axiom,CoCoA,Derive,Euler,GAP,Maxima,...更多符号计算软件参见课程主页相关网络链接。符号计算软件的两种运行方式:交互方式和程序方式5Mathematica由美国WolframResearch公司于1988年推出,目前的最新版本为Mathematica8.04Mathematica介绍Mathematica有简体中文版:中文界面和中文帮助可在官方网站上下载试用版Mathematica很好地结合了数值和符号计算引擎、图形系统、编程语言、文本系统以及与其他应用程序的高级连接,是目前使用最广泛的数学软件之一,也是世界上符号计算系统中最强大的两个系统之一。6Mathematica欢迎界面7Mathematica工作界面Mathematica的工作平台:自带的Notebooks环境在Notebooks环境下输入命令,系统执行后返回结果Mathematica工作界面菜单栏Notebooks环境最好最完整的学习材料:系统自带的使用帮助和实例演示8Mathematica使用Mathematica语言规则①所有命令和内置函数都是以大写字母开始②函数的参数是在方括号中给出③乘法运算符可以用空格代替(不建议这么做)④内置的函数名通常都很长,使用函数的名字的全拼9Mathematica使用可以运行单个命令或语句也可以运行多个语句:输入全部语句后再按执行键命令(语句)分隔符:回车或分号如果不需要显示运行结果:在语句后面加分号Mathematica命令的执行(简称执行键)输入和输出标识符:In[n]:和Out[n]In[1]:=Sin[Pi/4]+Cos[Pi/4]Out[1]=2Shift+Enter10数学公式的输入直接输入数学公式的输入In[1]:=Sin[Pi/4]+Cos[Pi/4]借助Mathematica提供的面板(Palettes)11一些常用符号()运算的结合f[x]函数取值{}列表[[k]]分量%最后一次的计算结果%%倒数第二次的计算结果%%%(k)倒数第k次的计算结果%k第k次计算结果,即Out[k]的值?name显示系统变量、命令或函数的简短介绍??name显示系统变量、命令或函数的全部信息(*comments*)注解Ctrl+K命令补全功能12内部常数常用内部常数Mathematica中的数:普通数字和内部常数Degree角度到弧度的转换系数,Pi/180E自然对数的底,2.71828...EulerGammaEuler常数:GoldenRatio黄金分割数:I虚部单位Infinity无穷大Pi圆周率11lim(1ln)0.5772152nnn1152整数,有理数,实数(任意精度和机器精度),复数13基本运算符基本运算:+-*/加减乘除^幂!阶乘(运算级别比加减乘除和幂运算高)算术运算====!=&&||!Xor比较运算与逻辑运算14变量与表达式变量通常字母开头,后面可以跟字母与数字长度不限区分大小写可以包含希腊字母或中文,如“数学”用户自定义变量建议都用小写,避免与系统自带函数冲突Mathematica中一切皆为表达式算术表达式,关系表达式,逻辑表达式,复合表达式表达式变量赋值:变量名=表达式15变量操作相关函数x=y=a给多个变量赋相同的值Unset[x]或x=.清除变量的值Clear[x1,x2,...]清除变量Print[x1,x2,...]打印变量的值expr/.{x-a,y-b,...]变量替换(变量本身没有被赋值)例:已知f(x,y)=2x+y,计算f(2,3)In[1]:=Clear[x,y];In[2]:=f=2*x+y;In[3]:=f./{x-2,y-3}(*f(2,3)的值*)In[3]:=f./{2-5}(*把2替换成5*)16数的基本运算N[x,n]x的带n位有效数字的近似值N[x]x的双精度近似值IntegerPart[x]整数部分FractionalPart[x]小数部分Floor[x]取整:不大于x的最大整数Round[x]取整:四舍五入Ceil[x]取整:不小于x的最小整数Precision[expr]显示计算精度Mathematica中的实数分精确数和双精度数在Mathematica中,当输入的式子中所有数字都为整数时,输出的结果是精确的;但若式子中含有小数点,则通常以近似方式输出运算结果。17数字进制的转换b^^xxxxx输入一个b进制数(2=b=36)BaseForm[x,b]十进制数x的b进制形式IntegerString[x,b]同上,但写成字符串形式FromDigits[str]从字符串构造整数FromDigits[list,b]从b进制数字列表中构造整数IntegerDigits[x,b]十进制数x的b进制数字列表18内置函数Mathematica具有超过3000个内置函数,具体见“帮助”“参考资料中心”的左下角处的“函数索引”Mathematica函数命名规则①第一个字母大写,后面跟小写字母,如Sin[x],Log[x]②大多数函数名与数学中的名称相同③当函数名分为几段时,每一段的头一个字母大写,后面的用小写字母,如:ArcSin[x]寻求帮助:??函数名In[1]:=??Sin19常用初等函数Abs[x]绝对值Sign[x]符号函数Power[x,y]幂函数xySqrt[x]平方根Exp[x]以e为底的指数函数Log[x],Log[b,x]以e和b为底的对数函数Factorial[n]n!Factorial2[n]n!!GCD[n1,n2,...]最大公约数GCD[list]列表中所有数的最大公约数LCM[n1,n2,...],LCM[list]最小公倍数Max[x1,x2,...],Max[list]求最大值Min[x1,x2,...],Min[list]求最小值20常用初等函数Re[x],Im[x]提取实部和虚部Conjugate[x]取共轭Arg[x]辐角Mod[m,n]m除以n的余数Quotient[m,n]m除以n的整数商Sin[x],Cos[x],...三角函数ArcSin[x],ArcCos[x],...反三角函数Sinh,Cosh,...,双曲函数ArcSinh,ArcCosh,...反双曲函数Prime[k]第k个素数PrimeQ[n]判断n是否为素数Binomial[n,m]二项式系数mnC21随机函数Random[]生成[0,1]内的一个随机实数Random[Real,a]生成[0,a]内的一个随机实数Random[Real,{a,b}]生成[a,b]内的一个随机实数Random[Integer]随机给出整数0或1Random[Integer,{a,b}]生成[a,b]内的一个随机整数Random[Complex]生成一个[0,1]X[0,1]内的一个随机复数In[1]:=Random[Real,10]In[2]:=Random[Integer,{1,100}]22打印函数Print[x,y,...]在屏幕输出变量的值In[1]:=x=5;Print[x=,x]23函数调用方式标准方式:函数名[变量列表]In[1]:=x=Pi/4;Sin[x]In[2]:=x=Pi/4;x//Sin(*后缀形式*)其它方式In[3]:=x=Pi/4;Sin@x(*前缀形式*)In[4]:=5~Mod~3(*中缀形式,等价于Mod[5,3]*)24自定义函数Mathematica允许用户自定义函数,一般格式为函数名[自变量名1_,自变量名2_,...]:=表达式这里函数名与变量名的规定相同方括号中的每个自变量名后都要有一个下划线“_”中间的“:=”为定义号注意符号表达式与函数的区别f[x_]:=2*x-3定义一个一元函数f[x_,y_]:=Log[x/y]-Power[x,y]定义一个二元函数Clear[f]清除自定义的函数自定义函数前,最好先清除自变量的值,否则可能会出现意想不到的错误25自定义函数In[1]:=f=2*x+y(*符号表达式*)In[2]:=g[x_,y_]:=2*x+y(*函数*)In[3]:=f[2,3](*结果是什么?*)In[4]:=g[2,3](*这个结果又是什么?*)26字符串字符串:用双引号括起来的字符序列字符串相关函数Characters[str]转化为字符列表StringJoin[s1,s2,...]字符串合并s1s2...字符串合并StringLength[str]字符串长度StringSplit[str]按空白字符分割字符串ToExpression[str]转化为表达式ToString[expr]将表达式转化为字符串更多字符串相关函数参见“参考资料中心”27列表列表分为标准列表和稀疏列表是Mathematica的基本对象,可用来表示集合,数组等标准列表:用大括号括起来的有限个元素,元素之间用逗号分隔稀疏列表:通常由SparseArray来定义In[1]:=x={1,2,hello,{1,0}};列表中的元素可以是不同类型的任意Mathematica对象列表可以嵌套,如矩阵Mathematica提供了上千个列表操作函数,参见“参考资料中心”28列表生成利用Array,Range,Table等函数枚举法:利用大括号,直接输入Array[f,n]生成一维列表{f[1],f[2],...,f[n]}Array[f,{n1,n2,...}]生成多维列表(嵌套),这里的f为函数Range[a,b,h]生成等差数列列表:a为首项,h为公差,最后一项不超过b;a和h的缺省值为1Table[expr,{n}]生成n元列表{expr,expr,...,expr}Table[expr,{i,a,b,h}]{expr|i在Range[a,b,h]中变化}Table[expr,{i,list}]{expr|i在列表list中变化}RandomInteger[range,n]生成n个伪随机整数,range表示取值范围RandomReal[range,n]生成n个伪随机实数,n缺省值为1Table中的expr一般给的是通项公式29列表生成举例In[1]:=x=Array[Sin,3]Out[1]={Sin[1],Sin[2],Sin[3]}In[2]:=y=Table[Sin[k],{k,3}]Out[2]={Sin[1],Sin[2],Sin[3]}In[3]:=f=RandomReal[{1,5},2]Out[3]={4.68541,2.86979}In[4]:=z=Table[i*j,{i,3,5},{j,2,4,2}]Out[4]={{6,12},{8,16},{10,20}}生成二维列表30列表分量list[[k]]第k个分量list[[-k]]倒数第k个分量list[[i]][[j]]第i个分量的第j个分量list[[i,j]]第i个分量的第j个分量list[[{i,j,...}]]{list[[i]],list[[j]],...}First[list]第一个分量Last[list]最后一个分量Take[list,k]前k个分量Take[list,-k]最后k个分量Tak