Mathematica语言Word格式文档下载.docx
《Mathematica语言Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Mathematica语言Word格式文档下载.docx(28页珍藏版)》请在冰点文库上搜索。
均匀分布随机数
Max[x,y,…],Min[x,y,…]
最大值,最小值
Sum[ai,{i,imin,imax}],
求和
Product[ai,{i,imin,imax}]
求积
Abs[z],Arg[z]
模,辐角
Re[z],Im[z]
实部,虚部
Conjugate[z]
共轭复数
注:
Mithematica提供的函数,其名称中的字母大小写是固定的(特别开头字母均为大写),不得误用;
函数的自变量以方括号[]括起来.
Mathemaica还提供了许多数学常数,下面列出了一些常数(均以大写字母开头).
Pi-------------------π;
E---------------------e
I----------------------
;
Infinity--------------∞
函数和常数均可参与运算,下面是一些运算的例子.
号.其规则如下:
x=value--------------------将value赋给x
x=.-----------------------清除赋给x的值
expr/.x->
value-------------用value替换expr中的x
expr/.{x->
xvalue,y->
yvalue}----------用xvalue,yvalue分别替换expr中的x,y.
例:
In[1]:
=t=l+x
Out[1]=1+x
In[2]:
=l-t^2
Out[2]=1-(1+x)2
In[3]:
=t=.
Out[3]=1-(1+x)2
In[4]:
=l-t^2
Out[4]=1-t2
In[5]:
=%2/.x->
2
Out[5]=-8
(2)代数式变换
Mathernatica提供了许多进行代数式变换的一些函数,下面列出常用的函数.
Expand[expr]-----------------------展开expr
ExpandAll[expr]--------------------展开expr的分子、分母
Factor[expr]-------------------------对expr进行因式分解
Together[expr]----------------------对expr进行通分
Apart[expr]---------------------将expr分解为简单分式
Cancel[expr]----------------------消去expr的分子、分母的公因式
Simplify[expr]--------------------把expr化为最少项形式
=t=(x-1)^2(2+x)/((1+x)(x-3)^2),
=Expand[t](展开分子,分母不变)
=ExpandAll[t](展开分子、分母)
=Together[%](通分)
=Apart[%](化为部分分式)
In[6]:
=Factor[%](分解因式)
In[7]:
=Simplify[%5](将表达式化简)
除了上述常用的变换外,Mathematica还可以进行许多种类型的变换.下面再看一些例子.
In[8]:
=Expand[2Cos[x]^3*Sin[2x]^2,Trig->
True](展开三角函数)
Out[8]:
=
In[9]:
=Factor[%,Trig->
True]
Out[9]=8Cos[x]5Sin[x]2
In[10]:
=ComplexExpand[Sin[x+y*I]](展开复函数)
Out[10]:
=Cosh[y]Sin[x]+ICos[x]Sin[y]
In[11]:
=s=Expand[(x+y)^3];
In[12]:
=Coefficient[s,x^2](取出s中x^2项的系数)
Out[12]=3y
In[13]:
=Numerator[%1](取出%1中的分子)
Out[13]=(-1+x)2(2+x)
In[14]:
=Denominator[%1](取出%1中的分母)
Out[14]=(-3+x)2(1+x)
Mathematica还允许用户自己定义变换规则,例如:
In[15]:
=mysin=Sin[2*x_]->
2Sin[x]Cos[x];
In[16]:
=Sin[2*(x+y)^2]/.mysin
Out[16]=2Cos[(x+y)2]Sin[(x+y)2]
总之Mathematica进行变换的功能是非常强的.
(3)解方程
Mathematica可以用多种方法求解符号方程.下面列出主要的解法:
Solve[equ,vars]-------------------求方程的一般解
Reduce[equ,vars]-----------------求方程的全部解
NSolve[equ,vars]----------------求方程的数值解
FindRoot[equ,{x,a}]--------------求方程在a附近的数值解
其中,equ是待求解的方程,var是未知量.
例In[1]:
=Solve[a*x+b==0,x]
方程中,等号必须用“==”
Out[1]={{x->
-b/a}}
In[2]:
=Reduce[a*x+b==0,x]
Out[2]=a==0&
&
b==0||x==-b/a&
a!
=0
使用Reduce给出了a!
=0时的解和a=0,b=0时的解,(此时x为任意值).
对四次及四次以下的代数方程,Mathematica总能给精确解.四次以上的方程,若能分解因式,亦可给出精确解.
=Solve[x^3+3x^2+3x+2==0,x]
Out[3]=
当求不出精确解时,Mathemaica以符号形式给出结果
=x^5+5x+1==0;
=Solve[%4,x]
Out[5]=
上述方程求不出精确解,此时可求数值解.
In[6]:
=NSolve[%4,x]
Out[6]=
如果要求在某点附近的数值解,使用FindRoot
=FindRoot[x*Sin[x]==1/2,{x,1}]
Out[7]={x->
0.740841}
使用Solve还可以求解方程组.
1n[8]:
=Solve[{x^2+y^2==1,x+y==a},{x,y}]
Out[8]=
三微积分
进行高等数学中的各种运算是Mathematica的主要功能.Mathematica可进行微积分、线性代数和工程数学中的许多运算.特别是其符号运算能力,令人惊叹.现在Mathematica已受到越来越多科技工作者的欢迎和使用。
1.极限、微分和积分
微积分等主要运算:
=D[Sin[x^2],x]
Out[1]=2xCos[x2]
=D[x^n,{x,3}]
Out[2]=
In[3]:
=D[y^3*Log[x+y],x,y]
Out[3]=
也可以求出抽象函数的导数
In[4]:
=D[x*f[x^5],x]
Out[4]=
求不定积分,对Mathematica而言易如反掌
In[5]:
=Integrate[1/(x^4-1),x]
Out[5]=
可以验证
In[6]:
=Simplify[D[%,x]]
求定积分
In[7]:
=Integrate[Log[x],{x,a,b}]
Out[7]=a-b-aLog[a]+bLog[b]
也可以通过File->
Palettes->
BasicCalculations输入
In[8]:
=
Out[8]=a-b-aLog[a]+bLog[b]
In[9]:
=Integrate[x*x+y*y,{x,0,1},{y,0,Sqrt[1-x*x]}]
Out[9]=
2.函数的幂级数展开
Mathematica作幂级数展开可达到任意精度。
进行幂级数展开,使用下述函数:
Series[expr,{x,x0,n}]-------------expr在x=x0点的n阶幂级数展开式
Normal[series]---------------------去掉展开式的余项
例
In[1]:
=Series[Log[1+x],{x,0,5}]
Out[1]=
In[2:
=Normal[%]
Out[2]=
抽象函数展开
=Series[f[x],{x,0,4}]
Out[3]=
3.微分方程
求解微分方程与代数方程类似,导数用单引号表示
DSolve[equ,y[x],x]----------------------解y[x]的微分方程
DSolve[equ,{x[t],y[t]},t]---------------解自变量为t的微分方程组
In[1]:
=DSolve[y’[x]==a*y[x],y[x],x]
Out[1]=
如给出初始条件,就明确了待定常数
=DSolve[{y’[x]==a*y[x],y[0]==2},y[x],x]
=DSolve[{y”[x]+y[x]==1,y[0]==2,y’[0]==5},y[x],x]
=DSolve[{y’[t]==x[t],x’[t]==y[t],x[0]==1,y[0]==2},{x[t],y[t]},t]
四线性代数
1.构造矩阵
{{a11,…,a1n},{a21,…,a2n},…,{am1,…,amn}}---------构造m×
n矩阵
Table[f[i,j],{i,m},{j,n}]--------------------------------构造m×
Array[f,{m,n}]---------------------以f[i,j]为元素,构造m×
DiagonalMatrix[{a1,a2,…,an}]---------------------构造n阶对角矩阵
IdentityMatrix[n]-----------------------------------构造n阶单位矩阵
Table[If[i>
=j,f[i,j],0],{i,m},{j,n}]-------------------构造下三角矩阵
m[[i,j]]---------------------------------------------取矩阵m的元素m(i,j)
m[[i]]---------------------------------------------取矩阵m的第i行
Transpose[m][[k]]------------------------------取矩阵m的第k列
={{a,b},{c,d}}
Out[1]={{a,b},{c,d}}
如果希望得到矩阵形式,可使用函数MatrixForm
=MatrixForm[%]
Out[2]=//MatrixForm=
=Table[3*(i-1)+j,{i,3},{j,3}]
Out[3]={{1,2,3},{4,5,6},{7,8,9}}
=MatrixForm[DiagonalMatrix[{a,b,c}]]
Out[4]=//MatrixForm=
=p=Array[a,{2,3}]
取出第2行
=p[[2]]
Out[6]={a[2,1],a[2,2],a[2,3]}
取出第3列
=Transpose[p][[3]]
Out[7]={a[1,3],a[2,3]}
2.矩阵运算
Mathematica可进行矩阵的各种运算,如矩阵求逆、矩阵的转置、矩阵与向量的乘法等.下面列出主要的运算.记k为常数,u,v为向量,A,B为矩阵
k*A------------------------常数乘矩阵
k+u-----------------------向量u的每一个元素加上k
u+v----------------------向量的对应元素相加
u.v-----------------------向量的内积
u*v-----------------------向量的对应元素相乘
A.u---------------------矩阵乘向量
u.A-----------------------向量乘矩阵
A.B--------------------------矩阵乘矩阵
MatrixPower[A,n]---------------矩阵乘幂
Transpose[A]-----------------求矩阵A的转置阵
Inverse[A]--------------------求矩阵A的逆矩阵
Det[A]-------------------------求矩阵A的行列式
Eigenvalues[A]-----------------求数字阵A的特征值
Eigentvectors[A]---------------求数字阵A的特征向量
LinearSolve[A,v]---------------求解线性方程组Ax=v
Chop[%n]-------------------舍去第n个输出中无实际意义小量
矩阵可以左乘以向量或右乘以向量,Mathematica也不区分“行”,或“列”向量,自动进行可能的运算.
例:
=A={{a,b},{c,d}};
v={x,y};
=A.v(A左乘以v)
Out[2]={ax+by,cx+dy}
=v.A(A右乘以v)
Out[3]={ax+cy,bx+dy}
=Inverse[A]
如果矩阵的元素是近似数,则求出的逆矩阵也是近似的。
=B={{1.2,5.7},{4.2,5.6}};
Inverse[B]
Out[5]=
=%.B
结果与单位矩阵有微小误差,用函数Chop消去无实际意义小量
=Chop[%]
Out[7]={{1.,0},{0,1.}}
前面已介绍了用Solve解线性方程组,但对于矩阵形式Ax=v的线性方程组,用
LinearSolve[A,v]更方便.
=M={{2,1},{1,4}};
LinearSolve[M,{a,b}]
Out[8]=
五数据拟合与优化
1.数据拟合
Fit[data,funs,vars]--------用变量为vars,函数为funs,按最小二乘法拟合一组数据data
InterpolatingPolynomial[{{x1,f1},{x2,f2},…,},x]-----------------多项式插值
=d1=Table[Exp[-x/2.],{x,8}](生成一个数据表)
=Fit[d1,{1,x,x^2,x^3},x](用三次多项式拟合)
=Fit[d1,{Sin[x],Exp[-x/2]},x](用三角函数与指数函数拟合)
=d2=Flatten[Table[{x,y,1-2x+x*y+y^2},{x,2,5},{y,10,15}],1](生成一个二元数据表,即一串三维点)
=Fit[d2,{1,x,y,x*y,y^2},{x,y}](二元函数拟合)
Out[7]=
=d5={{0,2.5},{0.5,2.1},{1.,2.8},{1.5,3.2}};
InterpolatingPolynomial[d5,x]
Out[8]=
2.优化
FindMinimum[f,{x,x0}]----------------------------从x=x0始,求一元函数f的局部极小值
FindMinimum[f,{x,{x0,x1}}-----------------------从x0,x1始,求一元函数f的局部极小值
FindMinimum[f,{x,x0},{y,y0},…]----从点(x0,y0,…)始,求多元函数f的局部极小值
ConstrainedMin[f,{inequalities},{x,y,…}],求线性不等式约束下的f最小值,假定变量非负
ConstrainedMax[f,{inequalities},{x,y,…}],求线性不等式约束下的f最大值,假定变量非负
LinearProgramming[c,A,b]-------------求解线性规划min{cx|Ax>
=b,x>
=0}
=FindMinimum[x^4+3x^2*y+5y^2+x+y,{x,0.1},{y,0.2}]
=ConstrainedMax[17x-20y+18z,{x-y+z<
=15,x<
5,x+y<
10},{x,y,z}]
Out[3]={6,4}
六绘图与声音
1.平面图形
Plot[f,{x,xmin,xmax}]------------------画一元函数在范围[xmin,xmax]的图形
Plot[{f,g,…}{x,xmin,xmax}]------------画多个一元函数在范围[xmin,xmax]的图形
ListPlot[{y1,y2,y3,…}]------------画数据表{y1,y2,y3,…}的散点图,自变量为1,2,3…
ListPlot[{{x1,y1},{x2,y2},…}]----------------画数据表{{x1,y1},{x2,y2},…}的散点图
ParametricPlot[{fx,fy},{t,min,max}]--------------------------画参数方程的图
ParametricPlot[{{fx,fy},{gx,gy}},{t,min,max}]-------------画多个参数方程的图
Show[p1,p2,p3]-----------------------把图形p1,p2,p3重叠在一起
ContourPlot[f,{x,xmin,xmax},{y,ymin,ymax}]---------------画f(x,y)的等高线图
ListContourPlot[array]---------------------------------画三元数组的等高线图
例绘散点图
=ListPlot[{{2,5},{5,8},{7,8},{9,7}},PlotStyle{PointSize[0.04],RGBColor[0,0,1]}]
例绘散点连线图(同图多线)
data1={{1.2,3.5},{1.6,4.6},{2.5,6.9},{3.5,7.8}};
pd1=ListPlot[data1,PlotStyle->
{PointSize[0.02],RGBColor[0,0,1]},DisplayFunctionIdentity];
pt1=ListPlot[data1,PlotJoined->
True,PlotStyle->
{RGBColor[0,0,1]},DisplayFunctionIdentity];
data2={{1.2,5.8},{1.8,5.6},{2.7,7.9},{3.8,8},{4.5,4}};
pd2=ListPlot[data2,PlotStyle->
{PointSize[0.02],RGBColor[0,1,0.5]},DisplayFunctionIdentity];
pt2=ListPlot[data2,PlotJoined->
{RGBColor[0,1,0.5]},DisplayFunctionIdentity];
Show[pd1,pt1,pd2,pt2,DisplayFunction$DisplayFunction]
=p1=Plot[{Sin[2x],Cos[3x]},{x,0,Pi},PlotStyleRGBColor[1,0,0]]
=p2=ParametricPlot[{Cos[t]^3,Sin[t]^3},{t,0,2Pi}]
=Show[p1,p2]
=ListContourPlot[{{22,33,55},{32,42,23},{34,44,52},{43,52,45}}]
2.立体图形
ListPlot3D[Array]-------------------------------画三元数组散点图
Plot3D[f,{x,xmin,xmax},{y,ymin,ymax}]----------画二元函数曲面图
ParametricPlot3D[{fx,fy,fz},{t,min,max}]----------画参数方程表示的空间曲线
ParametricPlot3D[{fx,fy,fz},{t,t1,t2},{u,u1,u2}]---画参数方程表示的曲面图
=da={{3,4,2},{5,6,8},{7,9,4}};
ListPlot3D[da]
=Plot3D[Exp[-(x^2+y^2)],{x,-2,2},{y,-2,2},Axes->
Fals