概率论与数理统计实验指导书
d =
16 30 35 61
当然, 矩阵乘法也可以像数组乘法那样, 进行矩阵元素的相乘, 此时要求进行相乘的两矩阵大小完全相同, 用的运算符号为“.*”.
例 1-18 进行矩阵乘法“*”运算, 比较矩阵元素间乘法“.*”运算. 在命令窗口中输入:
a = [1 2 0; 2 5-1; 4 10 -1]; c= [1 2 4; 2 5 10; 0 -1-1];
d = c.*a %注意比较 e= a.*c, 可见 a.*c = c.*a. e = a.*c
回车后显示:
d =
1 4 0 4 25 -10 0 -10 1 e=
1 4 0 4 25 -10 0 -10 1
在 MATLAB 中, 矩阵的除法运算有两个运算符号, 分别为左除“\\”与右除 “/”. 矩阵的右除运算速度要慢一点, 而左除运算可以避免奇异矩阵的影响. 对于方程Ax = b, 若此方程为超定方程, 则使用除法运算符“\\”与“/”可以自动找到使误差 Ax-b 的平方和最小的解. 若此方程为不定方程, 则使用除法运算符“\\” 与“/”求得的解至多有 Rank(A)(矩阵 A 的秩)个非零元素, 而且求得的解是这种 类型的解中范数最小的一个.
例 1-19 进行矩阵除法运算: 解矩阵方程 Ax= b. 在命令窗口中输入:
a =[21 34 20; 5 78 20; 21 14 17; 34 31 38]; b = [10 20 30 40] ';
x = b\\a %方程 x=A -1 b, A 存在逆矩阵.
回车后显示:
x =
0.7667 1.1867 0.8767
上例的方程 Ax =b 为超定情况. 注意, 结果矩阵 X 是列向量形式. 例 1-20 进行矩阵除法运算: 解矩阵方程 Ax= b. 在命令窗口中输入:
a =[21 34 20 5; 78 20 21 14; 17 34 31 38]; %A 为 3 行 4 列矩阵. b = [10 20 30] ';
x = b\\a %对于方程 Ax = b, A 不存在逆矩阵.
回车后显示:
x =
1.6286
11
概率论与数理统计实验指导书
1.2571 1.1071 1.0500
上例的方程 Ax =b 为不定情况. 它有三个方程、四个未知量, 理论上有无 穷多解. 这里的解是使解中范数最小的一个.
(2) 矩阵与标量的四则运算
矩阵与标量间的四则运算和数组与标量间的四则运算完全相同, 即矩阵 中的每个元素与标量进行加、减、乘、除四则运算. 需要说明的是, 当进行除 法运算时, 标量只能做除数.
例 1-21 进行矩阵与标量的四则运算. 在命令窗口中输入:
b =[21 34 20; 78 20 21; 17 34 31]; c = b+2 d= b/2
回车后显示:
c =
23 36 22 80 22 23 19 36 33 d=
10.5000 17.0000 10.0000 39.0000 10.0000 10.5000 8.5000 17.0000 15.5000
5. 函数求导数、微分和积分 (1) 数值微分与符号微分
微分是高等数学中最基础的内容之一. 在 MATLAB 中, 符号微分由函数 “diff”来实现. diff 函数可同时计算数值微分和符号微分. 当输入的参数是数值时, MATLAB 能非常巧妙地对其进行数值微分; 当输入的参数是符号字符串时, MATLAB 同样能非常巧妙地对其进行符号微分. diff 函数的调用格式如下:
· diff(f) % 对 findsym函数返回的独立变量求微分, f 为符号表达式; · diff(f,'a ') % 对 a 变量求微分, f 为符号表达式;
· diff(f, n) % 对findsym函数返回的独立变量求n次微分, f为符号表达式; · diff(f, 'a ',n) 或 diff(f,n, 'a ') % 对变量 a求 n 次微分, f 为符号表达式.
例 1-22 对函数在命令窗口中输入:
syms x; % syms 创建变量x.
f = sym(' (x-1)^3/(x-1) '); % sym和单引号创建变量符号表达式. b = diff(f); c= diff(f, '2')
求一阶导数和.
回车后显示:
b=
2*x-2 c=
12
概率论与数理统计实验指导书
2.0000
同样地, 函数diff也可对符号矩阵进行运算. 此时, 它是对符号矩阵中的每个元素进行微分.
例 1-23 对符号矩阵进行微分运算: 求矩阵函数在命令窗口中输入:
f= sym(' [cos(x), sin(x); x^2+x+1 tan(x)] '); b= diff(f)
的导数.
回车后显示:
b =
[ -sin(x), cos(x) ] [ 2*x+1, 1+tan(x)^2]
(2) 数值积分与符号积分
由高等数学可知, 积分比微分复杂得多, 很多情况下, 积分不一定能成功. 当在 MATLAB 中进行符号积分找不到原函数时, 它将返回未经计算的命令.符号积分由函数“int”来实现. int 函数的调用格式如下表示:
·int(f) %对findsym函数返回的独立变量求不定积分, f为符号表达式; ·int(f, v) %对v 变量求不定积分, f 为符号表达式;
·int(f, a, b) %对findsym函数返回的独立变量求从a到b的定积分, f为符号表达式; ·int(f, v, a, b) %对v变量求从a到b的定积分, f为符号表达式. 例 1-24 计算含参变量的不定积分.
在命令窗口中输入:
syms u alpha; %syms 创建变量 u alpha. int(sin(alpha*u), alpha) ;
回车后显示:
ans =
-1/u*cos(alpha*u)
例 1-25 计算不定积分在命令窗口中输入:
syms x
int(1/(1+x^2))
.
回车后显示:
ans =
actan(x)
例 1-26 计算不定积分在命令窗口中输入:
.
int('log(x)/exp(x^2) ')
回车后显示:
Warning: Explicit integral could not be found.
In C:\\MATLAB6p5\\toolbox\\symbolic\\@sym\\int.m at line 58 ans =
int(log(x)/ exp(x^2), x)
13
概率论与数理统计实验指导书
上例中, 当找不到原函数时, 返回未经计算的函数. 与函数diff一样, 函数int也可对符号矩阵进行运算. 此时, 它是对符号矩阵中的每个元素进行积分.
例 1-27 对符号矩阵进行积分运算.
在命令窗口中输入:
syms t alpha;
int([exp(t), exp(alpha*t)],t)
回车后显示:
ans =
[exp(t), 1/alpha*exp(alpha*t)]
5. 概率计算中常用的函数
在古典概型中, 计算概率时, 经常要用到阶乘、组合数等, 在MATLAB中, 有相应的函数可以计算阶乘、组合.
(1) 计算阶乘
在MATLAB中, 用函数factorial计算阶乘. 基本调用格式: ·N=factorial(n) %计算出 n的阶乘, 并赋给N. 例 1-28 计算阶乘 3!. 在命令窗口中输入:
N=factorial(3) % 计算3!, 赋给变量N.
回车后显示:
N =
6
在使用这一函数时, 要注意, 当n不超过170时, 可以正确地计算出n的阶乘; 当n超过 170后, 因为超过了计算机中整数的表示范围, 所以显示为Inf(即无穷大).
(2) 双阶乘的计算
在 MATLAB没有直接计算双阶乘的函数, 但可以用连乘积函数prod来计算. 当n是偶数时, 双阶乘 n!!=2*4*?*n. 计算双阶乘用N=prod(2:2:n).
例 1-29 计算偶数双阶乘 8!!. 在命令窗口中输入:
N=prod(2:2:8) % 计算偶数双阶乘 8!!.
回车后显示:
N =
384
当 n 是奇数时, 双阶乘 n!!=1*3*?*n. 计算双阶乘用N=prod(1:2:n). 例 1-30 计算奇数双阶乘 9!!. 在命令窗口中输入:
N=prod(1:2:9) %计算奇数双阶乘 9!!.
回车后显示:
N =
945
也可以用prod函数计算阶乘. 比如计算n的阶乘, 只要在命令窗口中输入: N=prod(1:n), 回车后就得到了n的阶乘. 使用这个函数也要注意n不能过大.
(3) 计算组合数
计算组合数的函数是 nchoosek. 其基本调用格式是:
· N=nchoosek(n, k) % 计算从n个元素中取k个的组合数:
14
概率论与数理统计实验指导书
例 1-31 计算组合在命令窗口中输入:
.
N=nchoosek(7,3) % 计算组合.
回车后显示
N =
35
三、 实验结论与总结
输入的每一条命令, 可以直接回车; 也可以用逗号“,”结束后, 再回车. 这两种方式回车后, 运行的结果都直接显示在命令窗口中. 如果命令的后面用分 号“;”结束, 回车后的结果不会显示在命令窗口中. 在前面的各例中, 由于每 一个语句输入后, 都是直接回车, 所以运行的结果显示在命令窗口中. 命令运 行后, 无论是否在命令窗口中显示结果, 运行的结果, 都存储在工作空间中.
除了上面所给出的创建向量和矩阵的方法, 还有其它的方法创建向量或 矩阵. 例如, 用linspace可以生成等差数列; 用logspace可以生成等比数列; 向 量可以连接成更大的向量; 矩阵也可以连接成更大的矩阵, 以及一些生成特殊矩阵的函数. 矩阵通过运算也可以生成新的矩阵, 等等.
注意, 进行数组的四则运算、幂、开方等运算, 与矩阵的四则运算、 幂、开方等运算有区别. 求导、微分和积分等运算更显示了 MATLAB 工具的 优越特点. 如果超出运算的要求范围, 求出的值为NaN, 这是MATLAB中的一 个符号, 表示不是一个数(Not-a-Number).
四、 实验习题 1.已知矩阵方程,其中,
求矩阵X. 2. 求复合函数3.求不定积分4. 计算定积分
15
和
和
的导数.