一、运算符及特殊符号
- Line1; 执行Line,不显示结果
- Line1,line2 顺次执行Line1,2,并显示结果
- ?name 关于系统变量name的信息
- ??name 关于系统变量name的全部信息
- !command 执行Dos命令
- n! N的阶乘
- !!filename 显示文件内容
- <<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的任意多个任意表达式(形式变量)
复制代码
[ 本帖最后由 suffer 于 2007-6-15 09:23 编辑 ]
二、系统常数- 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]
复制代码
[ 本帖最后由 suffer 于 2007-6-15 09:34 编辑 ]
四、解方程
- 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
复制代码
[ 本帖最后由 suffer 于 2007-6-15 09:24 编辑 ]
六、多项式函数
- Variables[poly] 给出多项式poly中独立变量的列表
- CoefficientList[poly, var] 给出多项式poly中变量var的系数
- CoefficientList[poly, {var1,var2...}]给出多项式poly中变量var(i)的系数列表
- PolynomialMod[poly, m] poly中各系数mod m同余后得到的多项式,m可为整式
- PolynomialQuotient[p, q, x] 以x为自变量的两个多项式之商式p/q
- PolynomialRemainder[p, q, x] 以x为自变量的两个多项式之余式
- PolynomialGCD[poly1,poly2,...] poly(i)的最大公因式
- PolynomialLCM[poly1,poly2,...] poly(i)的最小公倍式
- PolynomialReduce[poly, {poly1,poly2,...},{x1,x2...}] 得到一个表{{a1,a2,...},b}其中Sum[ai*polyi]+b=poly
- Resultant[poly1,poly2,var] 约去poly1,poly2中的var
- Factor[poly] 因式分解(在整式范围内)
- FactorTerms[poly] 提出poly中的数字公因子
- FactorTerms[poly, {x1,x2...}] 提出poly中与xi无关项的数字公因子
- FactorList[poly] 给出poly各个因子及其指数{{poly1,exp1},{...}...}
- FactorSquareFreeList[poly]
- FactorTermsList[poly,{x1,x2...}] 给出各个因式列表,第一项是数字公因子,
- 第二项是与xi无关的因式,其后是与xi有关的因式按升幂的排列
- Cyclotomic[n, x] n阶柱函数
- Decompose[poly, x] 迭代分解,给出{p1,p2,...},其中p1(p2(...))=poly
- InterpolatingPolynomial[data, var] 在数据data上的插值多项式
- data可以写为{f1,f2..}相当于{{x1=1,y1=f1}..}
- data可以写为{{x1,f1,df11,df12,..},{x2,f2,df21..}
- 可以指定数据点上的n阶导数值
- RootSum[f, form] 得到f[x]=0的所有根,并求得Sum[form[xi]]
复制代码
七、随机函数
- Random[type,range] 产生type类型且在range范围内的均匀分布随机数
- type可以为Integer,Real,Complex,不写默认为Real
- range为{min,max},不写默认为{0,1}
- Random[] 0~1上的随机实数
- SeedRandom[n] 以n为seed产生伪随机数
- 如果采用了 <<Statistics`ContinuousDistributions`后
- 在2.0版本为 <<"D:\\Math\\PACKAGES\\STATISTI\\Continuo.m"
- Random[distribution]可以产生各种分布如
- Random[BetaDistribution[alpha, beta]]
- Random[NormalDistribution[miu,sigma]]等
- 常用的分布如
- BetaDistribution,CauchyDistribution,ChiDistribution,
- NoncentralChiSquareDistribution,ExponentialDistribution,
- ExtremeValueDistribution,NoncentralFRatioDistribution,
- GammaDistribution,HalfNormalDistribution, LaplaceDistribution,
- LogNormalDistribution,LogisticDistribution,
- RayleighDistribution,NoncentralStudentTDistribution,
- UniformDistribution, WeibullDistribution
复制代码
[ 本帖最后由 suffer 于 2007-6-15 09:25 编辑 ]
八、数值函数
- 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的差集
复制代码
[ 本帖最后由 suffer 于 2007-6-15 09:26 编辑 ]
九、虚数函数
- 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
- 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 矩阵的转置
- 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分解
复制代码
[ 本帖最后由 suffer 于 2007-6-15 09:29 编辑 ]
十三、表函数- (*“表”,我认为是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];
复制代码
[ 本帖最后由 suffer 于 2007-6-15 09:34 编辑 ]
十四、绘图函数
二维作图
- 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 曲线、曲面最大弯曲度
复制代码
[ 本帖最后由 suffer 于 2007-6-15 09:32 编辑 ]
十四、绘图函数(续)
图元函数
- 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度显示
复制代码
[ 本帖最后由 suffer 于 2007-6-15 09:32 编辑 ]
十五、流程控制
分支
- If[condition, t, f] 如果condition为True,执行t段,否则f段
- If[condition, t, f, u] 同上,即非True又非False,则执行u段
- Which[test1,block1,test2,block2..] 执行第一为True的testi对应的blocki
- tch[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,注意","与";"的用法相反
- example: 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的值 example: Print[ "X=" , X//N , " " ,f[x+1]];
- Input[ ] 产生一个输入对话框,返回所输入任意表达式
- Input["prompt"] 同上,prompt为对话框的提示
- Pause[n] 运行暂停n秒
复制代码
[ 本帖最后由 suffer 于 2007-6-15 09:34 编辑 ]
十六、函数编程
- (*函数编程是Mathematica中很有特色也是最灵活的一部分,它充分体现了 *)
- (*Mathematica的“一切都是表达式”的特点,如果你想使你的Mathematica程 *)
- (*序快于高级语言,建议你把本部分搞通*)
复制代码
纯函数
- Function[body]或body& 一个纯函数,建立了一组对应法则,作用到后面的表
- 达式上
- Function[x, body] 单自变量纯函数
- Function[{x1,x2,...},body]多自变量纯函数
- #,#n 纯函数的第一、第n个自变量
- ## 纯函数的所有自变量的序列
- example: #1^#2& [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,...}]综合各个规则,产生一组优化的规则组
复制代码
[ 本帖最后由 suffer 于 2007-6-15 09:36 编辑 ]
十八、查询函数
- (*查询函数一般是检验表达式是否满足某些特殊形式,并返回True或False*)
- (*可以在Mathematica中用“?*Q”查询到 *)
- ArgumentCountQ MatrixQ
- AtomQ MemberQ
- DigitQ NameQ
- EllipticNomeQ NumberQ
- EvenQ NumericQ
- ExactNumberQ OddQ
- FreeQ OptionQ
- HypergeometricPFQ OrderedQ
- InexactNumberQ PartitionsQ
- IntegerQ PolynomialQ
- IntervalMemberQ PrimeQ
- InverseEllipticNomeQ SameQ
- LegendreQ StringMatchQ
- LetterQ StringQ
- LinkConnectedQ SyntaxQ
- LinkReadyQ TrueQ
- ListQ UnsameQ
- LowerCaseQ UpperCaseQ
- MachineNumberQ ValueQ
- MatchLocalNameQ VectorQ
- MatchQ
复制代码
十九、字符串函数
- "text" 一个串,头为_String
- "s1"<>"s2"<>..或StringJoin["s1","s2",..] 串的连接
- StringLength["string"] 串长度
- StringReverse["string"] 串反转
- StringTake["string", n] 取串的前n个字符的子串,参数同Take[]
- StringDrop["string", n] 参见Drop,串也就是一个表
- StringInsert["string","snew",n] 插入,参见Insert[]
- StringPosition["string", "sub"] 返回子串sub在string中起止字母位置
- StringReplace["string",{"s1"->"p1",..}] 子串替换
- StringReplacePart["string", "snew", {m, n}]
- 把string第m~n个字母之间的替换为snew
- StringToStream["string"] 把串当作一个输入流赋予一个变量
- Characters["string"] 把串"string"分解为每一个字符的表
- ToCharacterCode["string"] 把串"string"分解为每一个字符ASCII值的表
- FromCharacterCode[n] ToCharacterCode的逆函数
- FromCharacterCode[{n1,n2,..}]ToCharacterCode的逆函数
- ToUpperCase[string] 把串的大写形式
- ToLowerCase[string] 把串的小写形式
- CharacterRange["c1","c2"] 给出ASCII吗在c1到c2之间的字符列表
- ToString[expr] 把表达式变为串的形式
- ToExpression[input] 把一个串变为表达式
- Names["string"] 与?string同,返回与string同名的变量列表
复制代码
[ 本帖最后由 suffer 于 2007-6-15 09:37 编辑 ] |