《[理学]第3章数值运算》由会员分享,可在线阅读,更多相关《[理学]第3章数值运算(31页珍藏版)》请在金锄头文库上搜索。
1、第3章 数值运算,与符号计算相比,数值计算在科研和工程中的应用更为广泛。MATLAB也正是凭借其卓越的数值计算能力而称雄世界。随着科研领域、工程实践的数字化进程的深入,具有数字化本质的数值计算就显得愈益重要。,3.1 矩阵的构造,通过直接输入矩阵的元素构造矩阵: 用中括号 把所有矩阵元素括起来 同一行的不同数据元素之间用空格或逗号间隔 用分号(;)指定一行结束 可分成几行进行输入,用回车符代替分号 数据元素可以是表达式,系统将自动计算结果,2,例:输入矩阵A、B的值,A=1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16 B=1,sqrt(25),9,13;2,
2、6,10,7*2 3+sin(pi),7,11,15;4,abs(-8),12,16,3,3.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(:) 得到一个长列矢量,该矢量的元素按矩阵的列进行排列,4,例 使用下标得到矩阵元素和子块,X=1 2 3 0;5 6 0 8;9 0 11 12;0 14 15 16 X(2,3)提取矩阵第二行第三列的元素 X(2,:) 提
3、取矩阵第二行所有元素 X(2:3,1:3) 提取第二行到第三行和第一列到第三列的子块 X(2:end,1) 提取从第二行到末行和第一列的子块 X(:) 得到一个长列矢量,该矢量的元素按X的列排列,5,例: 修改矩阵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),6,3.3 矩阵的算术运算,矩阵的加减运算:(加)、(减) 运算规则: 相加、减的两矩阵必须有相同的行和列;两矩阵对应元素相加减。 允许参与运算的两矩阵之一是标量。标量与矩阵的所有元素分别进行加
4、减操作。 矩阵乘法:*(乘) 运算规则: A矩阵的列数必须等于B矩阵的行数。 标量可与任何矩阵相乘。,7,矩阵除法,矩阵除法:/ (右除)、 (左除) X=AB是方程A*X=B的解; X=B/A是方程X*A=B的解。,8,a p a 自乘p次,9,方阵,1的整数,如a,p都是矩阵,ap则无意义。,矩阵的乘方:(乘方), a=1,2,3;4,5,6;7,8,9; a2 ans =30 36 42 66 81 96 102 126 150,当一个方阵有复数特征值或负实特征值时,非整数幂是复数阵。,对于p的其它值,计算涉及特征值和特征向量。 例: b=a0.5 b = 0.4498 + 0.7623
5、i 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,10,矩阵转置,运算规则: 如果矩阵A是实数阵,则矩阵A的转置是将第i行第j列的元素与第j行第i列的元素互换; 如果矩阵A是复数阵,则A转置后的元素由A对应元素的共轭复数构成。 X=1 2 3;5 6 0;9 0 11; X Y=2 3 0 9;5 6 0 1; Y Z=3+7i 9-2i;5+2i 1;Z,11,3.4 矩
6、阵的关系运算,关系运算符: (大于)=(大于或等于)、=(等于)、=(不等于) 关系运算符的运算法则: 矩阵的维数一致。 将两个矩阵的对应元素进行比较关系运算结果。 若比较关系的结果为真,置为1,否则置0,12,3.5 矩阵的逻辑运算,必须是两个同维矩阵或其中一个矩阵为标量才能进行 MATLAB提供了一些逻辑函数,13,例 逐个元素的逻辑运算,A=rand(2,4) B=A0.5 %数组A中大于0.5的元素位置上,将数组B赋值为逻辑真,否则赋值为逻辑假 C=A0.7 D=B&C E=B|C F=B G=A&C%所有非零的数值类型都被当作逻辑真处理 H=A|C I=A,例 矩阵的逻辑运算, A=
7、0 1 2;any(A) B=1 0 3;2 0 1;any(B) C=1 2 3;2 0 1;all(C) isempty(A) isequal(A,B) isreal(B) find(C2),15,3.6矩阵特殊操作,矩阵的变维 a=1:12;b=reshape(a,3,4) c=zeros(3,4); c(:)=a(:) 矩阵的变向 rot90:旋转(逆时针) fliplr:上翻(沿垂直轴) flipud:下翻(沿水平轴) 矩阵的抽取 diag:抽取主对角线元素; tril: 抽取主下三角矩阵; triu:抽取主上三角矩阵;,16,例: a=1,2,3;4,5,6;7,8,9 diag(
8、a) tril (a) triu (a) 例: a=1 2 3 4 5;6 7 8 9 10;11 12 13 14 15; 16 17 18 19 20;21 22 23 24 25 b=3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11 求 (1)c=a*b; (2)将矩阵c右下角3x2子矩阵赋给d.,矩阵的扩展 例: a=1,2,3;4,5,6;7,8,9; b=a;1 2 3 %增加一行 c=a,1 2 3 %增加一列,18,a = 1 2 3 4 5 6 7 8 9,b = 1 2 3 4 5 6 7 8 9 1 2 3,c = 1 2 3 1 4 5 6 2
9、7 8 9 3,3.7 多项式,matlab语言把多项式表达成一个行向量,该向量中的元素是按多项式降幂排列的。 如:f(x)= an xn+an-1xn-1+ a1x+a0 ; 用行向量表示: p=an an-1 a1 a0 。 多项式相关函数: poly (a)产生特征多项式系数向量 a为矩阵;a为向量 a=1 2 3;4 5 6;7 8 0; p=poly(a) p =1.00 -6.00 -72.00 -27.00,19,3.8 特殊矩阵,20,空阵 matlab允许输入空阵,当操作无结果时,返回空阵。 rand 随机矩阵 rand(m,n) ,rand(m),eye 单位矩阵 ,主对角
10、线的元素为1. eye(m,n) , eye(m) zeros全部元素都为0的矩阵 zeros(m,n) , zeros(m) ones全部元素都为1的矩阵 ones(m,n) , ones(m) diag 对角矩阵 diag(2 4 6) ans = 2 0 0 0 4 0 0 0 6,21,注意: matlab严格区分大小写字母。因此a与A是两个不同的变量。 matlab函数名必须小写。,22,3.9 数据的保存与获取,把matlab工作空间中一些有用的数据长久保存下来的方法是生成mat数据文件。 save 将工作空间中所有的变量存到matlab.mat文件中。 save data将工作空
11、间中所有的变量存到指定 data.mat文件中。 save data a b 将工作空间中a和b变量存到data.mat文件中。,23,load 导入保存到matlab.mat文件中的所有变量 load data导入保存到data.mat文件中的所有变量 load data a b导入保存到data.mat文件的变量a和b mat文件是标准的二进制文件,还可以ASCII码形式保存,24,应用举例,例: 将表达式(x-4)(x+5)(x2-6x+9)展开为多项式形式,并求其对应的一元n次方程的根。 p=conv(1 -4,conv(1 5,1 -6 9) px=poly2str(p,x) x=r
12、oots(p),25,3.10函数优化 寻优函数: fmin 单变量函数 fmins 多变量函数 constr 有约束条件,无约束条件,例1:f(x)=x2+3x+2在-5 5区间的最小值 f=fmin(x2+3*x+2,-5,5) 例2:f(x)=100(x2-x12)2+(a-x1)2在x1=a, x2=a2处有最小值 function f=xun(x,a) f=100*(x(2)-x(1).2).2+(a-x(1).2; x=fmins(xun,0,0, , ,sqrt(2),3.11 数据分析,max 各列最大值 mean 各列平均值 sum 各列求和 std 各列标准差 var 各列
13、方差 sort 各列递增排序,3.12 拟合与插值,1. 多项式拟合 x0=0:0.1:1; y0=-.447 1.978 3.11 5.25 5.02 4.66 4.01 4.58 3.45 5.35 9.22; p=polyfit(x0,y0,3) p = 56.6915 -87.1174 40.0070 -0.9043 xx=0:0.01:1;yy=polyval(p,xx); plot(xx,yy,-b,x0,y0,or),2.插值 插值的定义是对某些集合给定的数据点之间函数的估值方法。 当不能很快地求出所需中间点的函数时,插值是一个非常有价值的工具。 Matlab提供了一维、二维、 三次样条等许多插值选择,table1 table2 intep1 interp2 spline 利用已知点确定未知点 粗糙 精确 集合大的 简化的,插值函数,