Mathematica入门教程 Mathematica的基本语法特征 首先注意:在 Mathematica中大写小写是有区别的,如Name、name、NAME等是不同的 变量名或函数名。 系统所提供的功能大部分以系统函数的形式给出,内部函数一般写全称,而且一定是以 大写英文字母开头,如Sin[x], Conjugate[z]等。 乘法即可以用*,又可以用空格表示,如23=2*3=6,xy,2Sin[x等;乘幂可以用“ 表示,如x^0.5,Tan[x]y 自定义的变量可以取几乎任意的名称,长度不限,但不可以数字开头 当你赋予变量任何一个值,除非你明显地改变该值或使用 Clear[变量名]或“变量名=.”取 消该值为止,它将始终保持原值不变。 定要注意四种括号的用法:0圆括号表示项的结合顺序,如(x+(yx+1/(2x));[]方括号 表示函数,如Log[x], BesselJ[x,1]:{}大括号表示一个“表”(一组数字、任意表达式 函数等的集合),如{2x,Sin[12Pi],{1+A,y*x};[[]双方括号表示“表”或“表达式”的 下标,如a[[2,3]、{1,2,3)[[1]]=1。 Mathematica的语句书写十分方便,一个语句可以分为多行写,同一行可以写多个语句(但 要以分号间隔)。当语句以分号结束时,语句计算后不做输出(输出语句除外),否则将输出 计算的结果。 数的表示及计算 在 Mathemat ica中你不必考虑数的精确度,因为除非你指定输出精度, Mathematica总会 以绝对精确的形式输出结果。例如:你输入 In[1]:=378/123,系统会输出0ut[1]:=126/41,如果想得到近似解,则应输入 In[2]:=N[378/123,5],即求其5位有效数字的数值解,系统会输出Out[2]:=3.07 2,另外 Mathematica还可以根据你前面使用的数字的精度自动地设定精度 Mathematica与众不同之处还在于它可以处理任意大、任意小及任意位精度的数值,如 100^7000,2^(-2000)等数值可以很快地求出,但在其他语言或系统中这是不可想象的,你不 妨试一试N[Pi,1000。 Mathematica还定义了一些系统常数,如上面提到的Pi(圆周率的精确值),还有E(自然对 数的底数)、I(复数单位), Degree(角度一度,Pi/180), Infinity(无穷大)等,不要小看这 些简单的符号,它们包含的信息远远大于我们所熟知的它们的近似值,它们的精度也是无限
“表”及其用法 “表”是 Mathematica中一个相当有用的数据类型,它即可以作为数组,又可以作为矩 阵;除此以外,你可以把任意一组表达式用一个或一组仆括起来,进行运算、存储。可以说 表是任意对象的一个集合。它可以动态地分配内存,可以方便地进行插入、删除、排序、翻 转等等儿乎所有可以想象到的操作 如果你建立了一个表,你可以通过下表操作符[[]](双方括号)来访问它的每一个元素, 如我们定义 table={2,Pi,Sin[x],{aaa,A*I}为一个表,那么 table[1]]就为2, table[2]] 就是Pi,而 table[3,1]表示嵌套在 table中的子表{aa,A*I}的第一个元素即aa tabe[3,2]表示{a,A*I}第二个元素即A*I。总之,表每一层次上并列的部分用逗号分 割,表可以无穷嵌套。 你可以通过 Append表,表达式]或 Prepend[表,表达式]把表达式添加到表的最前面或最后 面,如 Append[{1,2,3},a表示{1,2,3,a}。你还可以通过 Union[表1,表2, Jion[表 ]来把几个表合并为一个表,二者不同在于 Union在合并时删除了各表中重复 的元素,而后者仅是简单的合并;你还可以使用 Flatten[表]把表中所有子表”抹平”合并成 一个表,而 Patition[表,整数n]把表按每n个元素分段作为子表,集合成的表。如 Flatten[(1, 2, Sin[x], dog), y)J] 表 (1,2,Sin[x],y}, Partition[{,2,Sin[x],y},2]把表每两个分段,结果为{1,2),{Sin[x],y};还可以通过 Delete[表,位置]、 Insert[表,位置]来向表中按位置插入或删除元素,如要删除上面提到 的 table中的a,你可以用 Delete[ table,{3,1}]来实现;Sort[表]给出了表中各元素的大 小顺序, Reverse[表]、 Rotateleft表,整数n]、 Rotateright[表,整数n可以分别将 个表进行翻转、左转η个元素、右转n个元素等操作, Length[表]给岀了表第一个层次上的 元素个数, Position[表,表达式]给出了表中出现该表达式的位置, Count[表,表达式]则 给出表达式出现的次数 三.图形函数 Mathematica的图形函数十分丰富,用寥寥儿句就可以画出复杂的图形,而且可以通过变量 和文件存储和显示图形,具有极大的灵活性 图形函数中最有代表性的函数为Plot[表达式,{变量,下限,上限},可选项],(其中 表达式还可以是一个"表达式表”,这样可以在一个图里画多个函数);变量为自变量;上限 和下限确定了作图的范围;可选项可要可不要,不写系统会按默认值作图,它表示对作图的 具体要求。例如Plot[Sin[x],{x,0,2*Pi}, AspectRatio-1]表示在0<x<2Pi的范围内作函数 Sin[x]的图象, AspectRatio为可选项,表示图的x向y向比例, AspectRatio-1表示纵横 比例为1:1,如果不写这一项,系统默认比例为1: Godenratio,即黄金分割的比例(注意,可 选项的写法为可选项名-可选项值),Plot还有很多可选项,如 Plotrange表示作图的值域, Plot point表画图中取样点的个数,越大则图越精细, Plotstyle来确定所画图形的线宽、 线型、颜色等特性, AxesLabel表式在坐标轴上作标记等等 二维函数作图
Plot[函数f,{x,xmin,xmax},选项] 在区间{x,xmin,xmax}上,按选项的要求画出函数f的图形 Plot[函数1,函数2},{x,xmin,xmax},选项] 在区间{x,xmin,xmax)上,按选项的要求画出几个函数的图形 图1.用Plot生成x*sin[1/x]的图形 二维参数画图函数 ParametricPlot[{x[t],y[t]},t,t0,t1},选项]画一个X轴,Y轴坐标为{x[t],y[t]},参 变量t在[t0,t1]中的参数曲线 图2.用 ParametricPlo生成{x=sin[t],y=sin[2t])的图形 三维函数作图 Plot3D[f[x,y],{x,x0,x1},{y,yo,y1},选项] 在区域x∈[x0,x]ye0,1]上,画出空间曲面f[x,y
图3.用P1ot3生成的sin(x+y)cos(x+y)三维图形 除Plot,二维参数方程作图的 ParametricPlot[{x(t),y(t)},{t,下限,上限},可选项]、三 维作图的Plot3D[二维函数表达式,{变量1,下限,上限},{变量2,下限,上限},可选项)]、 维参数方程作图的 ParametricPlot3D[{x(u,v),y(u,v),z(u,v)),{u,下限,上限},{v,下 限,上限},可选项外,还有画二维等高线图 Contourplot[二元表达式,{变量1,下限,上 下限,上限},可选项}]、画二维密度图的 Densityplot[二元表达式,{变量 1,下限,上限},{变量2,下限,上限},可选项]等等不一而足 除使用上述函数作图以外, Mathematica还可以象其他语言一样使用图形元语言作图, 如画点函数 Point[x,y],画线函数Line[x1,y1,x2,y2],画圆的 Circle[x,y,r],画矩形和多 边形的 Rectangle和 Polygon,字符输出的Text[字符串,输出坐标],还有颜色函数 RGBColor[red, green,blue]、Hue[], GrayLevel gray]来描述颜色的亮度、灰度、饱和度 用 Pointsize[相对尺度]、 Thickness[相对尺度]来表示点和线的宽度。总之 Mathematica 可以精确地调节图形的每一个特征。 四.数学函数的用法 Mathematica系统内核提供了丰富的数学计算的函数,包括极限、积分、微分、最值、极值、 统计、规划等数学的各个领域,复杂的数学问题简化为对函数的调用,极大地提高了解决问 题的效率。 Mathematica提供了所有的三角、反三角、双曲、反双曲、各种特殊函数(如贝塞尔函数 系、椭圆函数等),各种复数函数(如Im[乙],Rez], Con jugate [z],Abs[乙],Arg[z]),各种 随机函数(如 Random [n]可以通过不同的参数产生任意范围内整型、实型任意分布的随机 数),矩阵运算函数(如求特征值特征向量的 Eigen Vector[], Eigen value[],求逆的 Inverse Mathematica还提供了大量数学操作的函数,如取极限的 Limite[x],x,a}],求微分的 D[x],x],全微分的Dt[x],x],不定积分的 Integrate[f[x],x]和定积分的 Integrate[x],{x,a,b}],解任意方程的 Solve[lhs=rhs,x]及微分方程的 DSolve[lhs=rhs,x],解幂级数和付立叶展开的 Series[fx]], Fourier[fx]]及其逆变化
Inverseseries, Inverse Fourier,求和函数Sum[],求积函数 Product[],以上函数均可以适 用于多维函数或多维方程 Mathematica中还有相当数量的数值计算函数,最常用的是N[表达式,整数]可以求出表 达式精确到指定有效数字的数值解,还有如数值求积分的 INtegrate],求方程数值根的 NSolvel]和 NDSolve],最小、最大值的 NFindminimum和 NFindmaximum等等 Mathematica还有各种表达式操作的函数,如取分子、分母的 Numerator[exp Denormator Expr,取系数的 Coefficient expr,因式分解的 Factor Expr],以及展开的 Expand[expr]和 ExpandAll Expr],表达式化简的 Simplify Expr等。expr代表一个任意的 表达式 求极限 计算函数极限limf(x)的一般形式是 Limit expr,x->x0]x→x0时函数的极限 Limit expr,x->xoO, Direction->-1]x->x→x0-0时函数的极限 Limit [expr,x->x0, Direction->1]x->x→xn+0时函数的极限 In[]:= Limit[ SinI]/x,x→0 微商和微分 在 Mathematica中能方便地计算任何函数表达式的任意阶微商(导数).如果f是一元函 数,D[,x表示当(x):如果f是多元函数,Dr,x表示0(x),微商函数的常用形式如 下:D[f,x]计算偏导数() In[1]: =D Lx x, x Out[1] 下面列出全微分函数Dt的常用形式及其意义:
Dt[f]全微分 Dt[f,x]全导数 Dt[f,x1,x2,…]多重全导数 In[1]:=Dt[x^2+y2] 不定积分和定积分 1.不定积分 Integreate函数主要计算只含有1“简单函数”的被积函数.“简单函数”包括有理函数、 指数函数、对数函数和三角函数与反三角函数。不定积分一般形式如下 Integrate[f,x]计算不定积分 IntegrateR,x,y]计算不定积分 tegrate[f,.y,a计算不定积分∫4j中(,y,2 In[1]:= Integrate [1/(x"2-1), x] 1 Out[ll Log-1+x1-。og1+x In[2]:= Integrate [3x"2+r, x,gI 0ut[2]: 2.定积分 计算定积分的命令和计算不定积分是同一个 Integrate函数,在计算定积分时,除了要给出 变量外还要给出积分的上下限。当定积分算不出准确结果时,用N[‰命令总能得到其数值 解. Integrate也是计算定积分的函数,其使用方法和形式和 Integrate函数相同.用 Integrate函数计算定积分得到的是准确解, Integrate函数计算定积分得到的是近似数值 解.计算多重积分时,第一个自变量相应于最外层积分放在最后计算 Integrate[f,{x,a,b}]计算定积分(x)a
NIntegratelf,{x,a,b}]计算定积分 dx[ f(x, y)dy Integrate[f,{x,a,b},{y,c,d}]计算定积分 INtegrate[f,{x,a,b},y,c,d}]计算定积分 dx[f(x, y)dy In[1] rate[Cos lx]2+sinx]3 x,0 l1 7 3 Cos[1 83]sin[21 In[2 te[Cos [x]2+sin[x]3,x,0,1J 0ut[2]:=0.906265 = Integrate[x+y.fκ,b,a},{y.自,x}l 3a3b3 常微分方程 求解常微分方程和常微分方程组的函数的一般形式如下 Dsolve[eqns,yx],x]解y(x)的微分方程或方程组eqns,x为变量 Dsolve[eqns,y,x]在纯函数的形式下求解 NDsolve[eqns,y[x],x,{xmin,xmax}]在区间{xmin,xmax}上求解变量x的数的形式下求解常 微分方程和常微分方程组eqns的数值解 In[1 Iy【xl= aiXi,Ylx In[2]: Solve(r'IxIsarlxl rIo #1), lxi, xI
DSolvelix'ItI s ltl y axltI>, ixItI, ytIt In[3] [xiti+=e ( C[1]+e Cl1l-CI2]+e C121) ont3:0→2(c+]+C[2+q2