mathematica命令大全



一、了解数学软件Mathematic
1、Mathematic的特点
Mathematic是1988年美国Wolfram Research公司开发的一个著名的数学分析型的软件,以符号计算见长,也具有高精度的数值计算功能和强大的图形功能.它显示数学表格和图形的功能使用户对问题的理解更加形象和具体.Mathematic是人——机对话式软件,使用者在Mathematic的notebook环境中,只要在计算机上输入数学符号、公式,系统可以立即进行处理,然后返回结果,用户不必关心中间的计算过程,其交互性能非常好.
2、Mathematic5.0的工作环境
在WindXP(或Win98)环境下安装好Mathematic5.0,用鼠标双击Mathematic图标(刺球状),启动Mathematic系统,显示器上就会出现如图1的窗口,这时可以键入你想计算的东西,比如键入1+1,然后同时按下Shift键和Enter键(数字键盘上只要按Enter键),这时Mathematic开始工作,计算出结果后,窗口变为图2.


Mathematic的窗口上方是工作条.第一行为标题,显示所使用的Notebook文件名.第二行为工具菜单.下面的是Notebook窗口(工作窗口),它可以随时关闭,只留下工具条,也可以打开多个工作窗,它们是相互分开的,每个工作窗就是一个Notebook文件,其文件名以.nb为后缀.用鼠标单击工作窗,此时工作窗上方的标题栏呈高亮度显示,表明工作窗已被选中,这时可以从键盘输入命令或表达式了.要退出系统,只要单击右上角的关闭按钮即可.
Mathematic的简单使用说明:
(1)Mathematic第一次计算时因为要进行一次初始化,所需时间要长一些,从第二次开始计算就会很迅速了,
(2)在Mathematica的Notebook工作窗口中,可以完成各种运算,如函数作图,求极限、解方程等,也可以用它编写像C语言那样的结构化程序.
(3)图1-2中的“In[n]:=”表示第n个输入;“Out[n]=”表示第n个输出结果.要注意的是:“In[n]:= ”和“Out[n]=”是系统自动添加的,不需用户键入.
(4)公式输完后,按下“Shift”键和“Enter”键或按数字键盘中 “Enter”键将完成计算.
(5)用户的每一次输入和Mathematic的每一次输出,以及相应的输入、输出,都被称为“cell”或“细胞”,用“]”来标识.单击“]”,就选中了这个“细胞“,然后可对这个“细胞“进行复制、剪切、计算、全选.
(6)工作菜单中共有9个菜单,其中File是文件管理菜单.主要有新建文件、打开或关闭文件、保存文件以及退出系统的功能. Help是帮助菜单,使用时打开“Help Browser“项,以获得系统帮助文件,它是一个名符其实的使用手册,使用者可以在其中了解系统所有函数、命令的使用

格式和功能.使用时,只要在窗口内输入命令项,系统就可显示该命令的使用方法及相关信息.
(7)按“Alt“键可中断计算.
(8)使用Mathematic时, 如果输入了不合语法规则的表达式,系统会显示出错信息,并且不给出计算结果.学会看系统出错信息,较快找出错误,可以提高工作效率.
 3、Mathematic的基本运算功能
1、算术运算
Mathematic最基本的功能是进行算术运算,包括加(+),减(-),乘(*),除(/),乘方(^),阶乘(!)等.
注意事项:
(1)在Mathematic中,也可用空格代表乘号;数字和字母相乘,乘号可以省去,例如:3*2可写成3 2,2*x可写成2x,但字母和字母相乘,乘号不能省去.
(2)在Mathematic中,表达式中用来表示运算的结合次序的括号只允许是圆括号(无论多少层).例如:4*(2+3/(2-5))
(3)当输入式子中不含小数点,输出结果是完全精确的。例如:输入2/3,输出仍然为2/3.
(4)为了得到计算结果的近似数或指定有效数字的位数,可以用N[? ]函数.例如:N[x],N[x,20].前者取x的默认位数近似值,后者取x的20位有效数字.
(5) %表示上一个输出结果,%%表示倒数第二个输出结果,以此类推,%n表示第n个输出结果.
(6)在Mathematic中,如果在输入的表达式末尾加上一个分号“;”,表示不显示计算结果,但你可以调用它的结果.
2、Mathematic中的数学常数和数学函数
数学常数 意义 Pi 圆周率 Degree 度° Infinity 无穷大∞ E 自然对数的底e I 虚数单位i Mathematic中定义了一些常用的数学常数,这些数学常数都是精确值,如:
也可以给变量赋值,定义常数.
如:
In[1]:=pi=N[Pi,20]?
Out[1]=3.14159265358979323846
In[2]:=x=y=5?
????Out[2]=5
注意事项:
(1)在后续计算中就可直接把x,y,pi作为常数使用.
例2
In[3]:=pi^2?
Out[3]=9.8696044010893586188
(2)一旦你给变量x赋值后,这一变量值将一直保持不变,直到你重新给它赋值或使用清除命令将它清除:x=.? 或者 Clear[x]
(3)在Mathematic中,对于变量名没有长度限制,但变量名不能以数字开头,如x2可以作为变量名,但2x却是2*x的意思,在输入含有变量的式子时,应注意x y表示x*y,而xy是一变量,x^2y意味着(x^2)*y而不是x^(2y).
Mathematic中常用的数学函数如下:
函数 意义 Sqrt[x]? 平方根函数 Exp[x]? 指数函数 Log[x] 自然对数函数 Log[b,x] 以b为底的对数函数 Abs[x]? 绝对值函数?? Mod[n,m]? M用n除的余数 Round[x] 四舍五入函数 Random[ ] 取0和1之间的随机数 Max[x,y,…] 取最大值函数?? Min[x,y,…] 取最小值函数 Sin[x],Cos[x], Tan[x],Cot[x], Sec[x], Csc

[x] 三角函数 ArcSin[x],ArcCos[x],ArcTan[x],
ArcCot[x],ArcSec[x],ArcCsc[x] 反三角函数 Sinh[x],Cosh[x],Tanh[x],Coth[x],Sech[x], Csch[x] 双曲函数 ArSinh[x],ArcCosh[x],ArcTanh[x],ArcCoth[x],ArcSech[x],ArcCsch[x] 反双曲函数 在Mathematic帮助文件中可以查到Mathematic提供的所有函数、常数和各种符号及它们的用法.
注意事项:
(1)Mathematic中,大小写英文字母要严格区分开,函数名字首字母必须大写.
(2)函数名后面的表达式一定要放在方括号“[]”内,而不是圆括号“()”,表达式.
(3)当Mathematic无法计算输入的表达式的精确值,而又要求它返回精确值时,将返回原表达式.如:
In[1]:=Sqrt[2]??
Out[1]=Sqrt[2]
(4)为了完成某些特定的运算,用户还需要自己定义一些新的函数,如:
In[1]:=f[x_]:=x^2 ;g[x_,y_]:=(x-y)^2/y;
In[1]分别定义了两个函数和.要特别注意的是左边方括号中的变量后必须紧跟一下划线“_”,而右边表达式中的变量后没有这一符号.定义了函数f(x)、g(x,y)后,就可对其进行各种算术运算或符号运算.如:
In[2]:=g(2,3)????????? Out[2]=
In[3]:=D[f[x],x]??????? Out[3]=2x
 (5)如果用户一时忘记了前面定义的函数,可以用下列命令查询:
In[4]:=?f? Out[4]=Global`f
???f[x_]:=x^2
这里的符号“Global”表示定义的函数在其后面的计算中全局有效.当你需要废除已经定义的函数时,可以使用Clear[f];这样,前面定义的函数不再起作用.如果一个函数的定义需要多个语句,可将它们放在一对花括号或一对圆括号中,并用分号隔开,如:
In[6]:=f[x_,n_]:=(t=Sin[x]+Cos[x];t^n+2t);
In[6]定义了一个二元函数,它先计算t=Sin[x]+Cos[x],,然后计算t^n+2t,最终得到f(x,n).
(6)定义一个分段函数,一般要用到条件控制语句If、Which和Switch语句.下面列出Mathematic的一些条件结构:
①lhs:=rhs/;test???????当test为True时使用定义
②If[test,then,else]???当test为True时计算then,否则计算else
③Which[test1,value1,test2,value2,... 给出第一个test i为True时的value i
④Switch[expr,form1,value1,form2,value2,...,def]?? 给出第一个与expr相匹配的form i对应的valuei值,若都不成立,结果为默认值def.
下面举例介绍分段函数的定义:
定义一个阶跃函数 ,可使用If语句:
In[1]:=s[x_]:=If[x>=0,1,-1]
也可用/;test形式来分别定义它的两个部分:
In[2]:=ss[x_]:=1/;x>=0;ss[x_]:=-1/;x<0
If函数允许指定条件既不是True 也不是 False时的值.例如:
In[3]:=sl[x_,y_]:=If[x>y,a,b,c];若输入sl[2,1+I],则输出c.
在上例中,只有当x,y都是实数时才可比较它们大小,而1+I为一复数,不能与2比较大小,因而输

出第三种结果c.
当条件多于两个时,可以用If的嵌套方式来处理,但更方便的方法是用Which函数,例如In[4]:=hh[x_]:=Which[x<0,x^2,x<=5,0,x>5,x^3],定义了以下函数
???????????????
3、 集合
在进行计算时,把许多元素放在一起并作为一个整体来处理是很方便的,在Mathematic中,集合是收集元素的一种方法,是一种非常重要而又极其普遍的结构。Mathematic中的集合实际上是一个数组,即它的元素具有有序性,而且可以重复。
In[1]:=s={3,5,1}??? Out[1]={3,5,1}
In[2]:=t={-1,3,7}??? Out[2]={-1,3,7}
以下命令把集合中的每个元素平方加1.
In[3]:=s^2+1?????? Out[3]={10,26,2}
也可求两个集合对应元素的和差积商等,例如:
In[4]:=s+t-2^s+s*t+t^s/t? Out[4]={-8,72,14}
在大多数情况下,Mathematic是把集合作为一个整体来处理,但有时也需要对集合中的某个元素进行处理.这里给出处理集合元素的一些常用函数:
{a,b,c,…}???????????????????????? 一个集合
Part[list,i] 或 list[[i]]????????????取集合list中的第i个元素
Part[list{i,j,…}] 或 list[[{i,j,…}]]???由集合list的第i,j,…元素组成的集合
Part[list,i]=value 或 list[[i]]=value????给集合list的第i个元素重新赋值
如:
In[5]:={1,2,5,6,8,9}[[4]]?
Out[5]=6
In[6]:=Part[s,{2,3,1,1,2,3}]?
Out[6]={5,1,3,3,5,1}
In[7]:=t[[2]]=5
 ? Out[7]=5
In[8]:=t?
Out[8]={-1,5,7}
4、代数运算
(1)多项式符号运算
Mathematic能进行多项式的加(+),减(-),乘(*),除(/),乘方(^)等运算,不仅如此, Mathematic还提供了许多关于多项式运算的函数,现列出较常用的一些:
Coefficient[poly,expr]????????? 提取多项式poly中 expr的系数
Expand[poly]???????????????? 展开多项式ploy
Factor[poly]?????????????? ?? ?对多项式ploy进行因式分解
FactorTerm[poly]???????????? ? 提取多项式ploy中的数字公因子
PolynomialGCD[ploy1,poly2,…]? 计算多项式ploy1, ploy2,…的最大公约式
PolynomialLCM[ploy1,poly2,…]? 计算多项式ploy1, ploy2,…的最小公倍式
Exponent[expr,form]?????????? 计算expr中form的最高指数
Part[expr,n]或expr[[n]]??????? expr中的第n项
Collect[poly,x]????????????? 以x的幂的形式重排多项式
Collect[poly,{x,y,…}]??????? 以x,y,…的幂的形式重排多项式
PolynomialQuotient[p,q,x]????? 计算多项式p/q 的商,略去余式
PloynomialRemainder[p,q,x]????? 计算多项式p/q的余项
上面最后两个运算方括号中的x代表把多项式的变元定义为x,以区别于多项式中可能包含的其它变量,举例如下(输出略去):
In[1]:=(x-1)^2*(x^3+1)
In[2]:=t=Expand[%]
In[3]:=Factor[t]
In[4]:=Expand[(1+2x+3y)^3]
In[5]:=PolynomialQuotient[%,x

^2+2x-3,x]
In[6]:=PloynomialRemainder[%4,x^2+2x-3,x]
可以使用如下命令求符号表达式的值:
expr/.x->value? 在表达式expr中用value 来替换x
expr/.{x->xval,y,->yval,…}? 进行一系列替换
例如:
In[7]:=1+2x/.x->3
In[8]:=1+2x+x^2/.x->2-y
In[9]:=(x+y)(x-y)^2/.{x->3,y->1-a}
In[10]:=t=1=x^2;t-3x/.x->Pi//N
 (2)有理分式运算
Mathematic也可对有理分式进行处理和化简,现列出常用的一些有理分式运算如下,请读者自己做一些实验.
Apart[expr]??????????????? 把表达式写成若干项的和,每项有最简分母
Cancel[expr]????????????? ?消去分子,分母中的公因子
Denominator[expr]????????? 取出表达式的分母
Numerator[expr]??????????? 取出表达式的分子
ExpandDenominator[expr]??? 展开表达式的分母
ExpandNumerator[expr]????? 展开表达式的分子
Expand[expr]?????????????? 展开表达式的分子,逐项被分母除
ExpandAll[expr]??????????? 展开表达式的分母,分子
Factor[expr]??? ???????????首先通分.然后对分子,分母分解因式
Simplify[expr]???????????? 把表达式尽可能简化
Together[expr]???????????? 对有理式进行通分
(3)逻辑与关系运算
Mathematic有以下逻辑与关系算子:==(相等,注意是用两个等号),!=(不相等),<(小于),<=(不大于),>(大于),>=(不小于),!(否),&&(与),||(或)等。通过它们能进行一些逻辑关系运算,关系运算的结果为False(假)或True(真).例如:
In[1]:=10<7??????????? Out[1]=False
In[2]:=3!==2!????????? Out[2]=False
In[3]:=7>4&&2!=3????? Out[3]=True
如果Mathematica不知道关系的结果是对还是错,则按原样输出,如:
In[4]:=x>y??? Out[4]=x>y
? (4)解方程
?? ?Mathematic中方程的两边必须用等号算子“= =”而不是“=”连接,如:
In[1]:=x^2+2x-7= =0?
Out[1]=
可以用下列命令求它的两个根
In[2]:=Solve[%,x]?
Out[2]=
以上结果的形式称为解的变换法则形式,可将它代入含有x的任何表达式求其值,如:
??? In[3]:=Simplify[x^2+2x+5/.%2]??? Out[3]={12,12}
我们也可通过替换符来解出x,用集合规则得到解的集合
In[4]:=x/.%2??
Out[4]={ ?, ?}
对于不高于四次的多项式方程,Solve总能给出其精确解,对高于四次的多项式方程不可能有公式解,尽管如此, Mathematic仍尽可能用因式分解及其它方法求解多项式,将高次方程改写成低次多项式方程或多项式方程组,结果Solve能求出许多高次多项式方程的显式代数解.例如:
In[5]:=p=3+3x-7x^2-x^3+2x^4+3x^7-3x^8-x^9+x^10;Solve[p= =0,x]
Out[5]={{x->1},{x->-Sqrt[3]},{x->sqrt[3]}},ToRules[Roots[2x+x^7= =-1,x]]}
在上例中,Mathematic只求出了其中的一些解,其它解写成了ToRules表示的符号形式,使

用N将给出数值解.
如果最终只须写数值解,可使用NSolve求解,如使用命令In[7]:=NSolve[p= =0,x],得到的Out[7]与Out[6]完全一样.
?? ?Mathematic能直接给出更复杂的超越方程的数值解.
In[8]:=FindRoot[x*Sin[x]-1/2= =0,{x,1}]??? Out[8]={x->0.740841}
??? 上例中,{x,1}表示求方程x*Sin[x]-1/2= =0在1附近的解。
??? 也可利用Mathematic求解方程组,命令为
Solve[{equ1,equ2,…equn},{x1,x2,…xn},如:
In[9]:=Solve[{a*x+b*y= =1,x-y= =2},{x,y}]
Out[9]=
??? 如果想得到a=0.1234,b=0.2时的数值解,可以输入:
In[10]:=%/.a->0.1234/.b->0.2? Out[10]={{x->4.329,y->2.329}}
注意:如果需要对表达式中多个变量赋值,可连续使用“x->expr1”,”y->expr2”,…它们之间必须用“/.”分开.
若对方程所含的全部变量求解,可略去输入语句中表示求解变量{? }的内容.如:
In[11]:=Solve[{x^2+y^2= =1,x+y= =2}]
Out[11]:=(略)
在求解方程(组)时,可以把一个方程看作你要处理的主要方程,而其它方程作为必须满足的辅助条件,你会发现这样处理将很方便。要做的第一件事是命名辅助条件组,然后用名字把辅助条件包含在你要用Solve 求解的方程组中.
如:SinCos被定义为方程:sin[x]^2+Cos[x]^2= =1;
In[14]:=sinCos= Sin[x]^2+Cos[x]^2= =1;?
在辅助条件sinx^2+cosx^2=1下,求解方程sinx+2cosx=1
In[15]:=Solve[{Sin[x]+2Cos[x]= =1,SinCos},{Sin[x],Cos[x]}]??
Out[15]={{Sin[x]->-(3/5),Cos[x]->4/5},{Sin[x]->1,Cos[x]->0}}
在同样条件下,求解另一个方程:
In[16]:=Solve[{Sin[x]= =Cos[x],SinCos},{Sin[x],Cos[x]}]????????
Out[16]=(略)

二、用Mathematic作函数图象
(1) 一元函数曲线的输出
Mathematic允许用各种图形、曲线输出计算结果,甚至输出动画,因此可以实现计算的可视化.图形的输出方式很多,此处只介绍其中的一小部分.
如果希望看到一个函数的几何图形,可以简单地输入
In[1]:=Plot[Sin[x],{x,0,2Pi}]
它代表绘制sin(x)的曲线,0还可以给这个图形的坐标轴加以说明,可使用:
In[2]:=Plot[Sin[x],{x,0,2Pi},AxesLable->{“x”,”sin(x)”}] 或者
In[2]:=Show[%,AxesLable->{“x”,”sin(x)”}],其中Show表示把上面的图形显示出来.还可以为整个图形加一个标题,可用
In[3]:=Show[%,PlotLabel->”sin(x)~x”]
上面几个输入语句中的AxesLable->{“x”,”sin(x)”}和PlotLabel->”sin(x)~x”称为图形输出语句的特别说明部分,图形输出有很多的可能的说明部分,下面我们将给出其中的一部分.
画图中的特别说明部分
输入形式 说明 默认值 AspectRatio 图形的高、宽比 1/0.618 Axes 是否加坐标轴 加 AxesLabel 给坐标轴加上名字 不加 Frame 给图形加上框 不加 PlotLabel 给图形加上标题 不加 PlotR

ange 指定函数因变量的区间 计算的结果 PlotColor 产生彩色图 不产生 PlotPoint 画图时计算的点数 25 如果我们希望把几条曲线重合在一起加以比较,可按以下方式操作.先画两条曲线,并给它们一个名字.
In[4]:=p1=Plot[Sin[x],{x,-2Pi,2Pi},PlotStyle->{RGBColor[1,0,0]}]
In[5]:=p2=Plot[Cos[x],{x,-2Pi,2Pi},PlotStyle->{RGBColor[0,1,0]}]
然后使用Show[{p1,p2}]就能将两条曲线合在一起。在上面的例子中,PlotStyle又是一个特别说明项,它规定所画图形的风格特征,如所画图形的颜色、线条、点的类别等.其命令格式为:PlotStyle->{{Style1},{Style2},…},其中Style i是由一些图形指令构成的集合,可循环使用.Style 常使用的图形指令有
AbsolutePointSize[d]????? 规定点的大小为d个绝对单位(1/72英寸)
AbsoluteThickness[d] ???? 规定线宽为d 个绝对单位(1/72英寸)
AbsoluteDashing[{d1,d2,…}]?规定直线为以d1,d2,…长度排列的虚线
RGBColor[red,green,blue]? 通过红绿蓝规定颜色(其值在0~1之间)
GrayLevel[level]????????? 规定图形目标的对比度(其值在0~1之间)
把几条曲线画在一起出可使用以下方法,如:
In[6]:=g1=Normal[Series[Sin[x],{x,0,3}]];
In[7]:=g2=Normal[Series[Sin[x],{x,0,5}]];
上面两条命令分别把sin(x)在x=0处展开成x的级数到三次幂和五次幂并舍去余项,得到了两个不同的多项式.下面的命令能将它们画在同一张图上。
In[8]:=Plot[{Sin[x],g1,g2},{x,0,2Pi},PlotRange->{1,1},PlotStyle->
? {{RGBColor[1.,0.1,0 .1]},{RGBColor[0.1,0.1,1.]},{RGBColor[0.1,1,0.1]}}]
?Mathematic也可绘制参数形式或极坐标形式给出的曲线,如:
In[9]:=r[t_ ]:=(3Cos[t]^2-1)/2;ParametricPlot[{r[t]*Cos[t],r[t]*Sin[t]},{t,0,2Pi}]
在Mathematic下画散点图用以下命令
In[10]:=ListPlot[{{1,1},{1.25,1.5},{1.5,1.35},{1.75,2.1}}, Prolog->AbsolutePointSize[8]]
??? 其中Prolog->AbsolutePointSize[8]]是在画图之前先确定点的大小。以下命令默认点的横坐标依次为整数1,2,…
In[11]:=ListPlot[{1,2,3,5,7,11,13,17,19,23},Prolog->AbsolutePointSize[4]]
(2)三维图形的绘制
Mathematica可以绘制三维图形,例如:In[1]:=Plot3D[Sin[x*y],{x,0,Pi},{y,0,Pi}]绘制一幅z=sin(xy)的图形.
和绘制二维曲线图一样,Plot3D[? ]也可以带很多说明,现将常用的一些列入下表:
输入形式 默认值 解释 PlotRange->{zmin,zmax}或PlotRange->{{xmin,xmax},
{ymin,ymax},{zmin,zmax}} Automatic 只绘制指定范围内的部分图形 PlotLabel->”图形标题” None 添加图形标题 Frame->True False 添加图框 PlotPoints->数目 15 计算f(x,y)在x,y方向上的点数 ViewPoints->{x,y,z} {1.3,-2.4,2} 视点的方位 Shading->False True 曲面是否用阴影覆盖 Mesh->False True 是否把平面上的网格画在曲面上 HiddenSurface->F

alse True 是否把曲面隐藏部分屏蔽起来 Axes->False True 是否画出各轴 AxesLable->{x1,y1,z1} ? 给三个轴加上标记 Boxed->False True 是否画出封闭立体图形的边界 BoxRatios->{Sx,Sy,Sz} ? 规定三维图封闭边界的长度比例 下面再举例对特别说明加以解释,例如:
In[2]:=g=Plot3D[-Sqrt[x^2+y^2]/10,{x,-5,5},{y,-5,5},PlotPoints->50]画出一个锥面,而In[3]:=Show[g,Mesh->False,Boxed->False,Axes->False]去掉了图g中的网格,外框和坐标轴;In[4]:=Show[g,Shading->False]把图g 中的阴影去掉.
另外有很多涉及色彩,阴影,多光源效应的特别说明项,此处从略.
Mathematic 也能画出一些特殊类型的图形,如:参数图,等高线图,密度图等.下面列出较常用的一些.
ParametricPlot[{fx,fy},{t,tmin,tmax}]???????????????????? 平面曲线的参数图
ParametricPlot3D[{fx,fy,fz},{t,tmin,tmax}]???????????????? 空间曲线的参数图
ParametricPlot3D[{fx,fy,fz},{t,tmin,tmax},{u,umin,umax}]??? 空间曲面的参数图
ContourPlot[f,{x,xmin,xmax},{y,ymin,ymax}]????????????? 函数f(x,y)的等高线图
DensityPlot[f,{x,xmin,xmax},{y,ymin,ymax}]?????? ???????函数f(x,y)的密度图
三、用软件Mathematic计算极限
 (1)极限的基本计算
Mathematic可以求函数和序列的极限.也可有洛必达法则求函数的不确定型极限,例如
In[1]:=Limit[Sin[x]/x,x->0]???????
Out[1]=1
In[2]:=Limit[(1+1/n)^n,n->Infinity]??
Out[2]=E
In[3]:=Limit[x*Log[x],x->0]???
Mathematica函数及使用方法
(来源: 北峰数模)
---------------------------------------------------------------------
注:为了对Mathematica有一定了解的同学系统掌握Mathematica的强大
功能,我们把它的一些资料性的东西整理了一下,希望能对大家有所帮助。
---------------------------------------------------------------------
一、运算符及特殊符号

Line1; 执行Line,不显示结果
Line1,line2 顺次执行Line1,2,并显示结果
?name 关于系统变量name的信息
??name 关于系统变量name的全部信息
!command 执行Dos命令
n! N的阶乘

!!filename 显示文件内容
< Expr>> filename 打开文件写
Expr>>>filename 打开文件从文件末写

() 结合率
[] 函数
{} 一个表
<*Math Fun*> 在c语言中使用math的函数
(*Note*) 程序的注释

#n 第n个参数
## 所有参数
rule& 把rule作用于后面的式子
% 前一次的输出
%% 倒数第二次的输出
%n 第n个输出
var::note 变量var的注释
"Astring " 字符串
Context ` 上下文

a+b 加
a-b 减
a*b或a b 乘
a/b 除
a^b 乘方
base^^num 以base为进位的数
lhs&&rhs 且
lhs||rhs 或
!lha 非
++,-- 自加1,自减1
+=,-=,*=,/= 同C语言
>,<,>=,<=,==,!= 逻辑判断(同c)
lhs=rhs 立即赋值
lhs:=rhs 建立动态赋值
lhs:>rhs 建立替换规则
lhs->rhs 建立替换规则
expr//funname 相当于filename[expr]
expr/.rule

将规则rule应用于expr
expr//.rule 将规则rule不断应用于expr知道不变为止
param_ 名为param的一个任意表达式(形式变量)
param__ 名为param的任意多个任意表达式(形式变量)

—————————————————————————————————————
二、系统常数
Pi 3.1415....的无限精度数值
E 2.17828...的无限精度数值
Catalan 0.915966..卡塔兰常数
EulerGamma 0.5772....高斯常数
GoldenRatio 1.61803...黄金分割数
Degree Pi/180角度弧度换算
I 复数单位
Infinity 无穷大
-Infinity 负无穷大
ComplexInfinity 复无穷大
Indeterminate 不定式

—————————————————————————————————————
三、代数计算
Expand[expr] 展开表达式
Factor[expr] 展开表达式
Simplify[expr] 化简表达式
FullSimplify[expr] 将特殊函数等也进行化简
PowerExpand[expr] 展开所有的幂次形式
ComplexExpand[expr,{x1,x2...}] 按复数实部虚部展开
FunctionExpand[expr] 化简expr中的特殊函数
Collect[expr, x] 合并同次项
Collect[expr, {x1,x2,...}] 合并x1,x2,...的同次项
Together[expr] 通分
Apart[expr] 部分分式展开
Apart[expr, var] 对var的部分分式展开
Cancel[expr] 约分
ExpandAll[expr] 展开表达式
ExpandAll[expr, patt] 展开表达式
FactorTerms[poly] 提出共有的数字因子
FactorTerms[poly, x] 提出与x无关的数字因子
FactorTerms[poly, {x1,x2...}] 提出与xi无关的数字因子
Coefficient[expr, form] 多项式expr中form的系数
Coefficient[expr, form, n] 多项式expr中form^n的系数
Exponent[expr, form] 表达式expr中form的最高指数
Numerator[expr] 表达式expr的分子
Denominator[expr] 表达式expr的分母
ExpandNumerator[expr] 展开expr的分子部分
ExpandDenominator[expr] 展开expr的分母部分

TrigExpand[expr] 展开表达式中的三角函数
TrigFactor[expr] 给出表达式中的三角函数因子
TrigFactorList[expr] 给出表达式中的三角函数因子的表
TrigReduce[expr] 对表达式中的三角函数化简
TrigToExp[expr] 三角到指数的转化
ExpToTrig[expr] 指数到三角的转化

RootReduce[expr]
ToRadicals[expr]

—————————————————————————————————————
四、解方程
Solve[eqns, vars] 从方程组eqns中解出vars
Solve[eqns, vars, elims] 从方程组eqns中削去变量elims,解出vars
DSolve[eqn, y, x] 解微分方程,其中y是x的函数
DSolve[{eqn1,eqn2,...},{y1,y2...},x]解微分方程组,其中yi是x的函数
DSolve[eqn, y, {x1,x2...}] 解偏微分方程
Eliminate[eqns, vars] 把方程组eqns中变量vars约去
SolveAlways[eqns, vars] 给出等式成立的所有参数满足的条件
Reduce[eqns, vars] 化简并给出所有可能解的条件
LogicalExpand[expr] 用&&和||将逻辑表达式展开
InverseFunction[f

] 求函数f的逆函数
Root[f, k] 求多项式函数的第k个根
Roots[lhs==rhs, var] 得到多项式方程的所有根

—————————————————————————————————————
五、微积分函数
D[f, x] 求f[x]的微分
D[f, {x, n}] 求f[x]的n阶微分
D[f,x1,x2..] 求f[x]对x1,x2...偏微分
Dt[f, x] 求f[x]的全微分df/dx
Dt[f] 求f[x]的全微分df
Dt[f, {x, n}] n阶全微分df^n/dx^n
Dt[f,x1,x2..] 对x1,x2..的偏微分
Integrate[f, x] f[x]对x在的不定积分
Integrate[f, {x, xmin, xmax}] f[x]对x在区间(xmin,xmax)的定积分
Integrate[f, {x, xmin, xmax}, {y, ymin, ymax}] f[x,y]的二重积分
Limit[expr, x->x0] x趋近于x0时expr的极限
Residue[expr, {x,x0}] expr在x0处的留数
Series[f, {x, x0, n}] 给出f[x]在x0处的幂级数展开
Series[f, {x, x0,nx}, {y, y0, ny}]先对y幂级数展开,再对x
Normal[expr] 化简并给出最常见的表达式
SeriesCoefficient[series, n] 给出级数中第n次项的系数
SeriesCoefficient[series, {n1,n2...}]
'或Derivative[n1,n2...][f] 一阶导数
InverseSeries[s, x] 给出逆函数的级数
ComposeSeries[serie1,serie2...] 给出两个基数的组合
SeriesData[x,x0,{a0,a1,..},nmin,nmax,den]表示一个在x0处x的幂级数,其中ai为系数
O[x]^n n阶小量x^n
O[x, x0]^n n阶小量(x-x0)^n

—————————————————————————————————————
八、数值函数
N[expr] 表达式的机器精度近似值
N[expr, n] 表达式的n位近似值,n为任意正整数
NSolve[lhs==rhs, var] 求方程数值解
NSolve[eqn, var, n] 求方程数值解,结果精度到n位
NDSolve[eqns, y, {x, xmin, xmax}]微分方程数值解
NDSolve[eqns, {y1,y2,...}, {x, xmin, xmax}]

微分方程组数值解
FindRoot[lhs==rhs, {x,x0}] 以x0为初值,寻找方程数值解
FindRoot[lhs==rhs, {x, xstart, xmin, xmax}]
NSum[f, {i,imin,imax,di}] 数值求和,di为步长
NSum[f, {i,imin,imax,di}, {j,..},..] 多维函数求和
NProduct[f, {i, imin, imax, di}]函数求积
NIntegrate[f, {x, xmin, xmax}] 函数数值积分

优化函数:
FindMinimum[f, {x,x0}] 以x0为初值,寻找函数最小值
FindMinimum[f, {x, xstart, xmin, xmax}]
ConstrainedMin[f,{inequ},{x,y,..}]
inequ为线性不等式组,f为x,y..之线性函数,得到最小值及此时的x,y..取值
ConstrainedMax[f, {inequ}, {x, y,..}]同上
LinearProgramming[c,m,b] 解线性组合c.x在m.x>=b&&x>=0约束下的
最小值,x,b,c为向量,m为矩阵
LatticeReduce[{v1,v2...}] 向量组vi的极小无关组

数据处理:
Fit[data,funs,vars]用指定函数组对数据进行最小二乘拟和
data可以为{{x1,y1,..f1},{x2,y2,..f2}..}多维的情况
emp: Fit[{10.22,12,3.2,9.9}, {1, x, x^2,Sin[x]}, x]
Interpolation[data]对数据进行差值,
data同上,另外还可以为{{x1,{f1,df11,df12}},{x2,{f2,.}..}指定各阶导数
InterpolationOrder默认为3次

,可修改
ListInterpolation[array]对离散数据插值,array可为n维
ListInterpolation[array,{{xmin,xmax},{ymin,ymax},..}]
FunctionInterpolation[expr,{x,xmin,xmax}, {y,ymin,ymax},..]
以对应expr[xi,yi]的为数据进行插值
Fourier[list] 对复数数据进行付氏变换
InverseFourier[list] 对复数数据进行付氏逆变换
Min[{x1,x2...},{y1,y2,...}]得到每个表中的最小值
Max[{x1,x2...},{y1,y2,...}]得到每个表中的最大值
Select[list, crit] 将表中使得crit为True的元素选择出来
Count[list, pattern] 将表中匹配模式pattern的元素的个数
Sort[list] 将表中元素按升序排列
Sort[list,p] 将表中元素按p[e1,e2]为True的顺序比较list
的任两个元素e1,e2,实际上Sort[list]中默认p=Greater

集合论:
Union[list1,list2..] 表listi的并集并排序
Intersection[list1,list2..] 表listi的交集并排序
Complement[listall,list1,list2...]从全集listall中对listi的差集

—————————————————————————————————————
九、虚数函数
Re[expr] 复数表达式的实部
Im[expr] 复数表达式的虚部
Abs[expr] 复数表达式的模
Arg[expr] 复数表达式的辐角
Conjugate[expr] 复数表达式的共轭

—————————————————————————————————————
十、数的头及模式及其他操作
Integer _Integer 整数
Real _Real 实数
Complex _Complex 复数
Rational_Rational 有理数
(*注:模式用在函数参数传递中,如MyFun[Para1_Integer,Para2_Real]
规定传入参数的类型,另外也可用来判断If[Head[a]==Real,...]*)
IntegerDigits[n,b,len] 数字n以b近制的前len个码元
RealDigits[x,b,len] 类上
FromDigits[list] IntegerDigits的反函数
Rationalize[x,dx] 把实数x有理化成有理数,误差小于dx
Chop[expr, delta] 将expr中小于delta的部分去掉,dx默认为10^-10
Accuracy[x] 给出x小数部分位数,对于Pi,E等为无限大
Precision[x] 给出x有效数字位数,对于Pi,E等为无限大
SetAccuracy[expr, n] 设置expr显示时的小数部分位数
SetPrecision[expr, n] 设置expr显示时的有效数字位数

—————————————————————————————————————
十一、区间函数
Interval[{min, max}] 区间[min, max](* Solve[3 x+2==Interval[{-2,5}],x]*)
IntervalMemberQ[interval, x] x在区间内吗?
IntervalMemberQ[interval1,interval2] 区间2在区间1内吗?
IntervalUnion[intv1,intv2...] 区间的并
IntervalIntersection[intv1,intv2...] 区间的交

—————————————————————————————————————
十二、矩阵操作
a.b.c 或 Dot[a, b, c] 矩阵、向量、张量的点积
Inverse[m] 矩阵的逆
Transpose[list] 矩阵的转置
Transpose[list,{n1,n2..}]将矩阵list 第k行与第nk列交换
Det[m] 矩阵的

行列式
Eigenvalues[m] 特征值
Eigenvectors[m] 特征向量
Eigensystem[m] 特征系统,返回{eigvalues,eigvectors}
LinearSolve[m, b] 解线性方程组m.x==b
NullSpace[m] 矩阵m的零空间,即m.NullSpace[m]==零向量
RowReduce[m] m化简为阶梯矩阵
Minors[m, k] m的所有k*k阶子矩阵的行列式的值(伴随阵,好像是)
MatrixPower[mat, n] 阵mat自乘n次
Outer[f,list1,list2..] listi中各个元之间相互组合,并作为f的参数的到的矩阵
Outer[Times,list1,list2]给出矩阵的外积
SingularValues[m] m的奇异值,结果为{u,w,v},
m=Conjugate[Transpose[u]].DiagonalMatrix[w].v
PseudoInverse[m] m的广义逆
QRDecomposition[m] QR分解
SchurDecomposition[m] Schur分解
LUDecomposition[m] LU分解

—————————————————————————————————————
十三、表函数
(*“表”,我认为是Mathematica中最灵活的一种数据类型 *)
(*实际上表就是表达式,表达式也就是表,所以下面list==expr *)
(*一个表中元素的位置可以用于一个表来表示 *)

表的生成
{e1,e2,...} 一个表,元素可以为任意表达式,无穷嵌套
Table[expr,{imax}] 生成一个表,共imax个元素
Table[expr,{i, imax}] 生成一个表,共imax个元素expr[i]
Table[expr,{i,imin,imax},{j,jmin,jmax},..] 多维表
Range[imax] 简单数表{1,2,..,imax}
Range[imin, imax, di] 以di为步长的数表
Array[f, n] 一维表,元素为f[i] (i从1到n)
Array[f,{n1,n2..}] 多维表,元素为f[i,j..] (各自从1到ni)
IdentityMatrix[n] n阶单位阵
DiagonalMatrix[list] 对角阵

元素操作
Part[expr, i]或expr[[i]]第i个元
expr[[-i]] 倒数第i个元
expr[[i,j,..]] 多维表的元
expr[[{i1,i2,..}] 返回由第i(n)的元素组成的子表
First[expr] 第一个元
Last[expr] 最后一个元
Head[expr] 函数头,等于expr[[0]]
Extract[expr, list] 取出由表list制定位置上expr的元素值
Take[list, n] 取出表list前n个元组成的表
Take[list,{m,n}] 取出表list从m到n的元素组成的表
Drop[list, n] 去掉表list前n个元剩下的表,其他参数同上
Rest[expr] 去掉表list第一个元剩下的表
Select[list, crit] 把crit作用到每一个list的元上,
为True的所有元组成的表
表的属性
Length[expr] expr第一曾元素的个数
Dimensions[expr] 表的维数返回{n1,n2..},expr为一个n1*n2...的阵
TensorRank[expr] 秩
Depth[expr] expr最大深度
Level[expr,n] 给出expr中第n层子表达式的列表
Count[list, pattern] 满足模式的list中元的个数
MemberQ[list, form] list中是否有匹配form的元
FreeQ[expr, form] MemberQ的反函数
Position[expr, pattern] 表中匹配模式pattern的元素的位置列表
Cases[{e1,e2...},pattern]匹配模式pattern的所有元素ei的表
表的操作
Append[expr, elem] 返回 在表expr的最后追加elem元后的表
Prepend[expr, elem] 返回 在表expr的最前添加elem元后

的表
Insert[list, elem, n] 在第n元前插入elem
Insert[expr,elem,{i,j,..}]在元素expr[[{i,j,..}]]前插入elem
 Delete[expr, {i, j,..}] 删除元素expr[[{i,j,..}]]后剩下的表
DeleteCases[expr,pattern]删除匹配pattern的所有元后剩下的表
ReplacePart[expr,new,n] 将expr的第n元替换为new

Sort[list] 返回list按顺序排列的表
Reverse[expr] 把表expr倒过来
RotateLeft[expr, n] 把表expr循环左移n次
RotateRight[expr, n] 把表expr循环右移n次
Partition[list, n] 把list按每n各元为一个子表分割后再组成的大表
Flatten[list] 抹平所有子表后得到的一维大表
Flatten[list,n] 抹平到第n层
Split[list] 把相同的元组成一个子表,再合成的大表
FlattenAt[list, n] 把list[[n]]处的子表抹平
Permutations[list] 由list的元素组成的所有全排列的列表
Order[expr1,expr2] 如果expr1在expr2之前返回1,如果expr1在
expr2之后返回-1,如果expr1与expr2全等返回0
Signature[list] 把list通过两两交换得到标准顺序所需的
交换次数(排列数)

以上函数均为仅返回所需表而不改变原表
AppendTo[list,elem] 相当于list=Append[list,elem];
PrependTo[list,elem] 相当于list=Prepend[list,elem];

--—————————————————————————————————————
十四、绘图函数

二维作图

Plot[f,{x,xmin,xmax}] 一维函数f[x]在区间[xmin,xmax]上的函数曲线
Plot[{f1,f2..},{x,xmin,xmax}] 在一张图上画几条曲线
ListPlot[{y1,y2,..}] 绘出由离散点对(n,yn)组成的图
ListPlot[{{x1,y1},{x2,y2},..}] 绘出由离散点对(xn,yn)组成的图
ParametricPlot[{fx,fy},{t,tmin,tmax}] 由参数方程在参数变化范围内的曲线
ParametricPlot[{{fx,fy},{gx,gy},...},{t,tmin,tmax}]
在一张图上画多条参数曲线
选项:
PlotRange->{0,1} 作图显示的值域范围
AspectRatio->1/GoldenRatio生成图形的纵横比
PlotLabel ->label 标题文字
Axes ->{False,True} 分别制定是否画x,y轴
AxesLabel->{xlabel,ylabel}x,y轴上的说明文字
Ticks->None,Automatic,fun用什么方式画轴的刻度
AxesOrigin ->{x,y} 坐标轴原点位置
AxesStyle->{{xstyle}, {ystyle}}设置轴线的线性颜色等属性
Frame ->True,False 是否画边框
FrameLabel ->{xmlabel,ymlabel,xplabel,yplabel}
边框四边上的文字
FrameTicks同Ticks 边框上是否画刻度
GridLines 同Ticks 图上是否画栅格线
FrameStyle ->{{xmstyle},{ymstyle}设置边框线的线性颜色等属性
ListPlot[data,PlotJoined->True] 把离散点按顺序连线
PlotSytle->{{style1},{style2},..}曲线的线性颜色等属性
PlotPoints->15 曲线取样点,越大越细致

三维作图
Plot3D[f,{x,xmin,xmax}, {y,ymin,ymax}]
二维函数f[x,y]的空间曲面
Plot3D[{f,s}, {x,xmin,xmax}, {y,ymin,ymax}]
同上,曲面的染色由s[x,y]值决定
ListPlot3D[array] 二维数据阵array的立体高度图
ListPlot3D[array,shades]同

上,曲面的染色由shades[数据]值决定
ParametricPlot3D[{fx,fy,fz},{t,tmin,tmax}]
二元数方程在参数变化范围内的曲线
ParametricPlot3D[{{fx,fy,fz},{gx,gy,gz},...},{t,tmin,tmax}]
多条空间参数曲线
选项:
ViewPoint ->{x,y,z} 三维视点,默认为{1.3,-2.4,2}
Boxed -> True,False 是否画三维长方体边框
BoxRatios->{sx,sy,sz} 三轴比例
BoxStyle 三维长方体边框线性颜色等属性
Lighting ->True 是否染色
LightSources->{s1,s2..} si为某一个光源si={{dx,dy,dz},color}
color为灯色,向dx,dy,dz方向照射
AmbientLight->颜色函数 慢散射光的光源
Mesh->True,False 是否画曲面上与x,y轴平行的截面的截线
MeshStyle 截线线性颜色等属性
MeshRange->{{xmin,xmax}, {ymin,ymax}}网格范围
ClipFill->Automatic,None,color,{bottom,top}
指定图形顶部、底部超界后所画的颜色
Shading ->False,True 是否染色
HiddenSurface->True,False 略去被遮住不显示部分的信息


等高线
ContourPlot[f,{x,xmin,xmax},{y,ymin,ymax}]
二维函数f[x,y]在指定区间上的等高线图
ListContourPlot[array] 根据二维数组array数值画等高线
选项:
Contours->n 画n条等高线
Contours->{z1,z2,..} 在zi处画等高线
ContourShading -> False 是否用深浅染色
ContourLines -> True 是否画等高线
ContourStyle -> {{style1},{style2},..}等高线线性颜色等属性
FrameTicks 同上

密度图
DensityPlot[f,{x,xmin,xmax},{y,ymin,ymax}]
二维函数f[x,y]在指定区间上的密度图
ListDensityPlot[array] 同上

图形显示
Show[graphics,options] 显示一组图形对象,options为选项设置
Show[g1,g2...] 在一个图上叠加显示一组图形对象
GraphicsArray[{g1,g2,...}]在一个图上分块显示一组图形对象
SelectionAnimate[notebook,t]把选中的notebook中的图画循环放映

选项:(此处选项适用于全部图形函数)
Background->颜色函数 指定绘图的背景颜色
RotateLabel -> True 竖着写文字
TextStyle 此后输出文字的字体,颜色大小等
ColorFunction->Hue等 把其作用于某点的函数值上决定某点的颜色
RenderAll->False 是否对遮挡部分也染色
MaxBend 曲线、曲面最大弯曲度

绘图函数(续)

图元函数
Graphics[prim, options]
prim为下面各种函数组成的表,表示一个二维图形对象
Graphics3D[prim, options]
prim为下面各种函数组成的表,表示一个三维图形对象
SurfaceGraphics[array, shades]表示一个由array和shade决定的曲面对象
ContourGraphics[array]表示一个由array决定的等高线图对象
DensityGraphics[array]表示一个由array决定的密度图对象

以上定义图形对象,可以进行对变量赋值,合并显示等操作,也可以存盘

Point[p] p={x,y}或{x,y,z},在指定位置画点
Line[{p1,p2,..}]经由pi点连线
Rectangle[{xmin, ymin}, {xmax, ymax}] 画矩形
Cuboid[{xmin,ymin,zmin},{xmax,ymax,zmax}]由对角

线指定的长方体
Polygon[{p1,p2,..}] 封闭多边形
Circle[{x,y},r] 画圆
Circle[{x,y},{rx,ry}] 画椭圆,rx,ry为半长短轴
Circle[{x,y},r,{a1,a2}] 从角度a1~a2的圆弧
Disk[{x, y}, r] 填充的园、椭圆、圆弧等参数同上
Raster[array,ColorFunction->f] 颜色栅格
Text[expr,coords] 在坐标coords上输出表达式
PostScript["string"] 直接用PostScript图元语言写
Scaled[{x,y,..}] 返回点的坐标,且均大于0小于1

颜色函数(指定其后绘图的颜色)
GrayLevel[level] 灰度level为0~1间的实数
RGBColor[red, green, blue] RGB颜色,均为0~1间的实数
Hue[h, s, b] 亮度,饱和度等,均为0~1间的实数
CMYKColor[cyan, magenta, yellow, black] CMYK颜色

其他函数(指定其后绘图的方式)
Thickness[r] 设置线宽为r
PointSize[d] 设置绘点的大小
Dashing[{r1,r2,..}] 虚线一个单元的间隔长度
ImageSize->{x, y} 显示图形大小(像素为单位)
ImageResolution->r 图形解析度r个dpi
ImageMargins->{{left,right},{bottom,top}}四边的空白
ImageRotated->False 是否旋转90度显示

—————————————————————————————————————
十五、流程控制
分支
If[condition, t, f] 如果condition为True,执行t段,否则f段
If[condition, t, f, u] 同上,即非True又非False,则执行u段
Which[test1,block1,test2,block2..] 执行第一为True的testi对应的blocki
Switch[expr,form1,block1,form2,block2..]
执行第一个expr所匹配的formi所对应的blocki段
循环
Do[expr,{imax}] 重复执行expr imax次
Do[expr,{i,imin,imax}, {j,jmin,jmax},...]多重循环
While[test, body] 循环执行body直到test为False
For[start,test,incr,body]类似于C语言中的for,注意","与";"的用法相反
examp: For[i=1;t =x,i^2<10,i++,t =t+i;Print[t]]
异常控制
Throw[value] 停止计算,把value返回给最近一个Catch处理
Throw[value, tag] 同上,
Catch[expr] 计算expr,遇到Throw返回的值则停止
Catch[expr, form] 当Throw[value, tag]中Tag匹配form时停止
 其他控制
Return[expr] 从函数返回,返回值为expr
Return[ ] 返回值Null
Break[ ] 结束最近的一重循环
Continue[ ] 停止本次循环,进行下一次循环
Goto[tag] 无条件转向Label[Tag]处
Label[tag] 设置一个断点
Check[expr,failexpr] 计算expr,如果有出错信息产生,则返回failexpr的值
Check[expr,failexpr,s1::t1,s2::t2,...]当特定信息产生时则返回failexpr
CheckAbort[expr,failexpr]当产生abort信息时放回failexpr
Interrupt[ ] 中断运行
Abort[ ] 中断运行
TimeConstrained[expr,t] 计算expr,当耗时超过t秒时终止
MemoryConstrained[expr,b]计算expr,当耗用内存超过b字节时终止运算
交互式控制
Print[expr1,expr2,...] 顺次输出expri的值
examp: Print[ "X=" , X//N , " " ,f[x+1]];
Input[ ] 产生一个输入对话框,返回所输入任意表达式
Input["prompt"] 同上

,prompt为对话框的提示
Pause[n] 运行暂停n秒

—————————————————————————————————————
十六、函数编程
(*函数编程是Mathematica中很有特色也是最灵活的一部分,它充分体现了 *)
(*Mathematica的“一切都是表达式”的特点,如果你想使你的Mathematica程 *)
(*序快于高级语言,建议你把本部分搞通*)

纯函数
Function[body]或body& 一个纯函数,建立了一组对应法则,作用到后面的表达式上
Function[x, body] 单自变量纯函数
Function[{x1,x2,...},body]多自变量纯函数
#,#n 纯函数的第一、第n个自变量
## 纯函数的所有自变量的序列
examp: ^& [2,3] 返回第一个参数的第二个参数次方

映射
Map[f,expr]或f/@expr 将f分别作用到expr第一层的每一个元上得到的列表
Map[f,expr,level] 将f分别作用到expr第level层的每一个元上
Apply[f,expr]或f@@expr 将expr的“头”换为f
Apply[f,expr,level] 将expr第level层的“头”换为f
MapAll[f,expr]或f//@expr把f作用到expr的每一层的每一个元上
MapAt[f,expr,n] 把f作用到expr的第n个元上
MapAt[f,expr,{i,j,...}] 把f作用到expr[[{i,j,...}]]元上
MapIndexed[f,expr] 类似MapAll,但都附加其映射元素的位置列表
Scan[f, expr] 按顺序分别将f作用于expr的每一个元
Scan[f,expr,levelspec] 同上,仅作用第level层的元素

复合映射
Nest[f,expr,n] 返回n重复合函数f[f[...f[expr]...]]
NestList[f,expr,n] 返回0重到n重复合函数的列表{expr,f[expr],f[f[expr]]..}
FixedPoint[f, expr] 将f复合作用于expr直到结果不再改变,即找到其不定点
FixedPoint[f, expr, n] 最多复合n次,如果不收敛则停止
FixedPointList[f, expr] 返回各次复合的结果列表
FoldList[f,x,{a,b,..}] 返回{x,f[x,a],f[f[x,a],b],..}
Fold[f, x, list] 返回FoldList[f,x,{a,b,..}]的最后一个元
ComposeList[{f1,f2,..},x]返回{x,f1[x],f2[f1[x]],..}的复合函数列表
Distribute[f[x1,x2,..]] f对加法的分配率
Distribute[expr, g] 对g的分配率
Identity[expr] expr的全等变换
Composition[f1,f2,..] 组成复合纯函数f1[f2[..fn[ ]..]
Operate[p,f[x,y]] 返回p[f][x, y]
Through[p[f1,f2][x]] 返回p[f1[x],f2[x]]

Compile[{x1,x2,..},expr]编译一个函数,编译后运行速度可以大大加快
Compile[{{x1,t1},{x2,t2}..},expr] 同上,可以制定函数参数类型

—————————————————————————————————————
十七、替换规则

lhs->rhs 建立了一个规则,把lhs换为rhs,并求rhs的值
lhs:>rhs 同上,只是不立即求rhs的值,知道使用该规则时才求值
Replace[expr,rules] 把一组规则应用到expr上,只作用一次
expr /. rules 同上
expr //.rules 将规则rules不断作用到expr上,直到无法作用为止
Dispatch[{lhs1->rhs1,lhs2->rhs2,...}]综合各个规则,

产生一组优化的规则组




>************************************************************************<
Mathematica的常见问题
>************************************************************************<

===================================
1).Mathematica 可以定义变量为实数么?

1. 在Simplify/FullSimplify可以使用\[Element],如
Simplify[Re[a+b*I],a\[Element]Reals]
2. 可以使用ComplexExpand[]来展开表达式,默认:符号均为实数:
Unprotect[Abs];
Abs[x_] := Sqrt[Re[x]^2 + Im[x]^2];
ComplexExpand[Abs[a + b*I], a]
3. 使用/:,对符号关联相应的转换规则
x /: Im[x] = 0;
x /: Re[x] = x;
y /: Im[y] = 0;
y /: Re[y] = y;
Re[x+y*I]

===================================
2).Mathematica中如何中断运算?

Alt+. 直接终止当前执行的运算
Alt+, 询问是否终止或者继续
如果不能终止,用菜单Kernel\Quit Kernal\Local来退出当前运算

===================================
3).请高手推荐Mathematica参考书

我迄今为止看到的最好的一本就是Mathematica自己带的帮助里面的The Mathematica Book,内容全面,循序渐近,非常容易学习使用。其他所见到的一些中文书籍基本上都是直接翻译帮助的内容,没有什么
新意。
===================================
4).请问在Mathematica中如何画极坐标图?

<< Graphics`Graphics`
PolarPlot[]
PolarListPlot[]

===================================
5).Mathematica中如何对离散点作积分?

离散的点通过插值或者拟合就可以得到连续的函数,然后可以对该函数求积分和微分。下面是一个例子:

f[x_] := NIntegrate[Sin[Cos[x]], {x, 0, a}];
data = Table[{a, f[x]}, {a, 0, 10}];
expr = Interpolation[data];

Plot[expr[a], {a, 0, 10}];
Plot[Evaluate[D[expr[a], a]], {a, 0, 10}]

如果想实现Matlab中的cumsum的功能:
Drop[FoldList[Plus, 0, {a1,a2,…,an}], 1]

===================================
6).在Mathematica中创立palette?

在帮助中查找"Creating Palettes (Windows)"

===================================
7).Mathematica可以作用户界面吗?

Mathematica的GUI设计是通过它的交互式的NoteBook实现的,可以参考Mathematica帮助文件中的demo例子,或参考帮助2.10.6

===================================
8).Mathematica中如何使用中文?

Mathematica3/4/4.1中如果使用中文,需要先选中所在的cell,或者选中输入的中文乱码,在菜单format font中选中对应的中文字体后才能正确显示。
最新的4.2在国际化有较大的改进,可以直接输入中文,参见
https://www.360docs.net/doc/f118365557.html,/products/mathematica/newin42/publishing.html

===================================
9).Mathematica中如何使用Solve[]求解的结果?

Solve[]求解的结果是以一个"表"或者"替换规则"的形式给出来的,并没有把结果真正替换给未知量。如果


sol = Solve[a*x^2 + b*x + c == 0, x];
x=x /. sol[[1]]

也可以使用对表元素的操作把结果取出来,比如在上面的例子中:

x1=sol[[1,1,2]]
x2=sol[[2,1,2]]
?
Out[3]=0
In[4]:=Limit[(1+2x)^(1/x),x->0]??
Out[4]=E^2
Mathematic也可求左,右极限
求左极限:
In[5]:=Limit[x/Sqrt[1-Cos[x]],x->0,Direction->1 ]??
Out[5]=-Sqrt[2]??
求右极限:
In[5]:=Limit[x/Sqrt[1-Cos[x]],x->0,Direction->-1 ]??
Out[5]=Sqrt[2]??
(2)实例
变速直线运动的瞬时速度:如果物体作直线运动,在直线上选取坐标系,
该物体所处的位置坐标 s 是时间 t 的函数,记为 s = s(t),则从时刻 t0 到t0 + Dt 的时间间隔内它的平均速度为
t0 时刻的即时速度
比如:自由落体运动
四、用软件Mathematic计算导数
(1)导数的基本计算
在Mathematicak ,可以很方便地完成各种微分运算,命令格式为:
求导函数 意义 D[f,x] 求f 关于x的偏导数 D[f,{x,n}] 求f 关于x的n阶偏导数 In[1]:=D[x^n,x]?????????? Out[1]=
In[2]:=D[Log[x],{x,2}]????Out[2]=
In[3]:=D[x^2+y^2,x]?????? Out[3]=
以上是假定y 独立于x,若y 是x的函数,可按下述方法处理:
In[4]:=D[x^2+y[x]^2,x]??? Out[4]=2x+2y[x]y’[x]
也可不给出显示函数y[x]而用命令NonConstants->{y}直接暗示D:y 是x的函数,下例中,D[y,x,NonConstants->{y}]表示.
In[5]:=D[x^2+y^2,NonConstants->{y}]???
Out[5]=2x+2yD[y,x,NonConstants->{y}]
我们也可用D命令求混合偏导数
In[6]:=D[x*Exp[y*x]+Sin[x*y*z],x,y,x]
In[7]=D[Sin[x*y*z^2],x,y,NonConstants->{z}]
如果输入的表达式不是一个具体函数,则得到微分后的一般形式.如:
In[8]:=D[x*f [x^2],x]? Out[8]=
在Mathematic中还可求函数的全微分,命令格式为:
Dt[f]?? 求全微分df?;??? Dt[f,x]????? 求全导数;
Dt[f,x,Constants->{c1,c2 …}]; 求全导数,其中ci为常数.
In[11]:=Dt[x^2+y^2]???????????????
Out[11]=2xDt[x]+2yDt[y]
In[12]:=Dt[x^2+y^2,x]??????????????
Out[12]=2x+2yDt[y,x]
In[13]:=Dt[x^2+y^2,x,Constants->{y}]?
Out[13]=2x
In[14]:=SetAttributes[{c,d},Constant]
Dt[c*y^2*x^2+d*y^2,x,y]
Out[15]=(略)
在上例中,SetAttributes[{c,d},Constant]表示在所有情形下把c,d都定义为常数.用命令ClearAttributse[{c,d},Constant]可清除这种设置.
(2)实例
 回旋曲线的数学方程式
回旋曲线是公路设计中最常用的一种缓和曲线。我国《标准》规定缓和曲线采用回旋线,回旋线的基本公式为:
(1)
——回旋线上某点的曲率半径
——回旋线上某点到原点的曲线比
——回旋线参数
日本道路协会编写的《回旋曲

线手册》(修订版)给出了回旋线的参数方程如下:
(2)
(1)式和(2)式之间有什么关系呢,分析如下:
由弧微分公式可求出如下:
(3)
又由(2)式:( ) (4)
( ) (5)
代入3式得:( ) (6)
再求曲率半径为:
(7)
由(4)式,(5)式得:
( ),( ) (8)
代入(7)式得:( ) (9)
由(6),(7)式得:( )=常数 (10)
综上讨论可知,( ),
用(2)式表示的回旋曲线满足(1)式所具有的性质,即:

五、用软件Mathematic计算不定积分与定积分
(1)基本计算
Mathematic可以求不定积分,定积分,重积分等各种积分运算。例如:
In[1]:=Integrate[1/(x^2-1),x]??
????Out[1]=
??? 当被积分函数包含符号不确定的参数时,积分结果可能与参数的符号有关,如果不事先加以说明, Mathematic总是假设该参数为正值.如:
In[2]:=Integrate[1/(x^2+a),x]???
Out[2]=
我们知道,许多不定积分不能用初等函数表示出来,有些根本没有封闭形式. Mathematic有很多特殊函数可以表示一些积分结果.如:
In[3]:=Integrate[Log[Log[x]],x]
????Out[3]=xLog[Log[x]]-LogIntegral[x]
上面的特殊函数LogIntegal[x]是特殊积分函数——对数积分函数.
如果不定积分没有封闭形式,用户也没有事先约定,在这种情况下,Mathematica把输入的公式原样输出.
Mathematic可以用牛顿——莱布尼兹公式完成符号形式的定积分,如果输入:
In[4]:=Integrate[3x^2+2x,{x,a,b}]?
Out[4]=
也可计算二重积分,如: 计算
In[5]:=Integrate[3x^2+3y^2,{x,0,a},{y,0,b}]?
In[6]:=Integrate[6x^2+6y^2,{x,-a,a},{y,-Sqrt[a^2-x^2],Sqrt[a^2-x^2]}]
Out[6]=3Pi
无论微分还是积分,最后结果可能是一个非常复杂的表达式,如果使用Simplify或FullSimplify简化它,常常可以得到十分简明的结果.
(2)实例
如图所示矩形截面,试用积分发球截面惯性矩,。
写出步骤并作出图。



六、用软件Mathematic计算行列式、矩阵
在Mathematica系统中,有固定的输入法和函数对矩阵的有关问题进行计算。所以必须要掌握这些输入法与函数。如:
1、求行列式
在Mathematica系统中,用函数Det[b]求行列式的值,其中b是所给行列式的元素所构成的二维数表,b的一维子表顺次由行列式的逐行(或列)上的元素构成.
例1 计算行列式
解:


2、矩

阵的加法
在Mathematica系统中,矩阵的加减法实际上就是二维数表间的相应加减法.在二维数表的表达式后输入 //MatrixForm 可输出矩阵形式的表达式.
例2 已知矩阵求
解:


//MatrixForm



3、矩阵的乘法
在Mathematica系统中,矩阵用二维数表表示,矩阵a与b的乘法运算用表示.其中“”表示矩阵乘法运算符号.
例3 设矩阵求
解:




4、矩阵的转置
在Mathematica系统中,求矩阵A的转置矩阵用函数Transpose[A].
例4 若矩阵求
解:





5、矩阵的逆矩阵
在Mathematica系统中,求矩阵A的逆矩阵用函数Inverse [A].
例5 求矩阵的逆矩阵。
解:





6、解线性方程组
在Mathematica系统中,可以用函数LinearSolve [m,v]解线性方程组mx=v.
其中m是系数矩阵,v是常数项。
例6 解线性方程组
解:




七、用软件Mathematic计算级数、概率
(1)级数的基本计算
Mathematic提供了专门的求和运算(Sum[ ])和求积运算(Product[ ]),可求有限多项的和与积的精确结果,还可求可列无穷多项的和与积的数字结果(简单情形时也能求出精确结果)。
In[1]:=Sum[k^2,{k,1,15}]
Out[1]=14400
上例中,求出了和式的值,这里默认的步长为1,也可任意指定步长,例如:
In[2]:=Sum[x^k/k^2,{k,1,8,2}]?
Out[2]=
In[3]:=Sum[1/k^2,{k,1,Infinity}]//N?
Out[3]=1.64493(精确值为)
Sum也可计算多重求和.例如:
In[4]:=Sum[x^i*y^j,{i,1,5,2},{j,1,i,2}]?
Out[4]=(略)
积的运算与和的运算一样。
In[5]:=Product[k,{k,1,12,3}]
Out[5]=280
In[6]:=Product[x+i-j,{i,1,4},{j,1,i-1}
Out[6]= (略)
(2)级数展开与运算
Mathematic可以完成幂级数的展开的运算.例如:
In[1]:=Series[Exp[x],{x,0,4}]??
可以把函数在x=0点展开成幂级数直至x的四次幂,Mathematic还可以进行更一般形式的幂级数展开,如:
In[2]:=Series[f[x],{x,1,3}]
Out[2]= (略)
Mathematic也可对多元函数进行幂级数展开,命令格式为:
Series[expr,{x,x0,n},{y,y0,m},表示先对x而后y进行展开.
In[3]:=Series[f[x,y],{x,0,3},{y,0,2}]
In[4]:=Series[Exp[x*y],{x,0,3},{y,0,2}]
幂级数可参加各种运算,如:
In[6]:=D[%1,x]
Series展开结果带有余项,后面所有的计算结果都只能展开到指定的阶,如:
In[7]:=Series[1/(1-x),{x,0,3}]
 

相关文档
最新文档