Mathematica语言.docx

上传人:b****5 文档编号:28617018 上传时间:2023-07-19 格式:DOCX 页数:26 大小:208.45KB
下载 相关 举报
Mathematica语言.docx_第1页
第1页 / 共26页
Mathematica语言.docx_第2页
第2页 / 共26页
Mathematica语言.docx_第3页
第3页 / 共26页
Mathematica语言.docx_第4页
第4页 / 共26页
Mathematica语言.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

Mathematica语言.docx

《Mathematica语言.docx》由会员分享,可在线阅读,更多相关《Mathematica语言.docx(26页珍藏版)》请在冰豆网上搜索。

Mathematica语言.docx

Mathematica语言

附录Mathematica软件简介

Mathematica是一个功能强大的数学软件.它集数值计算、符号运算,绘图功能于一身,堪称众多数学软件中的佼佼者.加之其语法规则简单,操作使用方便,深受广大科技工作者的喜爱,得到广泛的使用.

数学函数和常数

Mathematica提供了大量的数学函数,给运算带来很大方便.

下面列出一些常用的函数.

函数形式

功能

Sqrt[x]

平方根

Exp[x]

指数函数ex

Log[x],Log[b,x]

对数函数Lnx,Logbx

Sin[x],Cos[x],Tan[x]

三角函数

ArcSin[x],ArcCos[x],ArcTan[x]

反三角函数

Sinh[x],Cosh[x],Tanh[x]

双曲函数

n!

n!

!

阶乘,双阶乘

Binomial[n,m]

组合数Cnm

Abs[x]

绝对值

Sign[x]

符号

Round[x]

四舍五入取整

Floor[x]

取不超过x的最大整数

Mod[n,m]

n/m的余数

Random[],Random[Integer,{m,n}],Random[Real,{a,b}],

均匀分布随机数

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--------------∞

函数和常数均可参与运算,下面是一些运算的例子.

In[l]:

=Pi^2

Out[1]=π2

In[2]:

=N[Pi,11]

Out[2]=3.1415626535

In[3]:

=Log[E^8]

Out[3]=8

In[4]:

=Sin[Sqrt[%1]/6]

Out[4]=1/2

用户不仅可以使用Mathemaica提供的函数和常数,还可以自定义函数和常数.方法如下:

形式功能

f[x_]:

=expr-------------定义函数f

f[x_,y_]:

=expr-----------定义多变量的函数f

f------------------------显示函数的定义

Clear[f]-----------------清除f的定义

x=value-------------给变量x赋值

x=.清除变量x的值

注:

定义函数时,在等式左端的方括号中的变量必须跟随下到线符号“_”;定义的函数或变量的名称不要使用大写字母开头,以免和Mathemaica的函数或常数混淆.

例:

In[1]:

=f[x_]:

=x^5;f[x_,y_]:

=Sqrt[x^2+y^2];z=3;

其中输入语句后的分号“;”表示不显示输出结果,定义了函数、变量以后,便可以在运算中使用.

In[4]:

=f[2]

Out[4]=32

In[5]:

=f[1+b]

Out[5]=(1+b)2

In[6]:

=g[z,4]

Out[6]=5

如果忘记了已定义的函数的容,可以使用?

f查询f的定义.当函数或变量使用完以后,最好将其清除,以免带来麻烦.

3.符号运算

符号运算即代数式的运算.它是Mathemaica的重要功能.下面简介符号运算的主要功能.

(1)符号赋值

Mathemaica不仅可以把一个常值赋给一个符号,还可以把一个表达式赋给一个符号.其规则如下:

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化为最少项形式

例:

In[1]:

=t=(x-1)^2(2+x)/((1+x)(x-3)^2),

In[2]:

=Expand[t](展开分子,分母不变)

In[3]:

=ExpandAll[t](展开分子、分母)

In[4]:

=Together[%](通分)

In[5]:

=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总能给精确解.四次以上的方程,若能分解因式,亦可给出精确解.

In[3]:

=Solve[x^3+3x^2+3x+2==0,x]

Out[3]=

当求不出精确解时,Mathemaica以符号形式给出结果

In[4]:

=x^5+5x+1==0;

In[5]:

=Solve[%4,x]

Out[5]=

上述方程求不出精确解,此时可求数值解.

In[6]:

=NSolve[%4,x]

Out[6]=

如果要求在某点附近的数值解,使用FindRoot

In[7]:

=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.极限、微分和积分

微积分等主要运算:

例In[1]:

=D[Sin[x^2],x]

Out[1]=2xCos[x2]

In[2]:

=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]]

Out[6]=

求定积分

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]=

抽象函数展开

In[3]:

=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]=

如给出初始条件,就明确了待定常数

In[2]:

=DSolve[{y’[x]==a*y[x],y[0]==2},y[x],x]

Out[2]=

In[3]:

=DSolve[{y”[x]+y[x]==1,y[0]==2,y’[0]==5},y[x],x]

Out[3]=

In[4]:

=DSolve[{y’[t]==x[t],x’[t]==y[t],x[0]==1,y[0]==2},{x[t],y[t]},t]

Out[4]=

四线性代数

1.构造矩阵

{{a11,…,a1n},{a21,…,a2n},…,{am1,…,amn}}---------构造m×n矩阵

Table[f[i,j],{i,m},{j,n}]--------------------------------构造m×n矩阵

Array[f,{m,n}]---------------------以f[i,j]为元素,构造m×n矩阵

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列

例In[1]:

={{a,b},{c,d}}

Out[1]={{a,b},{c,d}}

如果希望得到矩阵形式,可使用函数MatrixForm

In[2]:

=MatrixForm[%]

Out[2]=//MatrixForm=

In[3]:

=Table[3*(i-1)+j,{i,3},{j,3}]

Out[3]={{1,2,3},{4,5,6},{7,8,9}}

In[4]:

=MatrixForm[DiagonalMatrix[{a,b,c}]]

Out[4]=//MatrixForm=

In[5]:

=p=Array[a,{2,3}]

Out[5]=

取出第2行

In[6]:

=p[[2]]

Out[6]={a[2,1],a[2,2],a[2,3]}

取出第3列

In[7]:

=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也不区分“行”,或“列”向量,自动进行可能的运算.

例:

In[1]:

=A={{a,b},{c,d}};v={x,y};

In[2]:

=A.v(A左乘以v)

Out[2]={ax+by,cx+dy}

In[3]:

=v.A(A右乘以v)

Out[3]={ax+cy,bx+dy}

In[4]:

=Inverse[A]

Out[4]=

如果矩阵的元素是近似数,则求出的逆矩阵也是近似的。

In[5]:

=B={{1.2,5.7},{4.2,5.6}};Inverse[B]

Out[5]=

In[6]:

=%.B

Out[6]=

结果与单位矩阵有微小误差,用函数Chop消去无实际意义小量

In[7]:

=Chop[%]

Out[7]={{1.,0},{0,1.}}

前面已介绍了用Solve解线性方程组,但对于矩阵形式Ax=v的线性方程组,用

LinearSolve[A,v]更方便.

In[8]:

=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]-----------------多项式插值

In[1]:

=d1=Table[Exp[-x/2.],{x,8}](生成一个数据表)

Out[1]=

In[2]:

=Fit[d1,{1,x,x^2,x^3},x](用三次多项式拟合)

Out[2]=

In[3]:

=Fit[d1,{Sin[x],Exp[-x/2]},x](用三角函数与指数函数拟合)

Out[3]=

In[4]:

=Chop[%]

Out[4]=

In[5]:

=d2=Flatten[Table[{x,y,1-2x+x*y+y^2},{x,2,5},{y,10,15}],1](生成一个二元数据表,即一串三维点)

Out[5]=

In[6]:

=Fit[d2,{1,x,y,x*y,y^2},{x,y}](二元函数拟合)

Out[6]=

In[7]:

=Chop[%]

Out[7]=

In[8]:

=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}

In[1]:

=FindMinimum[x^4+3x^2*y+5y^2+x+y,{x,0.1},{y,0.2}]

Out[1]=

In[2]:

=ConstrainedMax[17x-20y+18z,{x-y+z<=15,x<5,x+y<10},{x,y,z}]

Out[2]=

In[3]:

=

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]---------------------------------画三元数组的等高线图

例绘散点图

In[1]:

=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]},DisplayFunc

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 城乡园林规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1