Mathematica/简单的运算
算术
编辑Mathematica最简单的用法就是像计算器一样输入您的算式,然后按Shift+Enter。比如说我们在上一章里已经进行过的计算:[1]
In[1]:= 2 + 2 Out[1]= 4
和别的计算机语言一样,Mathematica分别用+、-、*、/、^来表示加、减、乘、除、幂,用圆括号(和)来控制运算顺序。此外,乘法也可以用空格表示:
In[2]:= 2 3 + 2 (1 + 2) Out[2]= 12
在Mathematica中,数的大小和精度是不受限制的[2],比如说我们可以计算100的阶乘:
In[3]:= 100! Out[3]= 9332621544394415268169923885626670049071596826438162146859296389521759\ 9993229915608941463976156518286253697920827223758251185210916864000000\ 000000000000000000
Mathematica把不带小数点的数都当成精确值。一般情况下,当您输入的数字都是精确值时,输出也将是精确值:
In[4]:= 1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1)))) Out[4]= 138
只要输入的数当中有一个带有小数点,比如说,把“1”改成“1.”,Mathematica就会把它当成近似值,这样输出的也将是近似值:
In[5]:= 1. + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1)))) Out[5]= 1.625
使用函数
编辑当我们要进行复杂一点的计算时,就要用到数学函数了。与我们平时写数学公式的习惯不同,Mathematica中函数的自变量都括在方括号中,这样是为了与控制运算顺序的圆括号相区别。比如说计算4的算术平方根,就要用到表示平方根的函数Sqrt:
In[6]:= Sqrt[4] Out[6]= 2
同样,我们也能计算2的算术平方根:
In[7]:= Sqrt[2] Out[7]= √2
这看起来有些奇怪,它好像什么都没算。事实上,我们前面已经说过,当您输入的数字都是精确值时,输出也将是精确值。根号2的精确值自然就是 ,而不是1.414。
Mathematica中大小写是严格区分的,Mathematica内建的函数首字母都是大写。除了一些一些常见的数学常数在Mathematica也用首字母是大写的符号来表示,如Pi表示圆周率、E表示自然对数的底、I表示虚数单位。这都和我们平常写数学公式的习惯不同。
In[8]:= Exp[Pi I] Out[8]= -1
这就是著名的欧拉恒等式,用平常的数学公式写出来就是 。
下表列出了一些常用的数学函数:
Sqrt[x] | 平方根( ) |
Exp[x] | 指数函数( ) |
Log[x] | 自然对数( ;注意Mathematica中Log表示的是以e为底的对数) |
Log[b,x] | 以b为底的对数( ) |
Sin[x],Cos[x],Tan[x] | 三角函数( ;注意Mathematica中角的单位都是弧度) |
ArcSin[x],ArcCos[x],ArcTan[x] | 反三角函数( ) |
Abs[x] | 绝对值( ) |
Round[x] | 取离x最近的整数[3](注意这个函数即使输入的是近似值输出也将是精确值) |
Mathematica内建的数学函数非常丰富,涉及到数学的各个不同领域。最新版本的Mathematica中数学函数的全表可以参见Mathematica帮助中的Mathematical Functions。
代数运算
编辑Mathematica是一个计算机代数系统,它的强项就是代数运算。 比如说,您可以(在没有给a赋值的情况下)输入a+a。在一般的计算机语言中,这样输入可能会导致错误,因为您没有告诉计算机a是多少。但是,只要学过一点初等代数,我们不需要知道a的值也能知道a+a等于2a。在Mathematica中也是如此:
In[9]:= a + a Out[9]= 2 a
Mathematica中变量的符号不仅可以是英文字母,还可以是希腊字母,甚至别的符号,或者符号的组合:
In[10]:= 喵 + αβα + 喵 Out[10]= 2 喵 + αβα
复杂一点的代数运算就要用到与代数运算相关的Mathematica函数了。比如说,因式分解:
In[11]:= Factor[a^12 - b^12] Out[11]= (a - b) (a + b) (a2 + b2) (a2 - a b + b2) (a2 + a b + b2) (a4 - a2 b2 + b4)
与代数运算有关一个很有用的Mathematica函数是Simplify。事实上,Mathematica很懒,一般的式子它不会自动帮您化简,只会做一下调整顺序、合并同类项之类的工作。例如:
In[12]:= Sin[x]^2 + Cos[x]^2 Out[12]= Cos[x]2 + Sin[x]2
而Simplify则能够帮我们化简这些式子:
In[13]:= Simplify[Sin[x]^2 + Cos[x]^2] Out[13]= 1
Simplify有时不能把式子化到最简。Mathematica提供了另一个函数FullSimplify,它化简式子时运用的变换规则比Simplify更多,化简能力比Simplify更强,但花的时间比Simplify要长。
输出近似值
编辑前面说过,当您输入的数字都是精确值时,输出也将是精确的。如果我们希望Mathematica输出的结果是近似值,可以在输入的末尾加上//N:
In[14]:= Sqrt[2] // N Out[14]= 1.41421
“//N”这种奇怪的写法其实是使用N这个函数时的另一种写法[4],Sqrt[2]//N就相当于N[Sqrt[2]]:
In[15]:= N[Sqrt[2]] Out[15]= 1.41421
N是表示数值(也就是近似值)的函数。N[expr]表示表示expr的近似值,N[expr, n]表示expr的有n位精度的近似值。比如说,求圆周率的前100位:
In[16]:= N[Pi, 100] Out[16]= 3.14159265358979323846264338327950288419716939937510582097494459230781\ 6406286208998628034825342117068
Mathematica输出的近似值的精度不受限制。
注记
编辑- ↑ 这里为了排版的美观,在数和运算符号间添加了空格,但输入时不必添加,加上也不影响运算结果。但下面说的表示乘法的空格不能省略。
- ↑ 其实,这一说法并不准确,数的大小还是受到计算机本身的限制的,比如说Mathematica能算的最大的数一般在10323228429左右(12.1版中为1.605216761933662×101355718576299609),依计算机系统的不同而不同,这个“最大的数”的具体数值在Mathematica中用$MaxNumber表示。
- ↑ 当x等于n.5时取离x最近的偶数。注意这与我们通常的四舍五入不同,它采用的是四舍六入五留双的规则。
- ↑ 类似的语法糖还有:Sqrt@2等价于Sqrt[2],3~Mod~2等价于Mod[3,2]。
Mathematica虚拟全书中的相关内容
编辑- Your First Mathematica Calculations
- Arithmetic
- Some Mathematical Functions
- Getting Used to Mathematica
- Arbitrary-Precision Calculations