第二章 矩阵的数值运算4课时
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例:
a(1,1)
1 2 3 a 4 5 6 7 8 9
a([1 2 3],3) a(1: 3,3) a(:,3)
a(2 : 3,1: 2)
Note:只要是赋过值的变量,不管是否在屏幕上显示过, 都存储在工作空间中,以后可随时显示或调用。变量名尽 可能不要重复,否则会覆盖 。 当一个指令或矩阵太长时,可用•••续行
二维数组变量的创建 数组元素的标识与寻访
2.1.1. 数组(array)的概念
数组定义:
按行(row)和列(column)顺序排列的实数或复数
的有序集,被称为数组。 数组中的任何一个数都被称为这个数组的元素, 由其所在的行和列标识,这个标识也称为数组 元素的下标或索引。Matlab将标量视为1×1的 数组。 1 2 3 4 5 对m行、n列的2维数组a: a= 2 22 23 24 25 计为m×n的数组a; 3 32 33 34 35 行标识、列标识均从1开始; 4 42 43 44 45 行标识从上到下递增; a(3, 4)=34 row is first 列标识从左到右递增。
Start表示新向量x的第一个元素;
新向量x的最后一个元素不能大于End ;
Increment可正可负,若负,则必须Start>End;若
正,则必须Start<End,否则创建的为空向量。
若Increment=1,则可简写为:x=Start:End。
第三种方法:利用函数linspace 函数linspace的基本语法 x= linspace(x1, x2, n) 该函数生成一个由n个元素组成的行向量; x1为其第一个元素; x2为其最后一个元素; x1、x2之间元素的间隔=(x2-x1)/(n-1)。 如果忽略参数n,则系统默认生成100个元素的行向 量。 【例2-4】键入并执行x= linspace(1,2,5) x=1.0000 1.2500 1.5000 1.7500 2.0000
例:<<a=[1 2 3;4 5 6;7 8 0]; b=[1;2;3]; c=a*b
c =14 32 23
例: << d=[-1;0;2]; f=pi*d f = -3.1416 0 6.2832
3. 乘除运算
在matlab中有两种矩阵除运算,矩阵左除和矩阵右除,\ 和/ 。如果A矩阵是非奇异方阵,则A\B和B/A运算可以实 现。A\B等效于A的逆左乘B矩阵,也就是inv(A)*B,而 B/A等效于A矩阵的逆右乘B矩阵,也就是B*inv(A)。
双下标到单下标的转换
【例4-5】 sub2ind函数-双下标转换为单下标 >>A = [17 24 1 8; 2 22 7 14; 4 6 13 20]; >>sub2ind(size(A),2,2) >>A(5) 单下标到双下标的转换 【例4-6】 ind2sub函数-单下标转换为双下标 >>b = zeros(3); >>b(:) = 1:9 >>IND = [3 4 5 6] >>[I,J] = ind2sub(size(b),IND)
二维数组可以‚单下标‛方式或‚全下标‛方式访
问、赋值; ‚单下标‛方式赋值时,等号两边涉及的元素个数 必须相等; ‚全下标‛方式赋值时,等号右边数组的大小必须 等于原数组中涉及元素构成的子数组的大小。
【例4-3】二维数组元素与子数组的寻访与赋值 >>aa=zeros(2, 4) %创建2*4的全0数组 aa = 0 0 0 0 0 0 0 0 >>aa(:)=1:8 %全元素赋值法
此外,还有伴随矩阵、稀疏矩阵、魔方矩阵、对角矩阵、范 德蒙等矩阵的创建,就不一一介绍了。 Note:matlab严格区分大小写字母,因此a与A是两个不同 的变量。 matlab函数名必须小写。
2.2 矩阵运算
矩阵运算包括:矩阵的四则运算、特征根、奇异解的 求解等。
1. 矩阵加、减(+,-)运算 规则: 相加、减的两矩阵必须有相同的行和列,两矩阵对应元 素相加减。 矩阵与标量的加减运算是标量与矩阵的所有元素分别进 行加减操作。 2. 矩阵乘()运算 规则: A矩阵的列数必须等于B矩阵的行数 标量可与任何矩阵相乘。
数组的分类
一维数组,也称为向量(vector) 。 行向量(row vector)、列向量(column vector)。 二维数组(矩阵matrix)。 多维数组。
有效矩阵:每行元素的个数必须相同,每 列元素的个数也必须相同。
行向量 列向量 a(2,1)=3 a(1,2)=2 b(3)=3 c(2)=2
4. 矩阵乘方—— a^n,a^p,p^a
a ^ p —— a 自乘p次幂 方阵 >1的整数
P=0,结果为与a相同的矩阵,当p<0,只有在a的逆存在 时才可定义a ^ p ,其意义为inv(a) ^ (- p ) 例: >> a=[1,2,3;4,5,6;7,8,9];a^2 ans =30 36 66 81 42 96
第二章 MATLAB的数值计算
matlab 具有出色的数值计算能力,占 据世界上数值计算软件的主导地位
数值运算的功能
创建数组 矩阵运算 数值统计 多项式运算 线性方程组 微分方程的数值解 函数优化 插值计算
2.1
Matlab矩阵(数组)的表示
数组的概念
一维数组变量的创建
用matlab函数创建矩阵
空阵 [ ] — matlab允许输入空阵,当一项操作无结果 时,返回空阵。 rand(1,N)— 产生[0 1]上均匀分布的随机序列,长度为N randn(1,N)— 产生均值为0,方差为 1的高斯随机序列, 即白噪声序列,长度N eye —— 单位矩阵 zeros ——全部元素都为0的矩阵 ones ——全部元素都为1的矩阵
2.1.2、创建一维数组变量
第一种方法:使用方括号‚[ ]”操作符 【例2-1】创建数组(行向量)a=[1 3 pi 3+5i]
>>a=[1 3 pi 3+5*i] %or a=[1, 3, pi, 3+5*i] a= 1.0000 3.0000 3.1416 3.0000 + 5.0000i 所有的向量元素必须在操作符‚[ ]”之内; 向量元素间用空格或英文的逗点‚,”分开。 第二种方法:使用冒号‚:”操作符 >>b=1:10 b=1 2 3 4 5 6 7 8 9 10
-0.0000
5. 矩阵的其它运算
inv(A) —— 矩阵求逆
det(A) —— 矩阵A所对应的行列式的值 eig (A)—— 矩阵的特征值及特征向量 diag (A) —— 提取A对角元素或生成对角矩阵 sqrtm(A) ——矩阵A的平方根 logm(A) ——矩阵A的自然对数 expm(A) —— A的矩阵指数函数
同学们可以在实验时察看x= linspace(1,2)执行结果。
课外:利用函数logspace
2.1.3、创建二维数组变量
Leabharlann Baidu
第一种方法:使用方括号‚[ ]”操作符 使用规则 数组元素必须在‚[ ]”内键入; 行与行之间须用分号‚;” 间隔; 行内元素用空格或逗号‚,”间隔。 【例3-1】键入并执行a2=[1 2 3;4 5 6;7 8 9] a2= 1 2 3 4 5 6 7 8 9 【例3-2】键入并执行a2=[1:3;4:6;7:9] %结果同上
数组元素的标识 ‚全下标(index)‛标识 经典数学教科书采用‚全下标‛标识法:每一维 应一个下标。
如对于二维数组,用‚行下标和列下标‛标识数组的元素,
a(2,3)就表示二维数组a的‚第2行第3列‛的元素。 对于一维数组,用一个下标即可,b(2)表示一维数组b的 第2个元素,无论b是行向量还是列向量。
aa=
注意元素的排列顺序
1 3 5 7 2 4 6 8 >>aa([2 5 8]) %单下标方式寻访多个元素 ans = 2 5 8
某一维的末尾 元素下标
>>aa(:,end)
ans = 7 30
>>aa(end,:)
ans = 10 1
1 30
>>aa(end,[2:4])
ans = 1 1 30
例:利用矩阵除法求解线性方程:
3 2 1 x 5 5 0.7 2 y 2 7 4 3 z 7
>> A=[ 3 2 1;5 0.7 2;7 4 3];b=[5;2;7];X=A\b X= 2.2609 1.7391 -5.2609
【例3-5】 reshape的使用演示 >>a=-4:4 a= -4 -3 -2 -1 0 1 2 3 4 >>b=reshape(a, 3, 3) b= -4 -1 2 -3 0 3 -2 1 4
数组元素的排列顺序,从上到下按列排列,先
排第一列,然后第二列,… 要求数组的元素总数不变。
2.1.3、数组元素的标识与寻访
a.^2 有什么不同?
102 126 150
当一个方阵有复数特征值或负实特征值时,非整数幂是复数阵。
例: >> a=[1,2,3;4,5,6;7,8,9];a^0.5 ans = 0.4498 + 0.7623i 0.5526 + 0.2068i 0.6555 -0.3487i 1.0185 + 0.0842i 1.2515 + 0.0228i 1.4844 - 0.0385i 1.5873 - 0.5940i >> eig(a) ans = 16.1168 -1.1168 1.9503 - 0.1611i 2.3134 + 0.2717i %求矩阵a的特征值
【例2-2】创建以1~10顺序排列整数为元素的行向量b。
【例2-3】键入并执行c=1:2:10和d=1:2:9 >> c=1:2:10 c=1 3 5 7 9 >>d=1:2:9 d= 1 3 5 7 9 利用冒号‚:”操作符创建行向量的基本语法格式: x=Start:Increment:End
‚单下标‛(linear index)标识
所谓‚单下标‛标识就是用一个下标来表明元素 在数组的位置。
对于二维数组,
‚单下标‛编号:设想把二维数组的所 有列,按先后顺序首尾相接排成‚一维长列‛,然后自上 往下对元素位置执行编号。
两种‚下标‛标识的变换:sub2ind、ind2sub
>> aa=[1:4;5:8] >> aa([2 5 8]) =[10 20 30] aa = 1 2 20 4 10 6 7 30 >>aa(:,[2 3])=ones(2) %双下标方式寻访并修改 aa = 1 1 1 7 10 1 1 30
>>aa(:,end-1)
ans = 1 1
>>aa ([4 6])=6:7
aa = 1 1 1 7 10 6 7 30
>>aa(:, end:-1:3)
ans = 7 1 30 1
>>aa(end,[2:end-1])
What is the result?
【例4-4】 size、length函数 >>a=ones(4,6)*6 >>m=size(a) >>len=length(a) >>b=1:5; size函数返回变量的大小,即 >>length(b) 变量数组的行列数 >>c=b‟ length函数返回变量数组的最 >>length(c) 大维数
【例3-3】由向量构成二维数组。 >>a=[1 2 3]; b=[2 3 4]; >>c=[a;b]; >>c1=[a b]; 第二种方法:函数方法 函数ones(生成全1矩阵)、zeros (生成全0矩阵) 、reshape
“help elmat”获得基本的矩阵生成和操作函数列表
【例3-4】创建全1的3x3数组。 >>ones(3) 【例3-5】创建全1的3x4数组。 >>ones(3,4)
trace(A) —— 求矩阵的迹
rank(A) ——求矩阵的秩
6. 矩阵的一些特殊操作
矩阵的变维
例:>> a=[1 2 3 4;5 6 7 8;9 10 11 12] a= 1 5 9 2 3 4 6 7 8 10 11 12 % 把指定的矩阵改变形状,但是元素个数不变