2)不同类型数的转换
在Mathematica的运算中对数字的类型要求是不同的。例如在公式推导中的数字常用整数或有理数表示,在数值计算中的数字常用实数表示。一般情况下在输出行Out[n]中,系统根据输入行In[n]的数字类型对计算结果做出相应的处理。如果有一些特殊的要求,就要进行数据类型转换。
在Mathematica中的提供以下几个函数达到转换的目的:
函数 N[x] x//N N[x,n] Rationalize[x] Rationalize[x,dx] 与N[x]等价 将x转换成近似实数,精度为n 给出x的有理数近似值 给出x的有理数近似值,误差小于dx 功能 将x转换成实数(有效位一般为6位) 举例: In[1]:=N[5/3,20] Out[1]=1.6666666666666666667 In[2]:=N[%,10] %表示上一输出结果,即%=1.6666666666666666667。 Out[2]=1.666666667 第二个输出是把上面计算的结果变为10位精度的数字。 In[3]:=Rationalize[%] Out[3]=5 3 3)数学常数 Mathematica定义了一些常见的数学常数,这些数学常数都是精确数。 常数 Pi E Degree I Infinity -infinity 意义 表示π=3.14159…… 自然对数的底e=2.71828…… 1度,π/180弧度 虚数单位i 无穷大∞ 负无穷大-∞ 数学常数可用在公式推导和数值计算中,在数值计算中表示精确值。如: In[1]:=Pi^2 Out[1]=π2 In[2]:=Pi^2//N Out[2]=9.8696 4)变量
(1)变量的命名
Mathematica中内部函数和命令都是以大写字母开始的标示符,为了不会与它们混淆,我们自定义的变量应该是以小写字母开始,后跟数字和字母的组合,长度不限。例如:a12,ast,aST都是合法的,而12a,z*a,a b(中间有空格)是非法的。另外在Mathematica中的变量是区分大小写的。在Mathematica中,变量不仅可以存放一个数值,还可以存放表达式或复杂的算式。
4
(2)给变量赋值
在Mathmatica中用等号=(或: =)为变量赋值。同一个变量可以表示一个数值,一个数组,一个表达式,甚至一个图形。”=”称为立即赋值,”:=”称为延迟赋值。
如:
In[1]:=x=3 Out[1]=3
In[2]:=x^2+2*x Out[2]=15 In[3]:=x=% +1 Out[3]=16
对不同的变量可同时赋不同的值,例如: In[4]:={u,v,w}={1,2,3} Out[4]={1,2,3} In[5]:=2u+3v+w Out[5]=11 对于已定义的变量,当不再使用它是,为防止变量值的混淆,可以随时用=.清除它的值,如果变量本身也要清除用函数Clear[var],例如: In[6]:=u=. In[7]:=2u+v (上面已定义了u,v的值) Out[7]=2+2u (3)变量的替换 在给定一个表达式时,可用变量替换来计算表达式的不同值,即expr/.x->xval,例如: In[1]:=f=x/2+1 Out[1]= 1+x 2In[2]:=f/.x->1 Out[2]= 3 2In[3]:=f/.x->2 Out[3]=2 如果表达式中有多个变量,也可同时替换,方法为:expr/.{x->xval,y->yval,...} In[4]:=(x+y)(x-y)^2/.{x->3,y->1-a} Out[4]=(4-a)(2+a)2 1.2.3 函数 1)系统函数
Mathematica中的函数与数学上的函数有些不同的地方,Mathematica中函数是一个具有独立功能的程序模块,可以直接被调用。同时每一函数也可以包括一个或多个参数,也可以没有参数。参数的的数据类型也比较复杂。更加详细的可以参看系统的帮助,了解各个函数的功能和使用方法是学习Mathematica软件的基础。
在Mathmatic中定义了大量的数学函数可以直接调用。下面是一些常用函数:
5
函数 Sqrt[x] Floor[x] Ceiling[x] Sign[x] Round[x] Abs[x] Max[x1,x2,x3……..] Min[x1,x2,x3……..] Random[] Random[R,xmax] Random[R,{xmin,xmax}] Exp[x] Log[x] Log[b,x] 开平方 功能 不比x大的最大整数 不比x小的最小整数 符号函数 接近x的整数 x绝对值 x1,x2,x3…….中的最大值 x1,x2,x3…….中的最小值 0~1之间的随机函数 0~xmax之间的随机函数(R为Real,Integer,Complex之一) xmin~xmax之间的随机函数(R为Real,Integer,Complex之一) 指数函数ex 自然对数函数lnx 以b为底的对数函数logbx Sin[x],Cos[x],Tan[x],Csc[x],Sec[x],Cot[x] 三角函数(变量是以弧度为单位的) 反三角函数 ArcSin[x],ArcCos[x],ArcTan[x],ArcCsc[x],ArcSec[x],ArcCot[x] Sinh[x],Cosh[x],Tanhx[x],Csch[x],Sech[x],Coth[x] ArcSinh[x],ArcCosh[x],ArcTanhx[x],ArcCsch[x],ArcSech[x],ArcCoth[x] Mod[m,n] Quotient[m,n] GCD[n1,n2,n3……]或GCD[s] LCM[n1,n2……]或LCM[s] N! 双曲函数 反双曲函数 m被n整除的余数,余数与n同号 m/n的整数部分 n1,n2,…或s的最大公约数,s为数据集合 n1,n2…或s的最小公倍数,s为数据集合 N的阶程 N的双阶程 N!! 2)函数的定义 (1)函数的立即定义 立即定义函数的语法如下f[x_]=expr函数名为f,自变量为x,expr是表达式。在执行时会把expr 中的x都换为f的自变量x(不是x_)。函数的自变量具有局部性,只对所在的函数起作用。函数执行结束后也就没有了,不会改变其它全局定义的同名变量的值。
请看下面的例子,定义函数f(x)=xsinx+x2,对定义的函数我们可以求函数值,也可绘制它的图形。
In[1]:=f[x_]=x*Sin[x]+x^2 Out[1]=x 2 +xSin[x] In[2]:=f[1]
Out[2]=1+Sin[1]
6
In[3]:=Plot[f[x],{x,-3,3}]
8642 对于定义的函数我们可以使用命令Clear[f]清除掉,而Remove[f]则从系统中删除该函数。 -3-2-112 (2)多变量函数的定义 也可以定义多个变量的函数,格式为f[x_,y_,z_,…]=expr自变量为x,y,z…,相应的expr中的自变量会被替换。例如定义函数f(x,y)=xy+ycosx。 In[1]:=f[x_,y_ ]=x*y+y*Cos[x] Out[1]=xy+yCos[x] In[2]:=f[2,3] Out[2]=6+3Cos[2] (3)延迟定义函数 延迟定义函数从定义方法上与即时定义的区别为“=”与“:=”延迟定义的格式为f[x_]:=expr其他操作基本相同。那么延迟定义和即时定义的主要区别是什么?即时定义函数在输入函数后立即定义函数并存放在内存中并可直接调用。延时定义只是在调用函数时才真正定义函数。 (4)使用条件运算符定义和If命令定义函数 ?x?1 x?02如果要定义如:f(x)??? x 0?x??1 ? sinx x??1?这样的分段函数应该如何定义,显然要根据x 的不同值给出不同的表达式。一种办法是使用条件运算符,基本格式为:f[x_]:=expr/;condition ,当condition条件满足时才把expr赋给f(x) 。
In[1]:=f[x_]:=x-1/;x>=0
f[x_]:=x^2/;(x>-1)&&(x<0) f[x_]:=x-1/;x<= -1 In[4]:=Plot[f[x],{x,-2,2}]
7
10.5-2-11-0.5-1 当然使用If命令也可以定义上面的函数,If语句的格式为If[条件,值1,值2],如果条件成立取“值1”,否则取“值2”,用If语句的定义结果如下: In[5]:=g[x_]:=If[x>=0,x-1,If[x<= -1,Sin[x],x^2]] In[6]:=Plot[g[x],{x,-2,2}] 10.5-2-11-0.5 可以看出用If定义的函数g(x)和前面函数f(x)相同,这里使用了两个If嵌套,逻辑性比较强。 1.2.4 表 将一些相互关联的元素放在一起,使它们成为一个整体。既可以对整体操作,也可以对整体中的一个元素单独进行操作。在Mathematica中这样的数据结构就称作表(List)。表{a,b,c}表示一个向量;表{{a,b},{c,d}}表示一个矩阵。 1)建立表 在表中元素较少时,可以采取直接列表的方式列出表中的元素。 In[1]:={1,2,3} Out[1]={1,2,3} 下面是符号表达式的列表: In[2]:=1+%x+x^%
Out[2]={1+2x,1+2x+x2,1+3x+x3}
如果表中的元素较多时,可以用建表函数进行建表: -1函数 Table[f,{i,min,max,step}] Table[f,{min,max}] 功能 以step为步长给出f的数值表,i由min变到max 给出f的数值表,i由min变到max,步长为1 8