2.1 算术乘除:先乘除,后加减,括号内先算
乘法
乘法(multiplication)算式等号左端是被乘数(multiplicand)和乘数(multiplier),右端是乘积(product),如图2.1所示。乘法运算符读作乘(times或multiplied by)。乘法表(multiplication table或times table)是数字乘法运算的基础。
图2.1 乘法运算
图2.2所示为在数轴上可视化2×3=6。
图2.2 2×3=6在数轴上的可视化
介绍几个常用乘法符号。乘法符号×用于数字相乘,一般不用于两个变量相乘。而在线性代数中,×表示叉乘(cross product或vector product),完全是另外一回事。
在代数中,两个变量a和b相乘,可以写成ab;这种记法被称做隐含乘法(implied multiplication)。ab也可以写成a·b。
通常,圆点·不用在数字相乘,因为它容易和小数点(decimal point)混淆。线性代数中,a·b表示a和b两个向量的标量积(scalar product),这是本章后续要介绍的内容。
多提一嘴,乘法计算时,请大家多留意数值单位。举个例子,正方形的边长为1 m,其面积数值可以通过乘法运算1×1=1获得,而结果单位为平方米(m2)。有一些数值本身无单位(unitless),如个数、Z分数。Z分数也叫标准分数(standard score),是概率统计中的一个概念,Z分数是一个数与平均数的差再除以标准差的结果。
与乘法相关的常用英文表达见表2.1。
鸢尾花书会在《统计至简》一册详细介绍Z分数这个概念。
表2.1 乘法相关英文表达
Bk3_Ch2_01.py完成两个数乘法。Python中两个数字相乘用*(asterisk或star)。
阶乘
某个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积。比如,5的阶乘记作5!,对应的运算为
特别地,定义0的阶乘为0!=1。本书有两个重要的数学概念需要用到阶乘——排列组合和泰勒展开。
Python中可以用math.factorial()、scipy.special.factorial()、numpy.math.factorial()计算阶乘。为了帮助大家理解,Bk3_Ch2_02.py自定义函数求解阶乘。
累计乘积
对于一组数字,累计乘积(cumulative product)也叫累积乘积,得到的结果不仅仅是一个乘积,而是从左向右每乘一个数值得到的分步结果。比如,自然数1到10求累计乘积结果为
对应的累计乘积过程为
Bk3_Ch2_03.py利用numpy.linspace(1, 10, 10)产生1~10这十个自然数,然后利用numpy.cumprod()函数来求累计乘积。请大家自行研究如何使用numpy.arange(),并用这个函数生成1~10。
除法
除法(division)是乘法的逆运算(reverse operation of multiplication)。被除数(dividend或numerator)除以(over或divided by)除数(divisor或denominator)得到商(quotient),如图2.3所示。
图2.3 除法运算
除法运算有时可以除尽(divisible),如6可以被3除尽(six is divisible by three)。除法有时得到余数(remainder),如7除2余1。除法的结果一般用分数(fraction)或小数(decimal)来表达,详见表2.2。
表2.2 除法英文表达
Bk3_Ch2_04.py完成两个数的除法运算,除法运算符为正斜杠/。
Bk3_Ch2_05.py介绍如何求余,求余数的运算符为%。
分数
最常见的分数(fraction)是普通分数(common fraction或simple fraction),由分母(denominator)和分子(numerator)组成,分隔两者的是分数线(fraction bar)或正斜杠(forward slash)/。
非零整数(nonzero integer)a的倒数(reciprocal)是1/a。分数b/a的倒数是a/b。a、b均不为0。
表2.3中总结了常用分数英文表达。
表2.3 分数相关英文表达