第二讲 矩阵的数值运算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18: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
【例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 Start表示新向量x的第一个元素; 新向量x的最后一个元素不能大于End ; Increment可正可负,若负,则必须Start>End;若 正,则必须Start<End,否则创建的为空向量。 若Increment=1,则可简写为:x=Start:End。
6. 矩阵的一些特殊操作
矩阵的变维
例:>> a=[1 2 3 4;5 6 7 8;9 10 11 12] a= 1 2 3 4 5 6 7 8 9 10 11 12 >> b=reshape(a,4,3) b= 1 6 11 5 10 4 9 3 8 2 7 12 % 把指定的矩阵改变形状,但是元素个数不变
“单下标”(linear index)标识 所谓“单下标”标识就是用一个下标来表明元素在 数组的位置。
对于二维数组, “单下标”编号:设想把二维数组的所有 列,按先后顺序首尾相接排成“一维长列”,然后自上往下 对元素位置执行编号。
两种“下标”标识的变换:sub2ind、ind2sub
>> aa([2 5 8]) =[10 20 30] aa = 1 3 20 7 10 4 6 30 >>aa(:,[2 3])=ones(2) %双下标方式寻访并修改 aa = 1 1 1 7 10 1 1 30 二维数组可以“单下标”方式或“全下标”方式访问、 赋值; “单下标”方式赋值时,等号两边涉及的元素个数必 须相等; “全下标”方式赋值时,等号右边数组的大小必须等 于原数组中涉及元素构成的子数组的大小。
【例4-3】二维数组元素与子数组的寻访与赋值 >>aa=zeros(2, 4) %创建2*4的全0数组 aa = 0 0 0 0 0 0 0 0 >>aa(:)=1:8 %全元素赋值法
aa=
注意元素的排列顺序
1 3 5 7 2 4 6 8 >>aa([2 5 8]) %单下标方式寻访多个元素 ans = 2 5 8
第三种方法:利用函数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 同学们可以在实验时察看x= linspace(1,2)执行结果。 课外:利用函数logspace
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 1.9503 - 0.1611i 2.3134 + 0.2717i >> eig(a) ans = 16.1168 -1.1168 -0.0000 %求矩阵a的特征值
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开始; 行标识从上到下递增; 列标识从左到右递增。
【例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、数组元素的标识与寻访
此外,还有伴随矩阵、稀疏矩阵、魔方矩阵、对角矩阵、范 德蒙等矩阵的创建,就不一一介绍了。 Note:matlab严格区分大小写字母,因此a与A是两个不同 的变量。 matlab函数名必须小写。
2.2 矩阵运算
矩阵运算包括:矩阵的四则运算、特征根、奇异解的 求解等。
1. 矩阵加、减(+,-)运算 规则: 相加、减的两矩阵必须有相同的行和列,两矩阵对应元 素相加减。 矩阵与标量的加减运算是标量与矩阵的所有元素分别进 行加减操作。 2. 矩阵乘(∗)运算 规则: A矩阵的列数必须等于B矩阵的行数 标量可与任何矩阵相乘。
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 42 66 81 96
例:
a (1,1)
a (2 : 3,1: 2)
⎡1 2 3⎤ ⎢ ⎥ a = ⎢4 5 6⎥ ⎢ ⎣7 8 9 ⎥ ⎦
a([1 2 3],3) a(1: 3,3) a(:,3)
Note:只要是赋过值的变量,不管是否在屏幕上显示过, 都存储在工作空间中,以后可随时显示或调用。变量名尽 可能不要重复,否则会覆盖 。 当一个指令或矩阵太长时,可用•••续行
行向量 列向量 a(2,1)=3 a(1,2)=2 b(3)=3 c(2)=2
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 所有的向量元素必须在操作符“[ ]”之内; 向量元素间用空格或英文的逗点“,”分开。 第二种方法:使用冒号“:”操作符 【例2-2】创建以1~10顺序排列整数为元素的行向量b。 >>b=1:10 b=1 2 3 4 5 6 7 8 9 10
【例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)
数组元素的标识 “全下标(index)”标识 经典数学教科书采用“全下标”标识法:每一维 应一个下标。
如对于二维数组,用“行下标和列下标”标识数组的元素, a(2,3)就表示二维数组a的“第2行第3列”的元素。 对于一维数组,用一个下标即可,b(2)表示一维数组b的 第2个元素,无论b是行向量还是列向量。
>> aa([2 5 8]) =[10 20 30]
aa = 1 3 20 7 10 4 6 30
>>aa(:,[2 3])=ones(2) %双下标方式寻访并修改
aa = 1 1 1 7 10 1 1 30
某一维的末尾 元素下标
>>aa(:,end)
ans = 7 30
>>aa(end,:)
ans = 10 1 ans = 1 1 aa = 1 10 1 30
第二讲 MATLAB的数值计算
matlab 具有出色的数值计算能力,占 据世界上数值计算软件的主导地位
数值运算的功能
创建数组 矩阵运算 数值统计 多项式运算 线性方程组 微分方程的数值解 函数优化 插值计算
2.1 Matlab矩阵(数组)的表示
数组的概念 一维数组变量的创建 二维数组变量的创建 数组元素的标识与寻访
双下标到单下标的转换 【例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)
例:<<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)。 例:利用矩阵除法求解线性方程:
>>aa(end,[2:4])
30
>>aa(:,end-1)
ans = 1 1
>>aa ([4 6])=6:7
1 6 1 7 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) 大维数
4 42 43 44 45
a(3, 4)=34 row is first
数组的分类 一维数组,也称为向量(vector) 。
行向量(row vector)、列向量(column vector)。
二维数组(矩阵matrix)。 多维数组。
Ä
有效矩阵:每行元素的个数必须相同,每 列元素的个数也必须相同。
用matlab函数创建矩阵
空阵 [ ] — matlab允许输入空阵,当一项操作无结果 时,返回空阵。 rand(1,N)— 产生[0 1]上均匀分布的随机序列,长度为N randn(1,N)— 产生均值为0,方差为 1的高斯随机序列, 即白噪声序列,长度N eye —— 单位矩阵 zeros ——全部元素都为0的矩阵 ones ——全部元素都为1的矩阵
5. 矩阵的其它运算 inv(A) —— 矩阵求逆 det(A) —— 矩阵A所对应的行列式的值 eig (A)—— 矩阵的特征值及特征向量 diag (A) —— 提取A对角元素或生成对角矩阵 sqrtm(A) ——矩阵A的平方根 logm(A) ——矩阵A的自然对数 expm(A) —— A的矩阵指数函数 trace(A) —— 求矩阵的迹 rank(A) ——求矩阵的秩
2.1.3、创建二维数组变量
第一种方法:使用方括号“[ ]”操作符 使用规则 数组元素必须在“[ ]”内键入; 行与行之间须用分号“;” 间隔; 行内元素用空格或逗号“,”间隔。 【例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] %结果同上
相关文档
最新文档