mathematica软件包介绍(10秋)(精)_第1页
mathematica软件包介绍(10秋)(精)_第2页
mathematica软件包介绍(10秋)(精)_第3页
mathematica软件包介绍(10秋)(精)_第4页
mathematica软件包介绍(10秋)(精)_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Mathematica软件包简介科学计算软件:Mathematica

对于个人用户而言,知道Mathematica的人可能不太多。但在科学计算领域它却是声名显赫,Mathematica系统是目前世界上应用最广泛的符号计算系统,它是由美国科学家StephenWolfram领导的Wolfram公司开发研制的一个用途广泛的科学计算软件,能够完成符号和数值运算、数学图形绘制甚至动画制作等多种功能。

MATHEMATICA的目标建立一个系统,为各个领域各种水平的技术人员供应一个志向的工作助手.发展历史:1988年6月23日问世(第一版)1991年其次版1996年第三版1999年第四版2003年第五版2007年第六版2008年第七版

Mathematica的特点1语法简练、编程效率高:与其它高级语言(如C、Fortran语言)相比,其语法规则和表示方式更接近数学运算的思维和表达方式.Mathematica的语法规则简洁,语句精练.用Mathematica编程,用较少的语句,就可完成复杂的计算和公式推导等任务.2操作简洁,运用便利:Mathematica叮嘱易学易记。Mathematica.可以调用C、Fortran等的输出,也可以将Mathematica的输出转化为C、Fortran等所需的形式.这使其编程更灵敏便利,增加了Mathematica的功能3和其它语言交互:运行特殊便利:可以和Mathematica进行交互式“对话”。可以进行“批处理”。Mathematica的基本操作启动Mathematica叮嘱的输入和运行例如要计算,输入2^8然后同时按下Shift和Enter键,就执行运算并得到结果

Mathematica的工作环境1.工作环境简介2.输入与输出In[n]∶=标记输入,Out[n]=标记对应的运算结果Notebook1.“对话”方式例:画出曲线y=x^2和直线x+y=2在区间[-4,4]的图形Plot[{x^2,2-x},{x,-4,4}]2.“批处理”方式:输入一个叮嘱,运行之;输入一个叮嘱,运行之...将多个叮嘱组成的程序,一次交给Mathematica处理,完成指定的运算.Mathematica的运算方式帮助信息Mathematica供应了大量的帮助信息,帮助用户驾驭Mathematica的功能.(1)打开帮助菜单获得信息(2)输入叮嘱获得信息例:?Log3.2Mathematica基础学问1.精确数数:Mathematica有两种数:精确数和近似数.如:整数,有理数,符号。例:Mathematica计算时,精确数的计算结果都是精确数。精确数的位数不受限制。例:1/2+1/3,Pi(没有误差的数)得到近似数,有两种方法:2.近似数(有误差的数)近似数的精度不受限制。算式中含有近似数,则计算结果是近似数。1).运用小数点2).运用Mathematica的近似函数:expr//Nexpr的近似值(精度为6位)N[expr,n]n位精度的expr的近似值.其中expr是算术表达式.例:的近似值。函数形式功能Sqrt[x]x的平方根Exp[x]指数函数Log[x],Log[b,x]对数函数Sin[x],Cos[x],Tan[x]三角函数ArcSin[x],ArcCos[x],ArcTan[x]反三角函数Sinh[x],Cosh[x],Tanh[x]双曲函数基本初等函数函数形式功能n!阶乘Abs[x]x的确定值Sign[x]符号函数Round[x]最接近x的整数Flour[x]x的整数部分Mod[n,m]模(n除以m的余数)Random[]产生[0,1]区间上的随机数Max[x,y,…],Min[x,y,…]x,y,…中的最大值,最小值Re[z],Im[z]z的实部,虚部Abs[z],Arg[z]z的模,辐角Conjugate[z]z的共轭函数Bessell[x]贝塞尔函数常用数学函数留意:1)Mathematica供应的内部函数,其名称中的字母大小写是固定的,特殊是开头字母均为大写。(3).数学常数函数和常数均可参与运算。

符号功能PiπEeI-1的平方根Infinity∞Binomial(n,m)n!/m!(n-m)!2)函数的自变量以方括号[]括起来。列表的运算{3,5,1}^2+{x,x^3,5x}{8,2,7}+1并:Union[v1,v2,…]v1,v2,…的交集交:Intersection[v1,v2,…]v1,v2,…的交集补:Complement[v,v1,v2,…]在v中但不在v1,v2,…中的元素分组:Partition[v,n]将列表v的元素按n个一组生成嵌套列表“压平”:Flatten[v]将嵌套列表v的子表绽开逆排:Reverse[v]将列表v的元素逆向排列

函数形式功能Expand[expr]绽开exprExpandAll[expr]绽开expr的分子、分母Factor[expr]对expr进行因式分解Together[expr]对expr进行通分Apart[expr]将expr分解为简洁分式Cancel[expr]消去expr的分子、分母的公因式Collect[expr,x]按x的幂合并同类项Simplify[expr]把expr化为最少项形式FullSimplify[expr]运用更广泛的变换进行化简Mathematica供应了很多进行代数式变换的一些函数,下面列出常用的函数代数式变换

函数形式功能Solve[equ,vars]求方程的一般解Solve[{equ1,equ2,…},vars]求方程组的一般解Reduce[equ,vars]求方程的全部解其中,equ是待求解的方程,vars是未知量.解方程Mathematica可以求解符号方程与方程组.Solve[x^2-3x+1==0,x]解不等式解不等式是Mathematica的扩展功能,需调用Mathematica程序包。调用.Mathematica程序包的一般方式:例:调用解不等式的程序包。<<Algebra`InequalitySolve`InequalitySolve[Inequa,var]InequalitySolve[x^2+x>0,x]<<Aaaa`Bbbb`微积分函数形式功能Limit[f,x→x0]极限Limit[Sin[x]/x,,x→0]Limit[(1+1/n)^n,n->Infinity]Mathematica可进行高等数学中的各种运算。其符号运算实力,令人惊羡。求极限求导数与微分函数形式功能D[f,x]f关于x的导数D[f,x1,x2,…,xn]f关于x1,x2,…,xn的偏导数D[f,{x,n}]f关于x的n阶导数D[f,{x1,,k1},{x2,k2},…,{xn,kn}]f关于x1,x2,…,xn的k1,k2,…kn阶偏导数Dt[f,var]f关于var的全导数Dt[f]f的全微分函数形式功能Integrate[f,x]Integrate[f,{x,a,b}]Integrate[f,{x,a,b},{y,c,d}]Integrate[x^2+Sin[2x],x]Integrate[x^2+Sin[2x],{x,0,Pi}]求积分

函数形式功能

Sum[f,{i,min,max}]计算Sum[f,{i,i1,i2},(j,j1,j2}]计算Product[f,{i,min,max}]计算Product[f,{i,i1,i2},(j,j1,j2}]计算无穷级数与无穷乘积:求和与求积函数的幂级数绽开函数形式功能.Series[expr,{x,x0,n}]expr在x=x0点的n阶幂级数绽开式Series[expr,{x,x0,n},{y,y0,m}]expr在x=x0,y=y0的n,m阶幂级数绽开式例Series[Exp[x]Sin[y],{x,0,3},{y,0,6}]解常微分方程函数形式功能DSolve[equ,y[x],x]解y[x]的微分方程,x为自变量DSolve[{equ1,equ2},{x[t],y[t]},t]解自变量为t的微分方程组DSolve[y’[x]+y[x]==1,y[x],x]DSolve[{x’’[t]-2x’[t]-y’[t]+2y[t]==0,x’[t]+y’[t]-2x[t]==-2Exp[-t]},{x[t],y[t]},t]拉普拉斯变换

函数形式功能

LaplaceTransform[expr,t,s]求expr的拉普拉斯变换LaplaceTransform[expr,{t1,t2,…},{s1,s2…}]求expr的多维拉普拉斯变换InverseLaplaceTransform[expr,s,t]求expr的拉普拉斯逆变换InverseLaplaceTransform[expr,{s1,s2…},{t1,t2,…}]求expr的拉普拉斯逆变换傅里埃变换函数形式功能FourierTransform[expr,

t,

]

求expr的傅里埃变换FourierTransform[expr,{t1,t2,…},{1,2…}]

求expr的多维傅里埃变换InverseFourierTransform[expr,

,

t]

求expr的傅里埃逆变换InverseFourierTransform[expr,

{1,2…},{t1,t2,…}]

求expr的多维傅里埃逆变换

3.3绘图

直角坐标函数绘图函数形式功能

Plot[f,{x,min,max}]画出函数f[x]随x从min到max间的图形Plot[{f1,f2…},{x,min,max}]在一起画出f1,f2…的图形fgsin=Plot[Sin[x],{x,-Pi,Pi}];g[x_,n_]:=Sum[(-1)^k*x^(2k+1)/((2k+1)!),{k,0,n}];fgtylor=Plot[g[x,2],{x,-Pi,Pi}];Show[fgsin,fgtylor]**FourierSeries**f[x_,n_]:=Sum[Sin[k*x]/k,{k,1,n,2}];Plot[f[x,9],{x,-2Pi,2Pi}]用Mathematica探讨图象m=0;a=10^(-m);Plot[Sin[1/x],{x,-a,a}]d=Table[{1/n,Sin[n]},{n,1,10000}];p1=ListPlot[d]**Pi==22/7,355/113***d=44;t1=Table[{1/n,Sin[n]},{n,3,10000,d}];t2=Table[{1/n,Sin[n]},{n,6,10000,d}];p2=ListPlot[t1,PlotJoined->True];p3=ListPlot[t2,PlotJoined->True];Show[p1,p2,p3]图形重画Show[{%n,%m}]将第n,第m个图形重画在一起其中:n和m是前面输出的编号out[n],out[m]

参数方程绘图:ParametricPlot[{fx,fy},{t,min,max}]画出参数方程的图形ParametricPlot[{{fx,fy},{gx,gy},…},{t,min,max}]在一起画出多个参数方程的图形ParametricPlot[{(Cos[t])^3,(Sin[t])^3},{t,0,2Pi},AspectRatio->Automatic]

ParametricPlot[{t-Sin[t],1-Cos[t]},{t,0,2Pi},AspectRatio->Automatic]

极坐标图形<<Graphics`Graphics`PolarPlot[{f,g,…},{t,tmin,tmax}]画出多个极坐标方程的图形PolarPlot[4Cos[3t],{t,0,2Pi}]PolarPlot[{4/(2+Cos[t]),4Cos[t]-2},{t,0,2Pi}]输入形式缺省值说明.PlotStyle→valueAutomatic指定曲线的线型和颜色Automatic曲线为黑色实线RGBColor[r,g,b]指定曲线的颜色GrayLevel[k]指定曲线的灰度Thickness[r]指定曲线的宽度常用的value值:等值线函数形式功能.ContourPlot[f,{x,xmin,xmax},{y,ymin,ymax}]画出函数f的等值线图ContourPlot[x^2-y^2,{x,-1,1},{y,-3,2}]等值线函数可选项.输入形式缺省值说明.ContourShading→trueTrue是否运用灰度Contours→数字10指定等值线数目PlotRange→{z1,z2}Automatic指定函数值范围ColorFunction→HueAutomatic显示函数值大小的方法三维图形直角坐标函数绘图

函数形式功能Plot3D[f,{x,a,b},{y,c,d}]画出以x,y为变量的函数f表示的曲面例:Plot3D[Sin[xy],{x,0,3},{y,0,3}]Show[%,PlotRange->{-0.5,0.5}]

Plot3D[10Sin[x+Sin[y]],{x,-10,10},{y,-10,10},PlotPoints->40]Plot3D[Sqrt[1-x^2-y^2],{x,-1,1},{y,-1,1}]旋转的马鞍面:Table[Plot3D[(x^2-y^2)/2,{x,-2,2},{y,-2,2},Axes->False,Boxed->False,ViewPoint->{3*Sin[t],3*Cos[t],2}],{t,0,2*Pi,Pi/6}]参数方程绘图

函数形式功能ParametricPLot3D[{fx,fy,fz},{t,min,max}]画出参数方程表示的空间曲线ParametricPLot3D[{fx,fy,fz},{t,t1,t2},{u,u1,u2}]画出参数方程表示的曲面ParametricPLot3D[{{fx,fy,fz},{gx,gy,gz},…},…]把若干图形画在一起例螺线:ParametricPlot3D[{Exp[0.1t]Sin[t],Exp[0.01t]Cos[t],t/3},{t,0,15}]正弦曲面:ParametricPlot3D[{t,u,Sin[tu]},{t,0,3},{u,0,3}]球面:ParametricPlot3D[{Cos[t]Sin[s],Sin[t]Sin[s],Cos[s]},{t,0,2Pi},{s,0,Pi}]环面:ParametricPlot3D[{Cos[t](3+Cos[s]),Sin[t](3+Cos[s]),Sin[s]},{t,0,2Pi},{s,0,2Pi}]例球面环面ParametricPlot3D[{{Cos[t]Sin[s],Sin[t]Sin[s],Cos[s]},{Cos[t](3+Cos[s]),Sin[t](3+Cos[s]),Sin[s]}},{t,0,2Pi},{s,0,Pi}]两个柱面z=Sqrt[1-x^2]x=Cos[t]ParametricPlot3D[{{x,s,z},{x,s,-z},{s,x,z},{s,x,-z}},{t,0,2Pi},{s,-2,2}]g=Plot3D[Exp[-(x^2+y^2)],{x,-2,2},{y,-2,2}]Show[g,Mesh->False]Show[g,Shading->False]Plot3D[Sin[xy],{x,0,3},{y,0,3}]Show[%,ViewPoint->{0,-2,0}]Plot3D[1/((x-1)^2+(y-2)^2),{x,-2,2},{y,-3,3},AxesLabel->{“x”,”y”,”z”}];Show[%,ViewPoint->{1.2,1.2,1.2}]圆锥面的形成圆锥面的形成For[k=1,k<9,k++,t=ParametricPlot3D[{2*Cos[u],2*Sin[u],2},{u,0,2Pi},DisplayFunction->Identity];s=ParametricPlot3D[{2*Cos[u],2*Sin[u],-2},{u,0,2Pi},DisplayFunction->Identity];m=ParametricPlot3D[{r*Cos[u],r*Sin[u],r},{u,0,k*2Pi/8},{r,-2,2},PlotPoints->{60,12},DisplayFunction->Identity];Show[{t,m,s},DisplayFunction->$DisplayFunction]]单叶双曲面形成单叶双曲面形成For[k=1,k<17,k++, t=ParametricPlot3D[{Sqrt[1+z^2]*Cos[u],Sqrt[1+z^2]*Sin[u],z},{u,0,2Pi},{z,2-1/400,2},PlotPoints->{20,12},DisplayFunction->Identity]; m=ParametricPlot3D[{Sqrt[1+z^2]*Cos[u],Sqrt[1+z^2]*Sin[u],z},{u,0,2Pi},{z,-2,-2+k/4},PlotPoints->{30,12},DisplayFunction->Identity]; Show[{t,m},DisplayFunction->$DisplayFunction]]课堂练习:的计算我国古代的祖冲之求得的近似值为3.141592,Mathematica可以计算得更多,给出一些计算

的方法,当一回祖冲之!1/15/2023圆的面积单位圆的面积等于计算第一象限内的单位圆的面积,方法为:把它分成n个窄的曲边梯形,计算S大,S小,其中n可以为1000,10000,...1/15/2023

S小

S大1/15/2023n=1000h=1/nP1=4hSum[Sqrt[1-(mh)^2],{m,0,n-1}]n=1000h=1/nP2=4hSum[Sqrt[1-(mh)^2],{m,1,n}]P12=N[(P1+P2)/2]数值积分n=1000h=1/nP1=4hSum[1/(1+(mh)^2),{m,0,n-1}]n=1000h=1/nP2=4hSum[1/(1+(mh)^2),{m,1,n}]P12=N[(P1+P2)/2]无穷级数法arctanx=x-x3/3+x5/5-x7/7+x9/9-.../4=arctan1=1-1/3+1/5-1/7+1/9-…收敛太慢!|x|应当比1小很多,级数收敛才快。/4=arctan1/2+arctan1/31/15/2023n=100P1=4Sum[(-1)^(m-1)/(2m-1),{m,1,n}]n=100P2=4Sum[(-1)^(m-1)/(2m-1)((1/2)^(2m-1)+(1/3)^(2m-1)),{m,1,n}]3.4数值计算数据拟合

函数形式功能Fit[date,funs,vars]用变量为vars,函数类为funs,按最小二乘法拟合一组数据dateInterpolatingPolynomial[{f1,f2,…},x]求点{i,fi},i=1,2…的插值多项式InterpolatingPolynomial[{{x1,f1},{x2,f2},…},x]求点{xi,fi},i=1,2…的插值多项式Interpolation[{{x1,f1},{x2,f2},…}]求点{xi,fi},i=1,2…的多项式插值函数例一维数据的拟合data=Table[Exp[x/5.],{x,7}]Y1=Fit[data,{1,x},x]Y2=Fit[data,{1,x,x^2},x]Y3=Fit[data,{1,x,x^3,x^5},x]P1=ListPlot[data,DisplayFunction->Identity];P2=Plot[Y1,{x,0,8},DisplayFunction->Identity];Show[P1,P2,DisplayFunction->$DisplayFunction]

方程的近似解函数形式功能NSolve[equs,vars]求多项式方程(组)的数值解FindRoot[equ,{x,a}]求方程在a旁边的数值解(切线法)FindRoot[equ,{x,a,xmin,xmax}]超出区间[xmin,xmax]时停止FindRoot[equ,{x,{a,b}]求方程在[a,b]中的数值解(割线法)其中,equ是待求解的方程,vars是未知量.NSolve[{x+y==2,x-3y+z==3,x-y+z==0},{x,y,z}]FindRoot[3Cos[x]==Log[x],{x,10}]FindRoot[3Cos[x]==Log[x],{x,1}]FindRoot[{x==Log[y],y==Log[x]},{x,I},{y,2}]NSolve[Exp[x]==x^2,x]Plot[{Exp[x],x^2},{x,-2,2}]FindRoot[Exp[x]==x^2,{x,-0.5}]FindRoot[Exp[Abs[x]]==2,{x,0}]FindRoot[Exp[Abs[x]]==2,{x,0,0.2}]最小值原理从给定的点动身,向着下降速度最快的方向运动,这样就会通向一个微小值点(病态函数除外)FindMinimum[Sin[x],{x,0}]Plot[Sin[x]+x/5,{x,-10,10}]FindMinimum[Sin[x]+x/5,{x,1}]FindMinimum[3/2x^2+y^2/2-xy-2x,{x,100},{y,100}]FindMinimum[Sin[xy],{x,3},{y,1}]线性规划

函数形式功能ConstrainedMin[f,{inequ},{x,y,…}]求不等式约束下f的最小值ConstrainedMax[f,{inequ},{x,y,…}]求不等式约束下f的最大值其中自动隐含x,y,…为非负。LinearProgramming[c,m,b]求cx在约束条件mx>=b,x>=0下的最小值,其中,c,x为向量,m为矩阵

ConstrainedMax[x+y,{x<1,y<2},{x,y}]ConstrainedMin[x+y,{x<1,y<2},{x,y}]

ConstrainedMax[17x-20y+18z,{x-y+z<10,x<5,x+z>20},{x,y,z}]ConstrainedMax[x,{x<1,x>2},{x}]ConstrainedMin[2x-3y,{x+y<10,x-y>2,x>1},{x,y}]LinearProgramming[{2,-3},{{-1,-1},{1,-1},{1,0}},{-10,2,1}]

两个煤厂A1、A2每月进煤数量分别为60吨和100吨,联合供应3个居民区B1、B2、B3。3个居民区每月对煤的需求量依次为50吨、70吨、40吨。煤厂A1到3个居民区B1、B2、B3的距离分别是10公里、5公里、6公里,煤厂A2到3个居民区B1、B2、B3的距离分别是4公里、8公里、12公里。问如何支配供煤量使得运输费用最小?解用xij表示煤厂Ai供应应居民区Bj的煤(单位吨),用y表示运输费用,则y=10*x11+5*x12+6*x13+4*x21+8*x22+12*x23满足的条件为x11+x12+x13=60x21+x22+x23=100x11+x21=50x12+x22=70x13+x23=40xij>=0,i=1,2,j=1,2,3.

ConstrainedMin[10*x11+5*x12+6*x13+4*x21+8*x22+12*x23,{x11+x12+x13==60,x21+x22+x23==100,x11+x21==50,x12+x22==70,x13+x23==40},{x11,x12,x13,x21,x22,x23}]LinearProgramming[{10,5,6,4,8,12},{{1,1,1,0,0,0},{0,0,0,1,1,1},{1,0,0,1,0,0},{0,1,0,0,1,0},{0,0,1,0,0,1}},{60,100,50,70,40}]

3.5Mathematica编程:限制结构函数形式功能If[cond,then,else]假如cond为true,执行then,否则执行else。If[cond,then,cond为true时,执行then;cond为False时,else,Unknown]执行else;推断不出时,执行Unknown.Which[cond1,value1,依次推断算condi,给出对应第cond2,value2,…]一个cond为true的value值。lhs:=rhs/;cond假如cond为true,定义lhs为rhsSwitch[expr,form1,value1,form2,value2,…,]比较expr与formi,给出第1个form与expr匹配的value值,若全不匹配,给出整个结构。例1.定义一个阶跃函数1)用If语句f[x_]:=If[x>0,1,0]2)用/;condf[x_]:=0/;x<=0;f[x_]:=1/;x>0f(x)=例2.定义符号函数1)用If语句g[x_]:=If[x<0,-1,If[x>0,1,0]]2)用Which语句g[x_]:=Which[x<0,-1,x==0,0,x>0,1]g(x)=条件判别式的组成(1).逻辑运算符符号含义>大于>=大于等于<小于<=小于等于==等于===等于(结果只有True,False)!=不等于&&逻辑与||逻辑或!

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论