1.Matlab数值运算功能_第1页
1.Matlab数值运算功能_第2页
1.Matlab数值运算功能_第3页
1.Matlab数值运算功能_第4页
1.Matlab数值运算功能_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Matlab与科学计算 Matlab数值与符号运算功能 数值计算功能 符号计算功能 Matlab与科学计算 数值计算功能 数字计算功能 向量运算功能 矩阵运算功能 数组逻辑运算功能 多项式运算功能 Matlab与科学计算 数字运算功能 Matlab是以矩阵为基本运算单元的,而构成 矩阵的基本单元是数字。 258369 ans 95202 x258369 x 95202 Matlab与科学计算 变量 (1)变量的命名:变量的名字必须以字母开头(不超 过19个字符),之后可以是字母、数字或下划线;变 量名区分字母的大小写;变量中不能包含有标点符号。 (2)一些特殊的变量 ans:用于结果的缺省变量

2、名 i、j:虚数单位 pi:圆周率 eps:计算机的最小数(相对精度) inf:无穷大 realmin:最小正实数 realmax:最大正实数 nan:不定量(not a number) (3)变量操作 在命令窗口中,同时存储着输入的命令和创建的所有变量值, 它们可以在任何需要的时候被调用。如要察看变量a的值,只 需要在命令窗口中输入变量的名称即可:a Matlab与科学计算 数值显示格式 任何MATLAB的语句的执行结果都可以在屏 幕上显示,同时赋值给指定的变量,没有指 定变量时,赋值给一个特殊的变量ans,数据 的显示格式由format命令控制。 format只是影响结果的显示,不影响其计

3、算 与存储;MATLAB总是以双字长浮点数(双 精度)来执行所有的运算。 Matlab的所有计 算都是通过双精度双精度进行的,在内存中的数都 是双精度的。double 是一个双精度浮点数, 每个存储的双精度数用64位。 Matlab与科学计算 如果结果为整数,则显示没有小数;如果结果不是整数, 则输出形式有: format (short):短格式(5位定点数)99.1253 format long:长格式(15位定点数 ) 99.12345678900000 format short e:短格式e方式 9.9123e+001 format long e:长格式e方式 9.91234567890

4、0000e+001 format bank:2位十进制 99.12 format hex:十六进制格式 Matlab与科学计算 简单的数学运算 1、常用的数学运算符 ,*(乘),/(左除),(右除),(幂) 在运算式中,MATLAB通常不需要考虑空格;多条 命令可以放在一行中,它们之间需要用分号隔开; 逗号告诉MATLAB显示结果,而分号则禁止结果显而分号则禁止结果显 示。示。 2、常用数学函数 abs,sin,cos,tan,asin,acos,atan,sqrt,exp,imag,real, sign, log,log10,conj(共扼复数)等 Matlab与科学计算 2.向量运算功能

5、1向量向量 向量是matlab中的一个基本单位,向量的每一 个元 素的运算包括 1)向量的创建; 2)向量的加减运算; 3)向量的乘除运算 Matlab与科学计算 向量的创建向量的创建 输入向量最直接的方法就是在命令窗口中输入,格式上需要向 量元素用“ ”括起来,元素之间可以用空格、逗号或分号分 隔。值得注意的是用空格和逗号分隔生成行向量,用分号分 隔生成列向量。 在matlab的命令窗口键入以下字符 a = 1 2 3 4 5 6 9 8 7 a = 1 2 3 4 5 6 9 8 7 希望得到元素从0到20,步距为2的一个向量,只需键入以下命令即可 t = 0:2:20 t = 2 4 6

6、 8 10 12 14 16 18 20 Matlab与科学计算 线性等分向量的生成线性等分向量的生成 y=linspace(x1,x2) 生成(1*100)维的行向量,使得y(1)=x1,y(100)=x2 y=linspace(x1,x2,n) 生成(1*n)维的行向量,使得y(1)=x1,y(n)=x2 对数等分向量的生成对数等分向量的生成 y=logspace(x1,x2) 生成(1*50)维的对数等分向量,使得y(1)=10 x1,y(50)=10 x2 y=logspace(x1,x2,n) 生成(1*n)维的对数等分向量,使得y(1)=10 x1,y(n)=10 x2 例:a2=

7、logspace(1,5,6) a2= 1 10 100 1000 10000 100000 Matlab与科学计算 向量的加减运算向量的加减运算 设a,b为同维向量,则c=a+b 或c=a-b得到两个向量相加减的结果。 向量与常数的相加减为每个元素加减这个常数。例如: b = a + 2 得到 b = 3 4 5 6 7 8 11 10 9 c = a + b c = 4 6 8 10 12 14 20 18 16 Matlab与科学计算 向量的乘除运算向量的乘除运算 a. 向量的乘法运算向量的乘法运算 点乘运算的运算符为 .*, 其意义为两个向量的对应 元素进行乘法运算,例如 a=1 2,

8、 b=3 4 则c=a.*b=3 8 为向量的乘方运算,例如 c=a.2=1 4 b. 向量的除法运算向量的除法运算 Matlab与科学计算 点积、叉积和混合积 点积:两个向量在其中一个向量方向上的投影的乘积 a=1,2,3; b=3,4,5; dot(a,b) ans=(相当于sum(a.*b) 26 叉积:过两相交向量的交点且垂直于两向量所在平面的 向量 c=cross(a,b) c= -2 4 -2 混合积: dot(a,cross(b,c) ans=24 Matlab与科学计算 矩阵运算功能 矩阵的生成 矩阵的基本数学运算 矩阵的基本函数运算 矩阵分解函数 特殊矩阵的生成 矩阵的一些特

9、殊操作 Matlab与科学计算 矩阵的生成 输入矩阵时每一行元素有分号或者回车键分隔。例如: B = 1 2 3 4;5 6 7 8;9 10 11 12 B = 1 2 3 4 5 6 7 8 9 10 11 12 c=sin(pi/3),cos(pi/4); log(9),tanh(6) c= 0.8660 0.7071 2.1972 1.0000 Matlab与科学计算 矩阵下标 MATLAB通过确认矩阵下标,可以对矩阵进行插入子块,提取子块和重 排子块的操作。 A(m,n):提取第m行,第n列元素 A(:,n):提取第n列元素 A(m,:):提取第m行元素 A(m1:m2,n1:n2)

10、:提取第m1行到第m2行和第n1列到 第n2列的所有元素(提取子块)。 A(:):得到一个长列矢量,该矢量的元素按矩阵的列进行排 列。 矩阵扩展:如果在原矩阵中一个不存在的地址位置上设定一 个数(赋值),则该矩阵会自动扩展行列数,并在该位置上 添加这个数,而且在其他没有指定的位置补零。 消除子块:如果将矩阵的子块赋值为空矩阵 ,则相当于消 除了相应的矩阵子块。 Matlab与科学计算 A(3,3) A(1,5) A(:,3) 代表矩阵的第三列 A(1: 5, :) 代表前5行所有元素组成的子矩阵 A( : ) 由矩阵直接生成列向量,先列后行 Matlab与科学计算 矩阵的大小 m,n=size

11、(A,x):返回矩阵的行列数m与n,当x=1, 则只返回行数m,当x=2,则只返回列数n。 length(A)=max(size(A):返回行数或列数的最大值。 a=1 2 3;3 4 5; m,n=size(a) m = 2 n = 3 length(a) ans = 3 max(size(a) ans = 3 Matlab与科学计算 矩阵的基本数学运算 B= 1 2 3 4 5 6 7 8 9 10 11 12 (2)矩阵乘法:矩阵乘法: (1)矩阵转置运算矩阵转置运算: C = B C = 1 5 9 2 6 10 3 7 11 4 8 12 D = B * C D = 30 70 11

12、0 70 174 278 110 278 446 要求B的列数等于 C的行数 Matlab与科学计算 3)矩阵点乘、加减法矩阵点乘、加减法 当两矩阵维数相同时,运算符.*的结果是两矩阵的对应 元素相乘,加减法相同。 E = 1 2;3 4; F = 2 3;4 5; G = E .* F G = 2 6 12 20 点运算是两个维数相同 矩阵对应元素之间的运 算,在有的教材中也定 义为数组运算。 Matlab与科学计算 ( 4)矩阵与常数间的运算矩阵与常数间的运算 常数与矩阵的运算即是同此矩阵各元素之间进行运算 数加是指矩阵每个元素都加上此常数 数减是指矩阵每个元素都乘以此常数 数乘是指矩阵每

13、个元素都与此数相乘 数除是指矩阵每个元素都除以此常数,因此常数 只能作为除数。 Matlab与科学计算 ( 5)矩阵的除法(左除矩阵的除法(左除“|”和右除和右除“/”) 右除右除要作矩阵的逆然后再作矩阵的乘法,通常速度较快 左除左除不需要计算逆,直接进行除运算,可以避免被除矩 阵奇异造成大的误差 解方程组:Ax=b, 其中A是(n*m)的矩阵 n=m且非奇异时,恰定方程 nm时,超定方程(拟合) n x,y=eig(a) x = -0.8246 -0.4160 0.5658 -0.9094 y = -0.3723 0 0 5.3723 可以验证:A*V=V*D x,y=eigs(a) x =

14、 -0.4160 -0.8246 -0.9094 0.5658 y = 5.3723 0 0 -0.3723 跌代法求解 Matlab与科学计算 (2)奇异值函数(奇异值函数(svd或或svds) 求矩阵A的奇异值及分解矩阵,满足U*S*V=A,其中U、V矩 为正交矩阵(U*U=I),S矩阵为对角矩阵,它的对角元素即A矩阵的奇异 值。 例:a = 9 8 6 8 可以验证: u*u=I v*v=I u*s*v=a u,s,v=svd(a) u = 0.7705 -0.6375 0.6375 0.7705 s = 15.5765 0 0 1.5408 v = 0.6907 -0.7231 0.7

15、231 0.6907 Matlab与科学计算 (3)条件数函数条件数函数 cond: 计算矩阵条件数的值 condest: 计算矩阵一范数的条件数的值 recond: 计算矩阵条件数的倒数值 h=hilb(9); cond(h) ans = 4.9315e+011 特征值的条件数:特征值的条件数:condeig condest(h) ans = 1.0997e+012 recond(h) ans = 9.0938e-013 Matlab与科学计算 (4)范数函数范数函数 矩阵的范数是矩阵的一种量度,它分为1范数、 2范数、无穷大范数和F范数,最常用的是2范数,即 平方和范数。 normest(

16、x):计算矩阵的2范数 norm(x,p):p的取值可以是1,2,inf或fro, 分别对x求相应的范数 Matlab与科学计算 (5)矩阵的秩函数矩阵的秩函数 h=hilb(9); rank(h) ans = 9 (6)矩阵的迹函数矩阵的迹函数 矩阵所有对角线上元素的和称为矩阵的迹 h=hilb(9); trace(h) ans = 2.0806 Matlab与科学计算 (7)矩阵的正交空间函数矩阵的正交空间函数 用来求矩阵的一组正交基:orth h=hilb(4); orth(h) ans = -0.7926 0.5821 -0.1792 -0.0292 -0.4519 -0.3705 0

17、.7419 0.3287 -0.3224 -0.5096 -0.1002 -0.7914 -0.2522 -0.5140 -0.6383 0.5146 Matlab与科学计算 (8)矩阵的伪逆函数矩阵的伪逆函数 求解系数矩阵严重“病态”的问题时,利用pinv可避免 “伪解”的产生。 a=magic(4); b=a*1 1 1 1; inv(a)*b Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.306145e- 017. ans = 0.5000 4.0000

18、 -2.0000 0 pinv(a)*b ans = 1.0000 1.0000 1.0000 1.0000 Matlab与科学计算 (9)通用函数形式:通用函数形式: funm(A,funname) 上述函数形式在实际运算中是远远不够的,对常 用的其它函数形式的运算,如三角函数、双曲函数等, 需要一种能够使用这些通用函数进行计算的形式, matlab中通用函数的格式为funm(A,funname) 如:funm(b,log) = logm(b) funm(b,sqrt) = sqrtm(b) Matlab与科学计算 矩阵分解函数 (1)特征值分解和奇异值分解(略)特征值分解和奇异值分解(略)

19、 (2)lu分解(分解(三角分解) L,U=lu(A) 将A做对角线分解,使得A=L*U,其中L为下三角矩阵,U为上 三角矩阵。 注意:L实际上是一个“心理上”的下三角矩阵,它事实上 是一个置换矩阵P的逆矩阵与一个真正下三角矩阵L1(其对 角线元素为1)的乘积。 L1,U1,P=lu(A) 例:a=1 2 3;4 5 6;7 8 9 比较: l1,u1,p=lu(a) l,u=lu(a) 可以验证:u1=u,inv(p)*l1=l a=l*u p*a=l1*u1 Matlab与科学计算 (3)chol分解(分解(chollesky分解) 如果A是对称正定矩阵,则存在一个实的非奇异下三角 矩阵L

20、,使得ALLT,当限定L的对角元素为正时,这种分 解是唯一的,称为chollesky分解。 a=4 -1 1;-1 4.25 2.75;1 2.75 3.5; chol(a) ans = 2.0000 -0.5000 0.5000 0 2.0000 1.5000 0 0 1.0000 Matlab与科学计算 (4)QR分解分解 将矩阵A做正交化分解,使得Q*R=A,其中Q为正交矩 阵(其范数为1,指令norm(Q)=1),R为对角化的上三角矩 阵。 Q,R=qr(A) 例: a = 9 8 6 8 验证:norm(q)=1 a=q*r q,r=qr(a) q = -0.8321 -0.5547

21、 -0.5547 0.8321 r = -10.8167 -11.0940 0 2.2188 Matlab与科学计算 特殊矩阵的生成 一些常用的特殊矩阵 单位矩阵:eye(m,n); eye(m) 零矩阵:zeros(m,n); zeros(m) 一矩阵:ones(m,n); ones(m) 对角矩阵:对角元素向量 V=a1,a2,an A=diag(V) 随机矩阵:rand(m,n)产生一个m*n的均匀分别的随机 矩阵, randn(m,n)产生一个m*n的正态随机阵 注意:上述函数中的维数变量可用size(A)代替,表示 生成的矩阵与A矩阵同维。 Matlab与科学计算 eye(2,3)

22、ans= 1 0 0 0 1 0 zeros(2,3) ans= 0 0 0 0 0 0 ones(2,3) ans= 1 1 1 1 1 1 V=5 7 2; A=diag(V) A= 5 0 0 0 7 0 0 0 2 eye(2) ans= 1 0 0 1 zeros(2) ans= 0 0 0 0 ones(2) ans= 1 1 1 1 如果已知A为方阵,则V=diag(A) 可以提取A的对角元素构成向量V。 Matlab与科学计算 空阵:空阵: matlab中定义为空阵,一个被定义为空阵的变 量具有以下性质 在matlab工作空间中确实存在被赋空阵的变量 空阵中不包含任何元素,它的

23、维数是0*0的 空阵可以在matlab的运算中传递 1.可以用clear从内存中清除空阵变量 Matlab与科学计算 a=1:18; a=reshape(a,3,6) a = 1 4 7 10 13 16 2 5 8 11 14 17 3 6 9 12 15 18 a1=a(:,1 3 4 6) a1 = 1 7 10 16 2 8 11 17 3 9 12 18 a(:,2 5)= a = 1 7 10 16 2 8 11 17 3 9 12 18 变维函数 Matlab与科学计算 矩阵的一些特殊操作 变维变维 “:”或者函数“reshape” a=1:12; b=reshape(a,2,6

24、) b = 1 3 5 7 9 11 2 4 6 8 10 12 c=zeros(3,4); c(:)=a(:) c = 1 4 7 10 2 5 8 11 3 6 9 12 Matlab与科学计算 (2) 变向变向 rot90(A):将A逆时针方向旋转90度 rot90(A,k):将A逆时针方向旋转90*k度,k可正可负 fliplr(X):将X左右翻转 flipud(X):将X上下翻转 flipdim(X,DIM):将X按第DIM维翻转 Matlab与科学计算 (3) 抽取抽取 diag(X,k)diag(X,k):抽取矩阵X的第k条对角线的元素向量。K 为零即为抽 取主对角线,k为正值时

25、为上方第k条对角线,k为负值时为下方 第k条对角线。 diag(X)diag(X):即为diag(X,0),抽取主对角线元素向量 diag(v,k)diag(v,k):使得向量v为所得矩阵的第k条对角线元素 diag(v)diag(v): 使得v为矩阵的主对角线元素 tril(X)tril(X): 提取矩阵X的主下三角部分 tril(X,k)tril(X,k): 提取矩阵X的第k条对角线下面的部分(包括k对角线) triu(X)triu(X): 提取矩阵的主上三角部分 triu(X,k)triu(X,k): 提取矩阵X的第k条对角线上面的部分(包括k对角线) Matlab与科学计算 a=pas

26、cal(4) a = 1 1 1 1 1 2 3 4 1 3 6 10 1 4 10 20 v=diag(a) v = 1 2 6 20 v=diag(a,2) v = 1 4 v=diag(diag(a) v = 1 0 0 0 0 2 0 0 0 0 6 0 0 0 0 20 a1=tril(a,-1) a1 = 0 0 0 0 1 0 0 0 1 3 0 0 1 4 10 0 a1=tril(a,2) a1 = 1 1 1 0 1 2 3 4 1 3 6 10 1 4 10 20 Matlab与科学计算 (4) 抽取抽取 利用对矩阵标识块的赋值命令 X(m1:m2,n1:n2)=a, 其

27、中(m2-m1+1)必须等于a的行维数, (n2-n1+1)必须等于a的列维数。生成的(m2*n2)维的矩 阵X,除赋值子阵和已存在的元素外,其余元素都默认 为零。 利用小矩阵的组合来生成大矩阵 要严格注意矩阵大小的匹配。 Matlab与科学计算 建立多项式的伴随矩阵 v=1 2 6 20; a1=compan(v) a1 = -2 -6 -20 1 0 0 0 1 0 方法一 a2=- v(2:4);eye(2),zeros(2,1) a2 = -2 -6 -20 1 0 0 0 1 0 方法二 a3=-v(2:4); a3(2:3,1:2)=eye(2) a3 = -2 -6 -20 1

28、0 0 0 1 0 Matlab与科学计算 数组逻辑运算功能 基本逻辑关系运算 l在关系比较中,若比较双方为同维数组。其元素值由0和1组 成,当比较双方对应位置上的元素值满足比较关系时,对应 值为1,否则为0。 l当比较双方中一方为常数,另一方为数组时,则结果数组与 原数组同维,且其值为已知数组和常数的比较结果。 l“与”:当运算双方的对应元素均为非零时结果为1,否则 为0。 “或”:当运算双方的对应元素有一非零时结果为1, 否则为0。 “非”:当运算数组的对应位置的值为零时结果 为1,否则为0。 l在算术运算、比较运算和逻辑与、非、或运算中,他们的优 先级关系为:算术运算比较运算逻辑与、或、

29、非运算 Matlab与科学计算 符号运算符符号运算符功能功能函数名函数名 =等于eq =不等于ne 大于gt =大于等于ge 4:6;7:9; x=5; y=ones(3)*5; xa=x b=0 1 0;1 0 1;0 0 23; ab=a a(:,3)=zeros(5,1) a = 17 24 0 8 15 23 5 0 14 16 4 6 0 20 22 10 12 0 21 3 11 18 0 2 9 a1=all(a(:,1) a2=all(a3) a2 = 1 1 0 0 0 all=any(a(:,1)10) all = 1 a11=any(a10) a11 = 1 1 0 1

30、1 a=1:5; a=1./a a = 1.0000 0.5000 0.3333 0.2500 0.2000 f1=find(a) f1 = 1 2 3 4 5 f2=find(abs(a)0.4|abs(a) a=1 2 3 4; b=a; poly2sym(a) ans = x3+2*x2+3*x+4 poly2sym(b) ans = x3+2*x2+3*x+4 将多项式向量变成符号形式 Matlab与科学计算 特征多项式 l由特征多项式生成的多项式的首项系数一定是1 ln阶矩阵一般产生n阶多项式。 a=1 2 3;2 3 4;3 4 5; p1=poly(a) p1 = 1.0000

31、-9.0000 -6.0000 -0.0000 poly2sym(p1) ans = x3-9*x2-6*x-8399472/25353012 Matlab与科学计算 由根创建多项式 同样用poly函数,其实由矩阵直接创建也是把矩阵 的特征值作为多项式形成的方程的根 root=-5 -3+4i -3-4i; p=poly(root) p = 1 11 55 125 poly2sym(p) ans = x3+11*x2+55*x+125 Matlab与科学计算 多项式运算 求多项式的值 l输入变量值代入多项式计算时以数组为单元,此时的计 算函数为polyval. l输入变量值代入多项式计算时以矩

32、阵为单元,进行矩阵 式运算,此时的计算函数为polyval. p=1 11 55 155; b=1 1;1 1; polyval(p,b) ans = 222 222 222 222 polyvalm(p,b) ans = 236 81 81 236 z = polyval(1 0 0 0 1,2) z = 17 Matlab与科学计算 (2)求多项式的根 l直接调用求根函数roots,求解所有根 1.通过建立多项式的伴随矩阵再求其特征值得解 p=2 -5 6 -1 9; roots(p) ans = 1.6024 + 1.2709i 1.6024 - 1.2709i -0.3524 + 0.

33、9755i -0.3524 - 0.9755i compan(p) ans = 2.5000 -3.0000 0.5000 -4.5000 1.0000 0 0 0 0 1.0000 0 0 0 0 1.0000 0 eig(ans) ans = 1.6024 + 1.2709i 1.6024 - 1.2709i -0.3524 + 0.9755i -0.3524 - 0.9755i Matlab与科学计算 多项式的乘除法运算(conv和deconv) 卷积函数(conv)和解卷函数(deconv) p=2 -5 6 -1 9; poly2sym(p) ans = 2*x4-5*x3+6*x2-x+9 d=3 -90 -18; poly2sym(d) ans = 3*x2-90*x-18 pd=conv(p,d) pd = 6 -195 432 -453 9 -792 -162 poly2sym(pd) ans = 6*x6-195*x5+432*x4- 453*x3+9*x2-792*x-162 p1=deconv(pd,d) p1 = 2 -5 6 -1 9 Matlab与科学计算 多项式加法 两个同阶多项式的相加,可用z=x+y。对于一般x和y不同维 数的情况,可用自定义的函数polyadd完成 functionpoly=polyadd(poly1,poly

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论