1、 求 组 合 数
求 k
nC ,则输入:
nchoosek(n,k)
例:nchoosek(4,2) = 6.
2、 求 阶 乘
求 n!.则输入:
Factorial(n).
例:factorial(5) = 120.
3、 求 全 排 列
perms(x).
例:求 x = [1,2,3];
Perms(x),输出结果为:
ans =
3
3
2
2
1
1
2
1
3
1
2
3
1
2
1
3
3
2
4、 求 指 数
求 a^b:Power(a,b) ;
例:求 2^3 ;
Ans = pow(2,3) ;
5、 求 行 列 式
求矩阵 A 的行列式:det(A);
例:A=[1 2;3 4] ;
则 det(A) = -2 ;
6、 求 矩 阵 的 转 置
求矩阵 A 的转置矩阵:A’
转置符号为单引号.
7、 求 向 量 的 指 数
求向量 p=[1 2 3 4]'的三次方:p.^3
例:
p=[1 2 3 4]'
A=[p,p.^2,p.^3,p.^4]
结果为:
注意:在 p 与符号”^”之间的”.”不可少.
8、 求 自 然 对 数
求 ln(x):Log(x)
例:log(2) =
0.6931
9、 求 矩 阵 的 逆 矩 阵
求矩阵 A 的逆矩阵:inv(A)
例:a= [1 2;3 4];
则
10、 多 项 式 的 乘 法 运 算
函数 conv(p1,p2)用于求多项式 p1 和 p2 的乘积。这里,p1、p2 是两个多项式系数向量。
例 2-2 求多项式 4
x
38
x
和 22
10
x
x 的乘积。
3
命令如下:
p1=[1,8,0,0,-10];
p2=[2,-1,3];
c=conv(p1,p2)
11、 多 项 式 除 法
函数[q,r]=deconv(p1,p2)用于多项式 p1 和 p2 作除法运算,其中 q 返回多项式 p1 除
以 p2 的商式,r 返回 p1 除以 p2 的余式。这里,q 和 r 仍是多项式系数向量。
例 2-3 求多项式 4
x
38
x
除以多项式 22
10
x
x 的结果。
3
命令如下:
p1=[1,8,0,0,-10];
p2=[2,-1,3];
[q,r]=deconv(p1,p2)
12、 求 一 个 向 量 的 最 大 值
求一个向量 x 的最大值的函数有两种调用格式,分别是:
(1)max(x):返回向量 x 的最大值,如果 x 中包含复数元素,则按模取最大值。
(2)[y, i]=max(x):返回向量 x 的最大值存入 y,最大值的序号存入 i,如果 x 中包含
复数元素,则按模取最大值。
求向量 x 的最小值函数是 min(x),用法与 max(x)完全相同。
13、 求 矩 阵 的 最 大 值 和 最 小 值
求矩阵 A 的最大值的函数有三种调用格式,分别是:
(1)max(A):返回一个行向量,向量的 i 个元素是矩阵 A 的第 i 列的最大值。
(2)[y,u]=max(A):返回行向量 y 和 u,y 纪录 A 的每列的最大值,u 纪录每列最大值
的行号。
求矩阵 A 的最小值的函数 min(A),用法与 max(A)完全相同。
14、 求 和 与 求 积
数据序列求和与求积函数是 sum 和 prod,其使用方法类似。设 x 是一个向量,A 是一
个矩阵,函数的调用格式为:
sum(x):返回向量 x 各元素之和。
Sum(A,1):返回矩阵 A 的列求和后的行向量
Sum(A,2):返回矩阵 A 的行求和后的列向量
prod(x):返回向量 x 各元素的乘积。
sum(A):返回一个行向量,其第 i 个元素是 A 的第 i 列的元素之和。
prod(A):返回一个行向量,其第 i 个元素是 A 的第 i 列的元素乘积。
sum(A,dim):当 dim 为 1 时,该函数等同于 sum(A);当 dim 为 2 时,返回一个列向量,
其第 i 个元素是 A 的第 i 行的元素之和。
prod(A,dim):当 dim 为 1 时,该函数等同于 prod(A);当 dim 为 2 时,返回一个列向
量,其第 i 个元素是 A 的第 i 行的元素乘积。
15、 平 均 值 、 标 准 方 差
MATLAB 提供了 mean,std 函数来计算平均值、标准方差或方差。这些函数的调用方
法如下:
mean(x):返回向量 x 的算术平均值。
std(x):返回向量 x 的标准方差。
对于矩阵 A,mean 函数的一般调用格式为:
y=mean(A,dim)
这里,dim 取 1 或 2。当 dim=1 时,返回一个行向量 y,y 的第 i 个元素是 A 的第 i 列元素的
平均值;当 dim=2 时,返回一个列向量 y,y 的第 i 个元素是 A 的第 i 行元素的平均值。
对于矩阵 A,std 函数的一般调用格式为:
y=std(A,flag,dim)
这里,dim 取 1 或 2。当 dim=1 时,求各列元素的标准方差;当 dim=2 时,求各行元素的标
准方差。flag 取 0 或 1,当 flag=0 时,按 1 计算标准方差;当 flag=1 时,按 2 计算方差。
缺省 flag=0,dim=1。
16、 相 关 系 数
对于两组数 据序列
x
[
,
x x
1
2
,
,
x
]n
,
y
[
,
y y
1
2
,
,
y
]n
,其相关系 数的计算,
MATLAB 提供了 corrcoef 函数来计算相关系数,corrcoef 函数的调用格式为:
r=corrcoef(x,y)
17、 排 序
对向量元素的进行排序是一种经常性的操作,MATLAB 提供了 sort 函数对向量 x 进行
排序。
y=sort(x):返回一个对 x 中元素按升序排列后的向量 y。
[y,i]=sort(x):返回一个对 x 中的元素按升序排列的向量 y,而 i 记录 y 中元素在 x 中
的位置。
18、 多 项 式 的 求 导
对多项式求导数的函数是:
p=polyder(p1):求多项式 p1 的导函数。
p=polyder(p1,p2):求多项式 p1 和 p2 乘积的导函数。
[p,q]=polyder(p1,p2):求多项式 p1 和 p2 之商的导函数,p、q 是导函数的分子、分母。
1
x
x
3
2
x
的导函数。
例: 求有理分式
( )
f x
命令如下:
p1=[1,-1];
p2=[1,-1,3];
[p,q]=polyder(p1,p2)
19、 多 项 式 的 求 值
polyval 函数用来求代数多项式的值,其调用格式为:
y=polyval(p,x)
若 x 为一数值,则求多项式在该点的值;若 x 为向量,则对向量中的每个元素求其多项
式的值。
例: 求多项式
( )
p x
2
x
2
x
1
在点 1,2,3,4 的值。
命令如下:
p=[1,2,1];
x=1:4;
y=polyval(p,x)
y =
4
9
16
25
roots 函数用来求代数多项式的根,其调用格式为:
x=roots(p)
如果 x 为向量,则 p=poly(x)可以建立一个以 x 为其根的多项式。
20、 多 项 式 的 求 根
roots 函数用来求代数多项式的根,其调用格式为:
x=roots(p)
如果 x 为向量,则 p=poly(x)可以建立一个以 x 为其根的多项式。
例:求多项式
( )
p x
3
x
2
6
x
11
x
的根。
6
命令如下:
p=[1,-6,11,-6];
x=roots(p)
x =
3.0000
2.0000
1.0000
如果键入命令 p=poly(x),则可得到以 3,2,1 为根的三次多项式的系数
p =
1.0000
-6.0000
11.0000
-6.0000
21、 单 变 量 非 线 性 方 程 的 求 根
MATLAB 还提供了一个 fzero 函数,可以用来求单变量非线性方程的求根。该函数的调
用格式为:
z=fzero(‘fname’,x0)
其中 fname 是待求根的函数文件名,x0 为搜索的起点。一个函数可能有多个根,但 fzero 函
数只能给出离 x0 最近的那个根。
在 0
2 0
x 附近的根。
0.5
例: 求函数 ( )
f x
x
10
x
命令如下:
fzero('x-10^x+2',0.5)
ans =
0.3758
22、 求 单 变 量 函 数 的 最 小 值 点
其调用格式为:
x=fminbnd(‘fname’,x1,x2)
这里,fname 是目标函数名,x1 和 x2 限定自变量的取值范围,而 x0 是搜索起点的坐标。
例:求一元函数
( )
f x
3
x
2
x
在[0,5]内的最小值点。
5
命令如下:
fminbnd('x^3-2*x-5', 0, 5)
ans =
0.8165
23、 求 多 变 量 函 数 的 最 小 值 点
其调用格式为:
x=fminsearch(‘fname’,x0)
例: 求多元函数
( ,
, )
f x y z
x
y
4
2
x
2
z
y
在
2
z
(
1 1 1
,
2 2 2
,
)
附近的最小值。
建立函数文件 f.m。
function w=f(p)
x=p(1);
y=p(2);
z=p(3);
w=x+y^2/(4*x)+z^2/y+2/z;
调用 fminsearch 函数求多元函数在[1/2,1/2,1/2]附近的最小值点。
w=fminsearch('f ',[1/2,1/2,1/2])
w =
0.5000
1.0000
1.0000
计算多元函数的最小值。
f(w)
ans =
4.0000
24、 求 函 数 的 最 大 值 点
MATLAB 没有专门提供求函数最大值点的函数,当需要求函数在区间(a,b)上最大值点
时,可将它转化为求-f(x)在(a,b)上的最小值点。
25、 建 立 单 个 符 号 量(sym 函 数 )
sym 函数用来建立单个符号量,一般调用格式为:
符号变量名=sym(‘符号字符串’)
该函数可以建立一个符号量,符号字符串可以是常量、变量、函数或表达式。
例如,a=sym(‘a’)将建立符号变量 a,此后,用户可以在表达式中使用变量 a 进行各种
运算。符号变量 a 和在其他过程中建立的非符号变量 a 是不同的。一个非符号变量在参与运
算前必须赋值,变量的运算实际上是该变量所对应值的运算,其运算结果是一个和变量类型
对应的值,而符号变量参与运算前无须赋值,其结果是一个由参与运算的变量名组成的表达
式。下面的命令及其运算结果,说明了符号变量与非符号变量的差别。
在 MATLAB 命令窗口,输入以下命令:
a=sym('a');
b=sym('b');
p1=sym('pi');
a=sym('3');
b=sym('4');
p2=pi;
x=3;
y=4;
sin(p1/3)
ans =
1/2*3^(1/2)
sin(p2/3)
ans =
0.8660
%定义符号变量 a,b
%定义符号常量
%定义数值常量
%符号计算
%数值计算
cos((a+b)^2)-sin(pi/4) %符号计算
ans =
cos(49)-1/2*2^(1/2)
cos((x+y)^2)-sin(pi/4) %数值计算
ans =
-0.4065
26、 建 立 多 个 符 号 量(syms 函 数)
函数 sym 一次只能定义一个符号变量,使用不方便。MATLAB 提供了另一个函数 syms,
一次可以定义多个符号变量。syms 函数的一般调用格式为:
syms 符号变量名 1 符号变量 2 … 符号变量 n
用这种格式定义符号变量时,变量间用空格而不要用逗号分隔。例如,用 syms 函数定
义 4 个符号变量 a,b,命令如下:
syms a b
27、 建 立 符 号 表 达 式
含有符号对象的表达式称为符号表达式。建立符号表达式有以下 3 种方法:
(1)利用单引号来生成符号表达式。例如
y='1/sqrt(2*x)'
y =
1/sqrt(2*x)
(2)利用 sym 函数建立符号表达式。例如
z=sym('3*x^2-5*y+2*x*y+6')
z =
3*x^2-5*y+2*x*y+6
A=sym('[a,b;c,d]')
A =
[ a, b]
[ c, d]
第一条命令建立一个符号函数表达式,第二条命令生成一个符号矩阵。
(3)利用已经定义的符号变量组成符号表达式。例如
syms x y;
z=3*x^2-5*y+2*x*y+6
z =
3*x^2-5*y+2*x*y+6
28、 符 号 表 达 式 中 变 量 的 确 定
%定义 4 个符号变量
%定义 1 个符号常量
利用函数 findsym(s)可以确定符号表达式 s 中的全部符号变量。例如:
syms a b x y;
c=sym('3');
s=3*x+y;
findsym(s)
ans =
x, y
findsym(5*x+2)
ans =
x
findsym(a*x+b*y+c) %符号变量 c 不会出现在结果中
ans =
a, b, x, y
29、 符 号 表 达 式 四 则 运 算
符号表达式的加、减、乘、除和幂运算可分别由函数 symadd、symsub、symmul、symdiv
和 sympow 来实现。例如
f='2*x^2+3*x-5'
f =
2*x^2+3*x-5
g='x^2-x+7'
g =
x^2-x+7
symadd(f,g)
ans =
3*x^2+2*x+2
sympow(f,'2*x')
ans =
(2*x^2+3*x-5)^(2*x)
%加法运算
%乘幂运算
30、 符 号 表 达 式 的 因 式 分 解 与 展 开
符号表达式的因式分解和展开运算,可用函数 factor 和 expand 来实现,其调用格式为:
factor(s):对符号表达式 s 分解因式。
expand(s):对符号表达式 s 进行展开。
例如:
syms x y;
s1=x^3-6*x^2+11*x-6
s1 =
x^3-6*x^2+11*x-6
factor(s1)
ans =
(x-1)*(x-2)*(x-3)
s2=(x-y)*(x+y)
s2 =
(x-y)*(x+y)
expand(s2)
ans =
x^2-y^2
31、 符 号 表 达 式 与 数 值 表 达 式 之 间 的 转 换
利用函数 sym 可以将数值表达式转换成符号表达式。例如:
sym(1.5)
ans =
3/2