MATLAB矩阵的数值运算.ppt

上传人:牧羊曲112 文档编号:6512033 上传时间:2023-11-08 格式:PPT 页数:67 大小:635.50KB
返回 下载 相关 举报
MATLAB矩阵的数值运算.ppt_第1页
第1页 / 共67页
MATLAB矩阵的数值运算.ppt_第2页
第2页 / 共67页
MATLAB矩阵的数值运算.ppt_第3页
第3页 / 共67页
MATLAB矩阵的数值运算.ppt_第4页
第4页 / 共67页
MATLAB矩阵的数值运算.ppt_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《MATLAB矩阵的数值运算.ppt》由会员分享,可在线阅读,更多相关《MATLAB矩阵的数值运算.ppt(67页珍藏版)》请在三一办公上搜索。

1、第二讲 MATLAB的数值计算,matlab 具有出色的数值计算能力,占据世界上数值计算软件的主导地位,数值运算的功能,创建矩阵 矩阵运算 多项式运算 线性方程组 数值统计 线性插值 函数优化 微分方程的数值解,一、命令行的基本操作,1.创建矩阵的方法,直接输入法规则:矩阵元素必须用 括住;矩阵元素必须用逗号或空格分隔;在 内矩阵的行与行之间必须用分号分隔。,a=3.3;b=4.4;c=1,a,3;4,5,6;b,7,8c=1.0000 3.3000 3.0000 4.0000 5.0000 6.0000 4.4000 7.0000 8.0000,例1:,m=1 2 3;4 5 6,n=11

2、12 13;14 15 16m=1 2 3 4 5 6n=11 12 13 14 15 16 c=m+i*nc=1.0000+11.0000i 2.0000+12.0000i 3.0000+13.0000i 4.0000+14.0000i 5.0000+15.0000i 6.0000+16.0000i,例2:,其中符号的作用:,逗号和分号的作用 逗号和分号可作为指令间的分隔符,matlab允许多条语句在同一行出现。分号如果出现在指令后,屏幕上将不显示结果。,冒号的作用,用于生成等间隔的向量,默认间隔为1。用于选出矩阵指定行、列及元素。循环语句,Note:只要是赋过值的变量,不管是否在屏幕上显示

3、过,都存储在工作空间中,以后可随时显示或调用。变量名尽可能不要重复,否则会覆盖。当一个指令或矩阵太长时,可用续行,例:,用matlab函数创建矩阵,空阵 matlab允许输入空阵,当一项操作无结果时,返回空阵。rand(1,N)产生0 1上均匀分布的随机序列,长度为N randn(1,N)产生均值为0,方差为 1的高斯随机序列,即白噪声序列,长度N eye 单位矩阵 zeros 全部元素都为0的矩阵 ones 全部元素都为1的矩阵,此外,还有伴随矩阵、稀疏矩阵、魔方矩阵、对角矩阵、范德蒙等矩阵的创建,就不一一介绍了。,Note:matlab严格区分大小写字母,因此a与A是两个不同的变量。mat

4、lab函数名必须小写。,2.矩阵的修改,直接修改 可用键找到所要修改的矩阵,用键移动到要修改的矩阵元素上即可修改。指令修改 可以用A(,)=来修改。,例:a=1 2 0;3 0 5;7 8 9a=1 2 0 3 0 5 7 8 9 a(3,3)=0a=1 2 0 3 0 5 7 8 0,还可以用subs函数修改,matlab6.0还可用find函数修改。,1.矩阵加、减(,)运算,二、矩阵运算,规则:相加、减的两矩阵必须有相同的行和列,两矩阵对应元素相加减。矩阵与标量的加减运算是标量与矩阵的所有元素分别进行加减操作。,矩阵运算包括:矩阵的四则运算、特征根、奇异解的求解等。,2.矩阵乘()运算,

5、规则:A矩阵的列数必须等于B矩阵的行数 标量可与任何矩阵相乘。例:a=1 2 3;4 5 6;7 8 0;b=1;2;3;c=a*b c=14 32 23,3.在matlab中有两种矩阵除运算,矩阵左除和矩阵右除,和/。如果A矩阵是非奇异方阵,则AB和B/A运算可以实现。AB等效于A的逆左乘B矩阵,也就是inv(A)*B,而B/A等效于A矩阵的逆右乘B矩阵,也就是B*inv(A)。,例:d=-1;0;2;f=pi*d f=-3.1416 0 6.2832,例:利用矩阵除法求解线性方程:,A=3 2 1;5 0.7 2;7 4 3;b=5;2;7;X=AbX=2.2609 1.7391-5.26

6、09,a p a 自乘p次幂,4.矩阵乘方 an,ap,pa,P0,结果为与a相同的矩阵,当p0,只有在a的逆存在时才可定义a p,其意义为inv(a)(p),例:a=1,2,3;4,5,6;7,8,9;a2 ans=30 36 42 66 81 96 102 126 150,当一个方阵有复数特征值或负实特征值时,非整数幂是复数阵。,例:a=1,2,3;4,5,6;7,8,9;a0.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.59

7、40i 1.9503-0.1611i 2.3134+0.2717i,eig(a)%求矩阵a的特征值ans=16.1168-1.1168-0.0000,inv(A)矩阵求逆det(A)矩阵A所对应的行列式的值eig(A)矩阵的特征值及特征向量diag(A)提取A对角元素或生成对角矩阵 sqrtm(A)矩阵A的平方根 logm(A)矩阵A的自然对数 expm(A)A的矩阵指数函数 trace(A)求矩阵的迹 rank(A)求矩阵的秩,5.矩阵的其它运算,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 1

8、1 12 b=reshape(a,4,3)%把指定的矩阵改变形状,但是元素个数不变 b=1 6 11 5 10 4 9 3 8 2 7 12,矩阵的旋转 例: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=rot90(a)矩阵逆时针旋转90度b=4 8 12 3 7 11 2 6 10 1 5 9,矩阵的对称交换 例:a=-4-1-2;-3 0-3;-2 1 4 a=-4-1-2-3 0-3-2 1 4 flipud(a)上下对称交换ans=-2 1 4-3 0-3-4-1-2 fliplr(a)左右对称交换ans=-2-

9、1-4-3 0-3 4 1-2,提取矩阵的上、下三角阵 例:a=-4-1-2;-3 0-3;-2 1 4 a=-4-1-2-3 0-3-2 1 4 tril(a)提取a的下三角阵ans=-4 0 0-3 0 0-2 1 4 triu(a)提取a的上三角阵ans=-4-1-2 0 0-3 0 0 4,求矩阵的维数(size)或向量的长度(length),例:,a=1 4 7 10;2 5 8 11;3 6 9 12a=1 4 7 10 2 5 8 11 3 6 9 12 k=size(a)k=3 4,A=1 2 3 4 8 6;n=length(A)n=6,矩阵的转置,运算符 可进行矩阵的共轭转

10、置运算,运算符.可进行矩阵的转置运算,当矩阵元素为实数时,两者结果相同。,例、,A=1 2 3;4 5 6A=1 2 3 4 5 6,B=AB=1 4 2 5 3 6,7.矩阵的关系运算,MATLAB提供了6种关系运算符:,它们的含义不难理解,但要注意其书写方法与数学中的不等式符号不尽相同。,关系运算符的运算法则为:当两个比较量是标量时,直接比较两数的大小若关系成立,关系表达式结果为1,否则为0。当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。,当参与比较的

11、一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。,c=(a abans=0 0 0 0 0 1 1 1 1,a=1 2 3;4 5 6;7 8 9a=1 2 3 4 5 6 7 8 9 b=10-ab=9 8 7 6 5 4 3 2 1,例:,8.矩阵的逻辑运算,在逻辑运算中,确认非零元素为真,用1表示,零元素为假,用0表示。设参与逻辑运算的是两个标量a和b,那么,a&b(与)a,b全为非零时,运算结果为1,否则为0。a|b(或)a,b中只要有一个非零,运算结果为1。

12、a(非)当a是零时,运算结果为1;当a非零时,运算结果为0。,MATLAB提供了3种逻辑运算符:&(与)、|(或)和(非)。,逻辑运算的运算法则为:,若参与逻辑运算的是两个同维矩阵,那么运算将对矩阵相同位置上的元素按标量规则逐个进行。最终运算结果是一个与原矩阵同维的矩阵,其元素由1或0组成。,在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。,若参与逻辑运算的一个是标量,一个是矩阵,那么运算将在标量与矩阵中的每个元素之间按标量规则逐个进行。最终运算结果是一个与矩阵同维的矩阵,其元素由1或0组成。,a=-3 0 1;2 4-5;-7-8 9a=-3 0 1 2 4-5-7-8 9

13、 x=a 等价于not(a),元素为0时,结果为1,否则为0 x=0 1 0 0 0 0 0 0 0,例:,x1=(a0)x1=1 1 0 0 0 1 1 1 0 x2=a-2&a4x2=0 1 1 1 0 0 0 0 0,数组运算指元素对元素的算术运算,与通常意义上的由符号表示的线性代数矩阵运算不同。数组加减(.+,.-),9.数组运算,数组乘除(,./,.)ab a,b两数组必须有相同的行和列,两数组相应元素相乘。,a=1 2 3;4 5 6;7 8 9;b=2 4 6;1 3 5;7 9 10;a.*bans=2 8 18 4 15 30 49 72 90,例:,a=1 2 3;4 5

14、6;7 8 9;b=2 4 6;1 3 5;7 9 10;a*bans=25 37 46 55 85 109 85 133 172,数组相乘,矩阵相乘,a./b=b.aa.b=b./a,给出a,b对应元素间的商.,a./b=b.a 都是a的元素被b的对应元素除,例:a=1 2 3;b=4 5 6;c1=a.b,c2=b./ac1=4.0000 2.5000 2.0000c2=4.0000 2.5000 2.0000,数组乘方(.)元素对元素的幂,例:,a=1 2 3,b=4 5 6,a=1 2 3b=4 5 6 a.2ans=1 4 9,a.bans=1 32 729,三、数据统计处理,1、求

15、向量的最大值和最小值,格式:y=max(X):返回向量X的最大值存入y,如果X中包含复数元素,则按模取最大值。,y,I=max(X):返回向量X的最大值存入y,最大值的序号存入I,如果X中包含复数元素,则按模取最大值。,求向量X的最小值的函数是min(X),用法和max(X)完全相同。,例1、求向量x的最大值。,x=-43,72,9,16,23,47;y=max(x)%求向量x中的最大值 y,l=max(x)%求向量x中的最大值及其该元素的位置,2、求矩阵的最大值和最小值,求矩阵A的最大值的函数常用有2种调用格式:max(A):返回一个行向量,向量的第i个元素是矩阵A的第i列上的最大值。Y,U

16、=max(A):返回行向量Y和U,Y向量记录A的每列的最大值,U向量记录每列最大值的行号。,求矩阵A的最小值的函数是min(X),用法和max(X)完全相同。,例:,A=2 8 16;0-2 30;3 61 4A=2 8 16 0-2 30 3 61 4 max(A)ans=3 61 30,y,u=max(A)y=3 61 30u=3 3 2,sum(X):返回向量X各元素的和。prod(X):返回向量X各元素的乘积。sum(A):返回一个行向量,其第i个元素是A的第i列的 元素和。prod(A):返回一个行向量,其第i个元素是A的第i列的 元素乘积。,3、求和与求积,数据序列求和与求积的函数

17、是sum和prod,其使用方法类似。设X是一个向量,A是一个矩阵,函数的调用格式为:,sum(A,dim):当dim为1时,该函数等同于sum(A);当 dim为2时,返回一个列向量,其第i个元 素是A的第i行的各元素之和。prod(A,dim):当dim为1时,该函数等同于prod(A);当 dim为2时,返回一个列向量,其第i个元 素是A的第i行的各元素乘积。,例:,A=2 8 16;0-2 30;3 61 4A=2 8 16 0-2 30 3 61 4 sum(A)ans=5 67 50,prod(A)ans=0-976 1920,4、统计分布的数字特征,mean(X)返回向量X的算术平

18、均值 mean(A)返回一个行向量,其第i个元素是A的第i列的算 术平均值。std(X)返回向量X的样本标准差 std(A)返回一个行向量,它的各个元素便是矩阵A各列或 各行的标准差。var(X)返回向量X的样本方差 var(A)返回一个行向量,它的各个元素便是矩阵A各列或 各行的标准方差。corrcoef(X)返回从矩阵X形成的一个相关系数矩阵。此相关系数矩阵的大小与矩阵X一样。它把矩阵X的每列作为一个变量,然后求它们的相关系数。,X=randn(10000,5);M=mean(X)D=std(X)R=corrcoef(X),例、生成满足正态分布的100005随机矩阵,然后求各列元素的均值和

19、标准方差,再求这5列随机数据的相关系数矩阵。,M=0.0011 0.0066 0.0009 0.0264 0.0101D=1.0011 1.0036 1.0049 1.0058 1.0061R=1.0000 0.0119 0.0051-0.0114-0.0011 0.0119 1.0000 0.0093-0.0012 0.0071 0.0051 0.0093 1.0000 0.0048 0.0095-0.0114-0.0012 0.0048 1.0000-0.0017-0.0011 0.0071 0.0095-0.0017 1.0000,运行结果:,5、排序,格式:sort(X)函数返回一个对

20、X中的元素按升序排列的新向量。sort函数也可以对矩阵A的各列或各行重新排序,其调用格式为:Y,I=sort(A,dim)其中dim指明对A的列还是行进行排序。若dim=1,则按列排;若dim=2,则按行排。Y是排序后的矩阵,而I记录Y中的元素在A中位置。,matlab语言把多项式表达成一个行向量,该向量中的元素是按多项式降幂排列的。P(x)=anxn+an-1 xn-1+a1 x+a0 可用系数行向量表示:P=an an-1 a1 a0,四、多项式运算,1.多项式的表达方式,Note:多项式中系数为0的项不能忽略,p中相应元素应置为0。,p=3,5,1,7 或 p=3 5 1 7 p1=3,

21、0,2,4 或 p1=3 0 2 4,2.多项式因式分解多项式方程求根,利用函数roots()求多项式方程的根,从而因式分解。,例:求多项式 的根。,在MATLAB中表示为:,例:多项式,,用MATLAB语言:p=1,-20.5,137,-297.5;r=roots(p)r=8.5000 7.0000 5.0000,多项式因式分解:,3.Ppoly(ar)产生特征多项式系数向量若ar是方阵,P就是多项式系数向量;若arar1 ar2 arn,ar的元素是多项式P的根,满足(x-ar1)(x-ar2)(x-arn)=anxn+an-1xn-1+a0。,例:展开多项式。,ar=20 7-5;p=p

22、oly(ar)p=1-22 5 700,多项式展开:,例:求3阶方阵A的特征多项式。,A=11 12 13;14 15 16;17 18 19;PA=poly(A)A的特征多项式PA=1.0000-45.0000-18.0000 0.0000 PB=poly2str(PA,x)以x作为自变量,返回三次多项式 PB=x3-45 x2-18 x+1.8303e-014,Note:poly2str是一个函数文件。n阶方阵的特征多项式系数存放为1(n1)的一维数组。特征多项式系数向量的第一个元素必是1。,4.conv多项式乘运算,例:a(x)=x2+2x+3;b(x)=4x2+5x+6;求:c(x)=

23、a(x)*b(x),a=1 2 3;b=4 5 6;c=conv(a,b)%计算两多项式相乘后系数c=4 13 28 27 18 p=poly2str(c,x)p=4 x4+13 x3+28 x2+27 x+18,5.deconv多项式除运算,例:,6.多项式微分,matlab提供了polyder函数求多项式的微分。命令格式:polyder(p):求p的微分polyder(a,b):求多项式a,b乘积的微分p,q=polyder(a,b):求多项式a,b商的微分,例:,五、函数的极值,1.固定区间单变量函数的最小值,利用fminbnd函数求固定区间单变量函数的最小值。用法:fun:单变量函数的

24、函数名,x1 x2为给定的计算区间,x,fval为最小值点的位置和最小值。,例:求 在区间0,2的最小值,f=inline(x.3-2*x.2-5,x);采用内联函数表示测试函数 x=0:0.1:2;plot(x,f(x)x,y=fminbnd(f,0,2)x=1.3333y=-6.1852,或:f=x.3-2*x.2-5,2.固定区间多变量函数的最小值,利用fminsearch函数求固定区间多变量函数的最小值。用法:从函数fun的给定点开始搜索附近的最小值点x,fval为最小值点对应的最小值。,例:求 在区间x=0.3,y=0.7附近的最小值点。,f=inline(p(1).2+p(2).2

25、+7,p);采用内联函数表示测试函数 minpoint,minval=fminsearch(f,0.3,0.7)minpoint=1.0e-004*-0.1766-0.1636minval=7.0000,六、代数方程求解,求非线性方程式的根的步骤:,定义方程式(形式),可用inline函数定义;代入适当范围的x及其对应f(x)值,画出方程函数曲线,了解该方程式根的大致位置;由图中决定f(x)与x轴相交的大致位置x0,通过fzero函数求出在 x0附近的根。,例:求方程,f=inline(2*exp(x).*sin(2*pi*x)-0.5,x);x=0:0.1:2;y=f(x);plot(x,y

26、)r=fzero(f,0.5)r=0.4752 r=fzero(f,1)r=1.0144,r=fzero(f,1.5)r=1.4910,七、数值积分与微分,数值积分基本原理 求解定积分的数值方法多种多样,如简单的梯形法、辛普生(Simpson)法、牛顿柯特斯(Newton-Cotes)法等都是经常采用的方法。它们的基本思想都是将整个积分区间a,b分成n个子区间xi,xi+1,i=1,2,n,其中x1=a,xn+1=b。这样求定积分问题就分解为求和问题。,数值积分的实现方法,变步长辛普生法基于变步长辛普生法,MATLAB给出了quad函数来求定积分。该函数的调用格式为:I n=quad(fnam

27、e,a,b)其中fname是被积函数名。a和b分别是定积分的下限和上限。返回参数I即定积分值。n为被积函数的调用次数。,例:求定积分。f=inline(exp(-0.5*x).*sin(x+pi/6);%定义被积函数 s=quad(f,0,3*pi)s=0.9008 n=77,牛顿柯特斯法,基于牛顿柯特斯法,MATLAB给出了quad8函数来求定积分。该函数的调用格式为:I n=quad8(fname,a,b)其中参数的含义和quad函数相似,该函数可以更精确地求出定积分的值,且一般情况下函数调用的步数明显小于quad函数,从而保证能以更高的效率求出所需的定积分值。,例:分别用quad函数和q

28、uad8函数求定积分的近似 值,并在相同的积分精度下,比较函数的调用 次数。f=inline(exp(-0.5*x).*sin(x+pi/6);%定义被积函数 s,n=quad8(f,0,3*pi)s=0.9008 n=33,例:求定积分。f=inline(x.*sin(x)./(1+cos(x).*cos(x);s=quad8(f,0,pi)s=2.4674 n=33,二重定积分的数值求解 使用MATLAB提供的dblquad函数就可以直接求出上述二重定积分的数值解。该函数的调用格式为:I=dblquad(f,a,b,c,d)该函数求f(x,y)在a,bc,d区域上的二重定积分。,例:,数值法:z=inline(x.y,x,y)z=Inline function:z(x,y)=x.y s1=dblquad(z,0,1,1,2)s1=0.4055 s1=dblquad(z,1,2,0,1)s1=1.2293,小 结 本节介绍了matlab语言的数值运算功能,通过学习应该掌握:如何创建矩阵、修改矩阵符号的用法矩阵及数组运算多项式运算非线性方程求解,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号