Mathematica 中的常用函数
如果你是第一次使用Mathematica,那么以下几点请你一定牢牢记住:
1. Mathematica 区分大小写,如 Name、name是不同的变量名或函数名。
2. 系统所提供的功能大部分以系统函数的形式给出,内部函数一般写全称,
且以大写英文字母开头,如 Sin[x],Conjugate[z]等;
有时一个函数名是由几个单词构成,则每个单词的首写字母也必须大写,
如:求局部极小值函数 FindMinimum[f[x],{x,x0]等
3. 乘法即可以用“*”,也可以用空格表示,如 2 3=2*3=6 等;
乘幂可以用“^”表示,如 x^0.5, Tan[x]^y 等
4. 自定义的变量可以取几乎任意的名称,但为了不与系统函数产生混淆,
我们自定义的变量应该是以小写字母开始,后跟数字和字母的组合,
长度不限,不可以数字开头。
5. 给变量赋值后,除非明显地改变该值或使用Clear[变量名]或“变量名=.”取消该值,
否则它将始终保持原值不变。
6. 一定要注意四种括号的用法:
() 圆括号表示项的结合顺序,如(x+(y^x+1/(2x)));
[] 方括号表示函数,如Log[x],BesselJ[x,1];
{} 大括号表示一个“表”(一组数字、任意表达式、函数等的集合),
如 {2x,Sin[2 Pi],{1+A,y*x}};
[[]] 双方括号表示“表”或“表达式”的下标,如a[[2,3]]、{1,2,3}[[1]]=1。
7. Mathematica的语句书写十分方便:
一个语句可以分为多行写,同一行可以写多个语句(但要以分号间隔)。
当语句以分号结束时,不做输出(输出语句除外),否则将输出计算结果。常用函数
1.运算符及特殊符号
Linel 执行Line,不显示结果
Linel,line2 顺次执行Line1,Line2,并显示结果
?name 关于系统变量name的信息
??name 关于系统变量name的全部信息
!command 执行Dos命令
N! N的阶乘
!!filename 显示文件内容
<>filename 打开文件写
Expr>>>filename 打开文件从文件末写
() 结合率
[] 函数
{} 一个表
<*MathFun*> 在c语言中使用math的函数
(*Note*) 程序的注释
#n 第n个参数
## 所有参数
Rule& 把role作用于后面的式子
% 前一次的输出
%% 倒数第二次的输出
%%%(k) 倒数第k次的计算结果
%n 例出行Out[n])的结果(用时要小心)
Var::mote 变量var的注释
"Astring" 字符串
Context 上下文
A+b, a-b, A*b或a b, A/b 加减乘除2.系统常量
Pi 3.1415的无限精度数值
E 2.17828的无限精度数值
Catalan 0.915966 Catalan常数
EulerGamma 0.5772 Euler常数
Khinchin 2.68545 Khinchin
Glaisher 0.915966 Glaisher
GoldenRatio 1.61803黄金分割数
Degree Pi/l80角度弧度换算
I 复数单位
Infinity 无穷大
-Infinity 负无穷大
Complexlnfinity 复无穷大
Indeterminate 不定式3.代数计算
Expand[expr] 展开表达式
Factor[expr] 对表达式进行因式分解
Simplify[expr] 化简表达式
FullSimplify[expr] 将特殊函数也进行化简
PowerExpand[expr] 展开所有的幂次形式
ComplexExpand[expr,{x1,x2,...)] 按复数实部虚部展开
FunctionExpand[expr] 化简表达式中的特殊函数
Collect[expr,x] 合并同次项
Collect[expr,{x1,x2,...)] 合并x1,x2,...的同次项
Together[expr] 通分
Apart[expr] 部分分式展开
Apart[expr,var) 对var的部分分式展开
Cancel[expr] 约分
xpandAll[expr] 展开表达式
ExpandAll[expr,patt] 展开表达式
FactorTermsrpoly] 提出共有的数字因子
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的分子部分4. 解方程
Solve[eqns,vats] 从方程组eqns中解出Vats
Solve[eqns,vats,elims] 从方程组eqns中削去变量elims,解出vats
DSolve[eqn,y,x] 解微分方程,其中、y是x的函数
DSolve[{eqnl,eqn2,...},{y1,y2,...}] 解微分方程组,其中yi是x的函数
DSolve[eqn,y,{x1,x2,...}] 解偏微分方程
Eliminate[eqns,Vats] 把方程组eqns中变量vars约去
SolveAlways[eqns,vars] 给出等式成立的所有参数满足的条件
Reduce[eqns,Vats] 化简并给出所有可能解的条件
LogicalExpand[expr] 用&&和,将逻辑表达式展开
InverseFunction[f] 求函数f的反函数
Root[f,k] 求多项式函数的第k个根
Roots[1hs==rhs,var] 得到多项式方程的所有根5. 微积分
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,xO,nx},{y,y0,ny}] 先对y幂级数展开,再对x幂级数展开
Normal[expr] 化简并给出最常见的表达式
SeriesCoefficient[series,n] 给出级数中第n次项的系数
SeriesCoefficient[series,{n1,n2,...}] 一阶导数
InverseSeries[s,x] 给出逆函数的级数
ComposeSeries[seriel,serie2,...] 给出两个基数的组合
SeriesData[x,x0,{a0,a1,..},nmin,nmax,den] 表示一个x0处x的幂级数
O[x]^n n阶小量x^n6. 多项式函数
Variables[poly] 给出多项式poly中独立变量的列表
CoefficientList[poly,var] 给出多项式poly中变量var的系数
CoefficientList[poly,{varl,var2,...)) 给出多项式poly中变量var(i)的系数列
PolynomialMod[poly,m] poly中各系数mod m同余后得到的多项式,m可为整式
PolynomialQuotient[p,q,x] 以x为自变量的两个多项式之商式p/q
PolynomialRemainder[p,q,x] 以x为自变量的两个多项式之余式
Po1ynomialGCD[polyl,poly2,...] poly(i)的最大公因式
PolynomialLCM[polyl,poly2....] poly(i)的最小公倍式
PolynomialReduce[poly,{polyl,Poly2,...},{xl,x2,...}]
得到一个表 I(a1,a2,...),b) 其中 Sum[ai*polyi]+b=poly
Resultant[polyl,poly2,var] 约去polyl,poly2中的var
Factor[poly] 因式分解(在整式范围内)
FactorTerms[poly] 提出poly中的数字公因子
FactorTerms[poly,{x1,x2,...)] 提出poly中与xi无关项的数字公因子
FactorList[poly],
FactorSquareFreeList[p01y],
FactorTermsList[poly,{x1,x2,...}] 给出各个因式列表
Cyclotomic[n,x] n阶柱函数
Decomposet[poly,x] 迭代分解,给出{p1,p2,...),其中P1(p2(...))=poly
InterpolafinSPolynomial[data,Var] 在数据data上的插值多项式
RootSum[f,form] 得到f[x]=0的所有根,并求得Sum[form[xi]]7. 随机函数
Random[type,range] 产生type类型且在range范围内的均匀分布随机数
Random[] 0-1上的随机实数
SeedRandom[n] 以n为seed产生伪随机数
Randomldistribution] 可以产生各种分布8. 数值函数
N[expr] 表达式的机器精度近似值
N[expr,n] 表达式的n位近似值,n为任意正整数
NSolve[lhs==rhs,val] 求方程数值解
NSolvel[eqn,Var,n] 求方程数值解,结果精度到n位
NDSolve[eqns,y,{x,xmirl,xmax}] 微分方程数值解
NDSolve[eqns,{y1,y2,...},{x,xmin,xmax}] 微分方程组数值解
FindRoot[1hs==rhs,{x,x0)1 以x0为初值,寻找方程数值解
FindRoot[1hs=--rhs,{x,xstart,xmin,xmax}]
以xstart为初值,在[xmin,xmax]范围内寻找方程数值解
NSum[f,{imin,imax,di}] 数值求和,出为步长
NSum[f,{imin,imax,di},{j,..},..] 多维函数求和
NProduct[f,{i,imin,imax,di}] 函数求积
NIntegrate[f,{x,xmin,xmax}] 函数数值积分
FindMinimum[f,{x,xO}] 以x0为初值,寻找函数最小值
FindMinimum[f,{x,xstart,xmin,xmax}]
以xstart为初值,在[xmin,xmax]范围内寻找方程解
ConstrainedMin[f,{inequ},{x,y,...}] inequ 为线性不等式组,
f 为x,y,...之线性函数,得到最小值及此时的x,y,...取值
ConstrainedMax[f,{inequ),{x,y,...}] 得到最大值及此时的x,y,...取值
LinearProgramming[C,m,b]
解线性组合c.x在m.x>=b&&x>=0约束下的最小值,x,b,c为向量,m为矩阵
LatticeReduce[{v1,v2...}] 向量组Vi的极小无关组
Fit[data,funs,vats] 用指定函数组对数据进行最小二乘拟合
Interpolation[data] 对数据进行插值
Lisfinterpolation[array] 对离散数据插值,array可为n维
ListInterpolafion[array,{{xmin,xmax},{min,ymax},..}]
在特定网格上进行插值
FunctionInterpolation[expr,{x,xmin,xmax},{y,ymin,ymax},..]
以对应expr[xi,yi]的数值为数据进行插值
Fourier[list] 对复数数据进行傅氏变换
InverseFourier[list] 对复数数据进行傅氏逆变换9. 表的操作
制表函数
{e1,e2,...} 一个表,元素可以为任意表达式,无穷嵌套
Table[expr,{imax}] 生成一个表,共imax个元素
Table[expr,{i,imax}} 生成一个表,共imax个元素expr间
Table(expr,{i,imin,imax},{j,jmin,jmax},..] 多维表
Range[imax] 简单数表{1,2,..., imax}
Range[imin,imax,di] 以di为步长的数表
Array[f,n] 一维表,元素为fI¨(i从1到n)
Array[f,{n1,n2..}] 多维表,元素为玎i小.1 (各自从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[USt,crit] 把crit作用到每一个list的元素上,为True的所有元素组成的表
Length[expr] expr第一层元素的个数
Dimensions[expr] 表的维数返回{n1,n2..},expr为一个nl*n2...的阵
TensorRank[expr] 秩
Depth[expr] expr最大深度
Level[expr,n] 给出expr中第n层子表达式的列表
Count[USt,paUem] 满足模式的list中元素的个数
MembefQ[1ist,form] list中是否有匹配form的元素
FreeQ[expr,form] MemberQ的反函数
FreeQ[expr,form] 表中匹配模式pattern的元素的位置列表
Cases[{e1,e2,...},pattem] 匹配模式pattem的所有元素ei的表
表的操作
Append[exp,elem] 返回在表expr的最后追加elem元素后的表
Prepend[expr,elem] 返回在表expr的最前添加elem元素后的表
Insert[1ist,elem,n] 在第n元素前插入elem
lnsert[expr,elem,{i,j,...}] 在元素expr[[{i,j,..}]]前插入elem
Delete[expr,{i,j,..}] 删除元素expr[[{i,j,..}]]后剩下的表
DeleteCases[expr,pattem] 删除匹配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[1ist,n] 抹平到第n层
Split[1ist] 把相同的元素组成一个子表,再合成的大表10. 绘图函数
二维绘图
Plot[f,{x,xmin,xmax}] 一维函数f[x]在区间[xmin,xmax]上的函数曲线
Plot[{fl,f2..},{x,xmin,xmax}] 在同一图形上画几条曲线
ListPlot[{y1,y2,..}] 绘出由离散点对(n,yn)组成的图
ListPlot[{{x1,y1},{x2,y2},}} 绘出由离散点对(xrl,yrl)组成的图
ParametricPlot[{fx,fy},{t,tmin,tmax}] 由参数方程在参数变化范围内产生的曲线
ParametricPlot[{fx,fy},{gx,gy},...],{t,tmin,truax}]
二维设置
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}] 三维参数图形
ContourPlot[f,{x,xmin,xmax},{y,ymin,ymax}] 二维函数f[x,y]在指定区间上的等高线图
ListContourPlot[array] 二维函数fix,yJ在指定区间上的等高线图
三维设置
Contours->n 画n条等高线
Contours->{z1,z2,...} 在zi处画等高线
ContourShading->False 是否用深浅染色
ContourLines->True 是否画等高线
ContourStyle->{{stylel},{style2},..} 等高线线性颜色等属性
密度图
DensityPlot[f,{x,xmin,xmax},{y,ymin,ymax)] 二维函数f[x,y]在指定区间上的密度图
ListDensityPlot[array] 二维函数f[x,y]在指定区间上的密度图
图形显示
Show[graphics,options] 显示一组图形对象,options为选项设置
Show[g1,g2,...] 在一个图上叠加显示一组图形对象
GraphicsArray[{g1,g2,...}] 在一个图上分块显示一组图形对象
SelectionAnimate[notebook,t] 把选中的notebook中的图画循环放映
图元函数
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,2},在指定位置画点
Line[{p1,p2,..}] 经由Pi点连线
Rectangle[{xmin,ymin),{xmax,ymax}] 画矩形
Cuboid[{xmin,ymin,zmin},{xmaxffmax,zmax}] 由对角线指定的长方体
Polygon[{p1,p2,...}] 封闭多边形
Circle[{x,y},r] 画圆
Circle[{x,y},{rx,ry}] 画椭圆,rx,ry为半长短轴
Circle[{x,y},r,{a1,a2}] 从角度al-a2的圆弧
Disk[{x,y},r] 填充的园、椭圆、圆弧等参数同上
Raster[array,ColorFunction->f] 颜色栅格
Text[expr,coords] 在坐标coords上输出表达式
PostScrip["string"] 直接用Postscript图元语言写
Scaled[{x,y,...}] 返回点的坐标,且均大于0小于1
着色及其他
GrayLevel[level] 灰度level为0~1间的实数
RGBColor[red,green,blue] RGB颜色,均为0~I间的实数
Hue[h,s,b] 亮度,饱和度等,均为0~1间的实数
CMYKColor[cyan,magenta,yellow,block] CMYK颜色
Thicknessr[r] 设置线宽为r
PointSize[d] 设置绘点的大小
Dashing[{r1,r2,...}] 画一个单元的间隔长度的虚线
ImageSize->{x,y} 显示图形大小(单位为像素)11. 流程控制
If[condition,t,f] 如果condition为True,执行t,否则执行f段
if[condition,t,f,u]
如果condition为Ture,执行t,为False执行f,既非True 又非False,则执行u
Which[test1,blockl,test2,block2,...] 执行第一为True的tesfi对应的blocki
Switch[expr,forml,blockl,form2,block2,...] 重复执行expr imax次
Do[expr,{imax}] 重复执行expr imax次
Do[expr,{i,imin,imax},{j,jmin,jmax}] 多重循环
While[test,body] 循环执行body直到test为False
For[start,test,incr,body] 循环执行body直到test为False
Throw[value] 停止计算,把value返回给最近一个Catch处理
Throw[value,tag] 停止计算,把value返回给最近一个Catch处理
Catch[expr] 计算expr,遇到Throw返回的值则停止
Catch[expr,form] 当Throw[value,tag]中Tag匹配form时停止
Return[expr] 从函数返回,返回值为expr
Return[] 返回值Null
Breakl[] 结束最近的一重循环
Continuel[] 停止本次循环,进行下一次循环
Goto[tag] 无条件转向Label[Tag]处
Label[tag] 设置一个断点
Check[expr,fmlexpr] 计算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[exprl,expr2,...] 顺次输出expri的值
Input[] 产生一个输入对话框,返回所输入的任意表达式
Input["prompt"] 同上,prompt为对话框的提示
Pause[n] 运行暂停n秒