
1.2 如何进行初等数学运算
1.2.1 加减乘除四则运算
作为MATLAB的基本数学运算,数值型数据之间加减乘除四则运算如图1.14所示。
经验分享:在MATLAB中进行数值型数据间的加减乘除运算时,运算的优先级与一般的加减乘除运算相同,即乘除运算的优先级高于加减运算优先级。在图1.14的演示示例中,通过键盘在命令行窗口内共输入了4个表达式,创建了4个变量,即变量A、B、C和D。在MATLAB中,i和j均用于表示复数的虚部。另外,在MATLAB中,圆周率π用pi表示。

图1.14 数值型数据加减乘除四则运算
1.2.2 幂、指数、对数运算
基本初等运算包括指数运算、对数运算、幂运算。指数运算与幂运算在运算形式上均能统一为y=ab。另外,对于数值型数据而言,在MATLAB中进行指数运算或者幂运算能统一为幂运算,即计算a的b次幂。通过图1.15来介绍数值型数据基本初等运算。

图1.15 数值型数据基本初等运算
经验分享:MATLAB中的幂运算符为“^”与“.^”(后续章节将有介绍)。需要经验分享的是,在MATLAB中进行对数运算时,自然对数只能用log表示,而不是ln。相应地,以10为底的自然对数与以2为底的自然对数分别为log10和log2。此外,自然常数e在MATLAB中统一以自然常数e为底的指数函数exp(x)来表示,所以,图1.15中表达式C=log(exp(1))表示的是C=ln(e)。
1.2.3 三角函数运算
MATLAB中常用的三角函数如表1.8所示,图1.16所示是调用sin(x)进行求值的例子,读者可以比较在MATLAB中sin(60)与sin(pi/3)的区别。
表1.8 MATLAB中常用的三角函数


图1.16 调用sin(x)函数进行求值
1.2.4 多项式运算
在MATLAB中,多项式是利用一个行向量来表示的,它的系数是按照降序方式排列的。例如,多项式p1(x)=x3+21x2+20x可以表示为:
P1=[121200] %常数项为0
1.多项式求值
语法:
polyval(p, s)
说明:p为多项式系数,s为给定的数值或矩阵。
【例1.1】 当x=2以及x=[0,0.5,1,1.5,2,2.5,3]时,计算p1(x)=x3+21x2+20x多项式的值,其运行效果如图1.17所示。
2.多项式求根
语法:
r=roots(p)
说明:p为多项式;r为计算的多项式的根,以列向量的形式保存。
与函数roots相反,根据多项式的根来计算多项式的系数,可以用poly函数来实现。

图1.17 例1.1的运行效果
语法:
p=poly(r)
说明:p为多项式;r为计算的多项式的根,以列向量的形式保存。
【例1.2】 计算多项式p1(x)=x3+21x2+20x的根以及由多项式的根得出系数,如图1.18所示。

图1.18 例1.2的运行效果
3.多项式部分分式展开
在许多的工程实际应用中,例如傅立叶变换、拉普拉斯变化和Z变换都会出现两个多项式的比值,这时就需要对多项式进行部分分式展开运算。
用residue函数来实现将分式表达式进行多项式的部分分式展开:

语法:
[r, p, k]=residue(b, a)
说明:b和a分别是分子和分母多项式系数行向量;r是[r1 r2 … rn]行向量,表示部分分式展开的常数项;p为[p1 p2 … pn]极点行向量;k为余数。
【例1.3】 将表达式进行部分分式展开,如图1.19所示。

图1.19 例1.3的运行效果
程序分析:表达式展开结果为
。
4.多项式的加减法
MATLAB没有提供专门进行多项式加减运算的函数,事实上,多项式的加减运算,就是其对应系数向量的加减运算。加减运算时,向量的大小必须相同,缺项用零补齐。
【例1.4】 求多项式x3-2x2+5x+3和6x-1的和,如图1.20所示。

图1.20 例1.4的运行效果
程序分析:多项式x3-2x2+5x+3和6x-1的和为x3-2x2+11x+2。
5.多项式的乘法和除法
多项式乘法的语法如下:
p=conv(pl, p2)
说明:p是多项式p1和p2的乘积多项式。
多项式的除法的语法:
[q, r]=deconv(pl, p2)
说明:除法不一定会除尽,会有余子式。多项式p1被p2除的商为多项式q,而余子式是r。
【例1.5】 计算表达式s(s+1)(s+20),如图1.21所示。

图1.21 例1.5的运行效果
6.多项式求导
对多项式求导的函数是polyder,其调用格式为:
p=polyder(p1) ;求多项式p1的导函数 p=polyder(p1, p2) ;求多项式p1和p2乘积的导函数 [p, q]=polyder(p1, p2) ;求多项式p1和p2之商的导函数,p、q分别是导函数的分子和分母
【例1.6】 求有理分式f(x)=(x-1)/(x2-x+3)的导函数,如图1.22所示。
结果表明:f′(x)=(-x2+2x+2)/(x4-2x3+7x2-6x+9)。

图1.22 例1.6的运行效果