2)不同类型数的转换
在 Mathematica的运算中对数字的类型要求是不同的。例如在公式推导中的数字常用整 数或有理数表示,在数值计算中的数字常用实数表示。一般情况下在输出行 Out[n]中,系统 根据输入行 In[n]的数字类型对计算结果做出相应的处理。如果有一些特殊的要求,就要进 行数据类型转换。
在 Mathematica中的提供以下几个函数达到转换的目的:
函数 功能
N[x] x//N N[x,n] Rationalize[x] Rationalize[x,dx]
将 x转换成实数(有效位一般为 6位)
与 N[x]等价
将 x转换成近似实数,精度为 n 给出 x的有理数近似值
给出 x的有理数近似值,误差小于 dx
举例:
In[1]:=N[5/3,20]
Out[1]=1.6666666666666666667
%表示上一输出结果,即%=1.6666666666666666667。 In[2]:=N[%,10]
第二个输出是把上面计算的结果变为 10位精度的数字。 Out[2]=1.666666667 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=.
(上面已定义了 u,v的值) In[7]:=2u+v
Out[7]=2+2u
(3)变量的替换
在给定一个表达式时,可用变量替换来计算表达式的不同值,即 expr/.x->xval,例如: In[1]:=f=x/2+1 Out[1]= 1+
x 2
In[2]:=f/.x->1 Out[2]=
3 2
In[3]:=f/.x->2 Out[3]=3
如果表达式中有多个变量,也可同时替换,方法为: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为底的对数函数logb x
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],ArcCs 反双曲函数 ch[x],ArcSech[x],ArcCoth[x]
m被 n整除的余数,余数与 n同号 Mod[m,n]
m/n的整数部分 Quotient[m,n]
GCD[n1,n2,n3……]或 GCD[s] LCM[n1,n2……]或 LCM[s] N! N!!
n1,n2,…或 s的最大公约数,s为数据集合 n1,n2…或 s的最小公倍数,s为数据集合 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}]
8 6 4 2
-3 -2 -1 1 2 3
对于定义的函数我们可以使用命令 Clear[f]清除掉,而 Remove[f]则从系统中删除该 函数。
(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 ? 0 ? 如果要定义如: f (x) ? ? x2 0 ? x ? ?1 ? sin x 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
1
0.5
-2 -1
-0.5 -1
1 2
当然使用 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}]
1
0.5
-2 -1
-0.5 -1
1 2
可以看出用 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}
如果表中的元素较多时,可以用建表函数进行建表:
函数
Table[f,{i,min,max,step}] Table[f,{min,max}]
功能
以 step为步长给出 f的数值表,i由 min 变到 max
给出 f的数值表,i由 min变到 max,步 长为 1
8