330 likes | 452 Views
第 2章 MATLAB数值运算. 本章目标. 掌握矩阵、向量、数组和多项式的构造和运算方法 能够使用常用的几种函数进行一般的数值问题求解. 主要内容. 2.1 矩阵 2.2 向量 2.3 数组 2.4 多项式. 2.1 矩阵. MATLAB = mat rix (矩阵) + lab oratory (实验室). 2.1.1 矩阵的构造. 通过直接输入矩阵的元素构造矩阵: 用中括号 [ ] 把所有矩阵元素括起来 同一行的不同数据元素之间用空格或逗号间隔 用分号(;)指定一行结束 可分成几行进行输入,用回车符代替分号
E N D
本章目标 • 掌握矩阵、向量、数组和多项式的构造和运算方法 • 能够使用常用的几种函数进行一般的数值问题求解
主要内容 • 2.1 矩阵 • 2.2 向量 • 2.3 数组 • 2.4 多项式
2.1 矩阵 MATLAB = matrix(矩阵)+ laboratory(实验室)
2.1.1 矩阵的构造 • 通过直接输入矩阵的元素构造矩阵: • 用中括号[ ]把所有矩阵元素括起来 • 同一行的不同数据元素之间用空格或逗号间隔 • 用分号(;)指定一行结束 • 可分成几行进行输入,用回车符代替分号 • 数据元素可以是表达式,系统将自动计算结果
例:输入矩阵A、B的值 >>A=[1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16] >>B=[1,sqrt(25),9,132,6,10,7*2 3+sin(pi),7,11,15,4, abs(-8),12,16]
2.1.2 矩阵下标与子矩阵提取 • A(m, n) 提取第m行,第n列元素 • A(:, n) 提取第n列元素 • A(m, :) 提取第m行元素 • A(m1:m2, n1:n2) 提取第m1行到第m2行和第n1列到第n2 列的所有元素 • A(m:end, n) 提取从第m行到最末行和第n列的子块 • A(:) 得到一个长列矢量,该矢量的元素按矩 阵的列进行排列
例:修改矩阵A中元素的数值 >>A=[1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]; >>A(1,1)=0;A(2,2)=A(1,2)+A(2,1);A(4,4)=cos(0); 则矩阵变为: A = 0 2 3 4 5 7 7 8 9 10 11 12 13 14 15 1
2.1.3 矩阵的算术运算 • 1. 矩阵的加减运算:+(加)、-(减) • 2. 矩阵乘法:*(乘) • 3. 矩阵除法:/ (右除)、\ (左除) • 4. 矩阵的乘方:^(乘方) • 5. 矩阵转置: ' (转置运算符)
2.1.4 矩阵的关系运算 • 关系运算符: <(小于)、<=(小于或等于)、>(大于) >=(大于或等于)、==(等于)、~=(不等于)。 • 关系运算符的运算法则: • 关系运算将对两个矩阵的对应元素进行比较。
2.1.5 矩阵的逻辑运算 • 必须是两个同维矩阵或其中一个矩阵为标量才能进行 • MATLAB提供了一些逻辑函数
1. 求矩阵的行列式的值 >> X=[1 2 3 0; 5 6 0 8; 9 0 11 12; 0 14 15 16]; >>det(X) ans = -5464
2. 求矩阵的秩 >> X=[1, 2, 3; 2, 3 -5; 4 7 1]; >> rank(X) ans = 2
3. 求逆矩阵 >> X=[1 2 3 0; 5 6 0 8; 9 0 11 12; 0 14 15 16]; >> Y=inv(X) Y = 0.2299 0.0908 0.0351 -0.0717 0.1940 0.0798 -0.0659 0.0095 0.1274 -0.0835 0.0322 0.0176 -0.2892 0.0084 0.0275 0.0377 >>Y*X %矩阵与其逆阵相乘结果是单位矩阵 ans = 1.0000 0 0 0 0 1.0000 0 0 0 0 1.0000 0 0 0 0 1.0000 >> X*Y %矩阵的逆阵是唯一的 ans = 1.0000 0 0 0 0 1.0000 0 0 0 0 1.0000 0 0 0 0 1.0000
4. 求特征值和特征向量 >> X=[-2 1 1;0 2 0;-4 1 3]; >> [V D]=eig(X) V= -0.7071 -0.2425 0.3015 0 0 0.9045 -0.7071 -0.9701 0.3015 D= -1 0 0 0 2 0 0 0 2
5. 矩阵分解 >> A=[2 -1 3;1 2 1;2 4 3]; >> [L, U]=lu(A) %三角分解 L = 1.0000 0 0 0.5000 0.5000 1.0000 1.0000 1.0000 0 U = 2.0000 -1.0000 3.0000 0 5.0000 0 0 0 -0.5000
2.2 向量 • 向量是矢量运算的基础 • 行向量 • 列向量
2.2.1 向量的构造 • 1.逐个输入 >>a=[1 3 9 10 15 16] %采用空格和逗号分隔构成行向量 >>b=[1; 3; 9; 10; 15; 16] %采用分号隔开构成列向量 • 2.利用冒号表达式“:”生成向量 >>x=1:2:9 %初值=1,终值=9,步长=2 >>z=1:5 %初值=1,终值=5,默认步长=1 • 3.利用函数生成向量 >> x=linspace(1, 9, 5) %初值=1,终值=9,元素数目=5
2.2.2 向量的运算 • 1.点积:dot函数 • 2.叉积:cross函数 • 例 >> a = [1 2 3]; >> b = [4 5 6]; >> c = dot(a, b) >> d = cross(a, b) c = 32 d = -3 6 -3
2.3 数组 • 数组运算方式是一种元素对元素的运算(不按照线性代数的规则) ; • 除了加、减法的与矩阵相同以外,乘、除、幂的数组运算符都是通过在标准的运算符前面加一个圆点来生成。
数组运算 >> x=[1 2 3; 4 5 6; 7 8 9]; >> y=[9 8 7; 6 5 4; 3 2 1]; >> x+y %数组和矩阵的加法规则相同 ans = 10 10 10 10 10 10 10 10 10 >> x.*y %数组乘法:对应元素相乘 ans = 9 16 21 24 25 24 21 16 9 >> x*y %矩阵乘法:按照线性代数理论进行 ans = 30 24 18 84 69 54 138 114 90
多维数组维间处理的函数 • 1.reshape • 2.size • 3.ndims • 4.cat • 5.permute • 6.ipermute • 7.shiftdim • 8.squeeze
2.4 多项式 多项式是形如 P(x) = a0xn+a1xn-1+…+an-1x+an的式子。 在MATLAB中,多项式用行向量表示: P=[ a0 a1 … an-1 an]
2.4.1 多项式的生成与表达 • 例:已知向量A=[1 –34 –80 0 0],用此向量构造一多项式并显示结果。 (x-1)(x+34)(x+80)(x-0)(x-0) >>PA=poly(A) >>PAX=poly2str(PA,'X') X^5 + 113 X^4 + 2606 X^3 - 2720 X^2
2.4.2 多项式的运算 • 1. 多项式的算术运算 • 参加加减运算的多项式应该具有相同的阶次。 • 多项式乘法采用conv函数,除法由deconv函数完成。 • 2. 求根 • 求多项式的根采用roots函数。 • 3. 求值 • 函数polyval可以将某个特定数值代入多项式 • 函数polyvalm可以求出当多项式中的未知数为方阵时的值。 • 4. 求导 • 使用polyder函数对多项式求导。
扩展阅读 • 2.5 特殊矩阵 • 2.6稀疏矩阵
上机指导 • 2.7工作空间与内存变量 • 2.7.1变量的查看 • 2.7.2变量的文件保存与获取
应用举例 例2-31将表达式(x-4)(x+5)(x2-6x+9)展开为多项式形式,并求其对应的一元n次方程的根。 >>p=conv([1 -4],conv([1 5],[1 -6 9])) >>px=poly2str(p,’x’) >>x=roots(p)
结 束 语 • 学好计算机的唯一途径是 • 你的编程能力与你在计算机上投入的时间成 上机练习 正比