矩阵与线性代数计算

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1/24第三章矩阵与线性代数计算MATLAB,即“矩阵实验室”,它是以矩阵为基本运算单元。因此,本章从最基本的运算单元出发,介绍MATLAB的命令及其用法。3.1矩阵的定义由m×n个元素aij(i=1,2,…m;j=1,2,…n)排列成的矩形阵称为一个m行n列的矩阵,或m×n阶矩阵,可以简记为A=(aij)m×n,其中的aij叫做矩阵的第i行第j列元素。mnmmnnaaaaaaaaaA212222111211当m=n时,称A为n阶方阵,也叫n阶矩阵;当m=1,n≥2时,即A中只有一行时,称A为行矩阵,或行向量(1维数组);当m≥2,n=1时,即A中只有一列时,称A为列矩阵,或列向量;当m=1,n=1时,即A中只有一个元素时,称A为标量或数量(0维数组)。3.2矩阵的生成1.实数值矩阵输入MATLAB的强大功能之一体现在能直接处理向量或矩阵。当然首要任务是输入待处理的向量或矩阵。不管是任何矩阵(向量),我们可以直接按行方式输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔,且空格个数不限;不同的行用分号(;)分隔。所有元素处于一方括号([])内;当矩阵是多维(三维以上),且方括号内的元素是维数较低的矩阵时,会有多重的方括号。如:【例3-1】矩阵的生成例。a=[123;456;789]b=[11.11.21.31.41.51.61.71.81.9;22.12.22.32.42.52.62.72.82.9;33.13.23.33.43.53.63.73.83.9]Null_M=[]%生成一个空矩阵2/24a=123456789b=1.00001.10001.20001.30001.40001.50001.60002.00002.10002.20002.30002.40002.50002.60003.00003.10003.20003.30003.40003.50003.60001.70001.80001.90002.70002.80002.90003.70003.80003.9000Null_M=[]2.复数矩阵输入复数矩阵有两种生成方式:【例3-2】a=2.7;b=13/25;C=[1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+1]C=1.00005.4000+0.5200i0.85440.70715.30004.5000【例3-3】矩阵的生成例。R=[123;456],M=[111213;141516]CN=R+i*MR=123456M=111213141516CN=1.0000+11.0000i2.0000+12.0000i3.0000+13.0000i4.0000+14.0000i5.0000+15.0000i6.0000+16.0000i3大矩阵的生成对于大型矩阵,一般创建M文件,以便于修改:3/24【例3-4】用M文件创建大矩阵,文件名为c3e4.mexm=[456468873257955216875448881365456788982154566845896545987548810963377在MATLAB命令窗口输入:c3e4;size(exm)%显示exm的大小ans=56%表示exm有5行6列。4特殊矩阵的生成命令全零阵函数zeros格式B=zeros(n)%生成n×n全零阵B=zeros(m,n)%生成m×n全零阵B=zeros([mn])%生成m×n全零阵B=zeros(size(A))%生成与矩阵A相同大小的全零阵命令单位阵函数eye格式Y=eye(n)%生成n×n单位阵Y=eye(m,n)%生成m×n单位阵Y=eye(size(A))%生成与矩阵A相同大小的单位阵命令全1阵函数ones格式Y=ones(n)%生成n×n全1阵Y=ones(m,n)%生成m×n全1阵Y=ones([mn])%生成m×n全1阵Y=ones(size(A))%生成与矩阵A相同大小的全1阵命令均匀分布随机矩阵函数rand格式Y=rand(n)%生成n×n随机矩阵,其元素在(0,1)内Y=rand(m,n)%生成m×n随机矩阵4/24Y=rand([mn])%生成m×n随机矩阵Y=rand(size(A))%生成与矩阵A相同大小的随机矩阵【例3-5】产生一个3×4随机矩阵R=rand(3,4)R=0.95010.48600.45650.44470.23110.89130.01850.61540.60680.76210.82140.7919【例3-6】产生一个在区间[10,20]内均匀分布的4阶随机矩阵a=10;b=20;x=a+(b-a)*rand(4)x=19.218119.354710.578911.388917.382119.169013.528712.027711.762714.102718.131711.987214.057118.936510.098616.0379命令正态分布随机矩阵函数randn格式Y=randn(n)%生成n×n正态分布随机矩阵Y=randn(m,n)%生成m×n正态分布随机矩阵Y=randn([mn])%生成m×n正态分布随机矩阵Y=randn(size(A))%生成与矩阵A相同大小的正态分布随机矩阵【例3-7】产生均值为0.6,方差为0.1的4阶矩阵mu=0.6;sigma=0.1;x=mu+sqrt(sigma)*randn(4)x=0.83110.77990.13351.05650.78270.51920.52600.48900.61270.48060.63750.79710.81410.50640.69960.8527命令产生随机排列函数randperm5/24格式p=randperm(n)%产生1~n之间整数的随机排列【例3-8】整数的随机排列。randperm(6)ans=321546命令产生线性等分向量函数linspace格式y=linspace(a,b)%在(a,b)上产生100个线性等分点y=linspace(a,b,n)%在(a,b)上产生n个线性等分点命令产生对数等分向量函数logspace格式y=logspace(a,b)%在()之间产生50个对数等分向量y=logspace(a,b,n)命令计算矩阵中元素个数n=numel(a)%返回矩阵A的元素的个数命令产生以输入元素为对角线元素的矩阵函数blkdiag格式out=blkdiag(a,b,c,d,…)%产生以a,b,c,d,…为对角线元素的矩阵【例3-9】产生以输入元素为对角线元素的矩阵out=blkdiag(1,2,3,4)out=1000020000300004命令Magic(魔方)矩阵函数magic格式M=magic(n)%产生n阶魔方矩阵【例3-10】产生3阶魔方矩阵M=magic(3)M=816357492ba10,106/243.3矩阵的加减乘除运算1加、减运算设u为一数量,A=(aij)m×n和B=(bij)r×s为两矩阵,则加减运算的规定为:对应元素相加、减,即按线性代数中矩阵的“十”,“一”运算进行。u±A=(u±aij)m×nA±B=(aij±bij)m×nu*A=(u*aij)m×n【例3-11】矩阵的加减运算。输入:u=9a=[123;456;780]b=[345;678;9102]c=u+ad=a-be=u*a%和数组运算相同结果:c=10111213141516179d=-2-2-2-2-2-2-2-2-2e=91827364554637202矩阵的乘及乘方运算设u为一数量,A=(aij)m×l和B=(bij)l×n为两矩阵,A的列数l和B的行数l相等,可进行A与B的乘法运算。mlmmllaaaaaaaaaA212222111211ln212222111211bbbbbbbbbBllnnmnmmnncccccccccBAC2122221112117/24这里cij=ai1b1j+ai2b2j+…ailblj=tjltitba1它表示C的第i行第j列的元素是A第i行的各元分别与B第j列的各对应元的乘积的和。【例3-12】矩阵的乘及乘方运算。a=[123;456;780]f=[123]g=f*ah=f.*aa=123456780g=303615???Errorusing==.*3.方阵的求逆单位矩阵:主对角线上的元素都是1,其他各元素都是0的n阶矩阵与任意n阶矩阵A左乘或右乘的乘积仍然是A自身,即EA=AE=A,因此我们叫E为n阶单位矩阵。11E对满秩方阵A,存在A-1,使A*A-1=A-1*A=E;我们称A-1是A的逆矩阵。命令逆函数inv格式Y=inv(X)%求方阵X的逆矩阵。【例3-13】求343122321A的逆矩阵A=[123;221;343];Y=inv(A)或Y=A^(-1)则结果显示为Y=1.00003.0000-2.0000-1.5000-3.00002.50001.00001.0000-1.00008/24【例3-14】求逆运算。A=[21-1;212;1-11];formatrat%用有理格式输出D=inv(A)D=1/301/301/3-2/3-1/31/304.除法运算右除:矩阵a右除以矩阵b定义为:a/b=a*b^(-1)=a*inv(b)左除:矩阵b左除以矩阵a定义为:a\b=a^(-1)*b=inv(a)*bMatlab提供了两种除法运算:左除(\)和右除(/)。一般情况下,x=a\b是方程a*x=b的解,而x=b/a是方程x*a=b的解。即:ax=ba(-1)*a*x=a(-1)*bX=inv(a)*b=a\bxa=bX*a*a(-1)=b*a(-1)X=b*a(-1)=b*inv(a)=b/a【例3-15】除法运算a=[123;426;749]b=[4;1;2];x=a\b则显示:x=-1.50002.00000.5000在数组除法中,A./B表示A中元素与B中元素对应相除。5.向量点积向量的点乘(内积):维数相同的两个向量的点乘。函数dot格式C=dot(A,B)%若A、B为向量,则返回向量A与B的点积,A与B长度相同;若为矩阵,则A与B有相同的维数。9/24C=dot(A,B,dim)%在dim维数中给出A与B的点积【例3-16】向量点积X=[-102];Y=[-2-11];Z=dot(X,Y)则显示:Z=46.向量叉乘在数学上,两向量的叉乘是一个过两相交向量的交点且垂直于两向量所在平面的向量。在Matlab中,用函数cross实现。函数cross格式C=cross(A,B)%若A、B为向量,则返回A与B的叉乘,即C=A×B,A、B必须是3个元素的向量;若A、B为矩阵,则返回一个3×n矩阵,其中的列是A与B对应列的叉积,A、B都是3×n矩阵。C=cross(A,B,dim)%在dim维数中给出向量A与B的叉积。A和B必须具有相同的维数,size(A,dim)和size(B,dim)必须是3。【例3-17】计算垂直于向量(1,2,3)和(4,5,6)的向量。a=[123];b=[456];c=cross(a,b)结果显示:c=-36-3可得垂直于向量(1,2,3)和(4,5,6)的向量为±(-3,6,-3)7.混合积混合积由以上两函数实现:【例3-18】计算向量a=(1,2,3)、b=(4,5,6)和c=(-3,6,-3)的混合积)cb(aa=[123];b=[456];c=[-36-3];x=dot(a,cross(b,c))结果显示:x=54注意:先叉乘后点乘,顺序不可颠倒。8.张量积函数kron10/24格式C=kron(A,B)%A为m×n矩阵,B为p×q矩阵,则C为mp×nq矩阵。说明A与B的张量积定义为:BaBaBaBaBaBaBaBaBaBACmn2m1mn22221n11211

1 / 24
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功