用MATLAB计算矩阵与行列式共28页
- 格式:ppt
- 大小:4.44 MB
- 文档页数:28
MATLAB技术矩阵运算方法在科学计算和数据分析领域,MATLAB是一种常用的工具,它提供了丰富的函数和工具箱,尤其擅长处理矩阵运算。
本文将介绍一些MATLAB中常用的矩阵运算方法,展示如何利用这些方法解决问题。
1. 矩阵的创建与索引在MATLAB中,可以使用矩阵的行向量或列向量创建矩阵。
例如,通过使用中括号[ ]和分号;可以将一系列数值排列成一行或一列。
例如,以下代码将创建一个3x3的矩阵A,并将其索引为元素a(i,j):```MATLABA = [1, 2, 3; 4, 5, 6; 7, 8, 9];a(2,3) = A(2,3);```2. 矩阵的运算MATLAB提供了多种矩阵运算函数,包括加法、减法、乘法和除法等。
以下是一些例子:```MATLABB = A + 2; % 矩阵加法,将A的每个元素加2C = A - B; % 矩阵减法,将A的每个元素减B中对应元素的值D = A * B; % 矩阵乘法,将A和B相乘E = A ./ B; % 矩阵除法,将A的每个元素除以B中对应元素的值```此外,MATLAB还提供了矩阵转置、矩阵乘方和矩阵求逆等功能。
例如,以下是一些例子:```MATLABF = A.'; % 矩阵转置,将A的行变为列G = A^2; % 矩阵乘方,将A自乘一次H = inv(A); % 矩阵求逆,找到A的逆矩阵```3. 矩阵的特殊操作在MATLAB中,还有一些特殊的矩阵操作。
例如,使用diag函数可以创建或抽取矩阵的对角线元素。
以下是一些例子:```MATLABI = diag([1, 2, 3]); % 创建一个对角线元素为1、2、3的3x3矩阵J = diag(A); % 从矩阵A中提取对角线元素```此外,MATLAB提供了矩阵的行、列和元素求和的函数。
以下是一些例子:```MATLABrowSum = sum(A, 2); % 对矩阵A的每一行求和colSum = sum(A, 1); % 对矩阵A的每一列求和elemSum = sum(A(:)); % 对矩阵A的所有元素求和```4. 矩阵运算的应用矩阵运算在诸多应用中发挥着重要作用。
第五章线性代数的基本运算本章学习的主要目的:1 复习线性代数中有关行列式、矩阵、矩阵初等变换、向量的线性相关性、线性方程组的求解、相似矩阵和二次型的相关知识.2学会用MatLab 软件进行行列式的计算、矩阵的基本运算、矩阵初等变换、向量的线性相关性的判别、线性方程组的求解、二次型化标准形的运算.5.1 行列式5.1.1 n 阶行列式定义由2n 个元素),,2,1,(n j i a ij =组成的记号D=nnn n nn a a a a a a a a a 212222111211称为n 阶行列式.其值是所有取自不同行不同列的n 个元素的乘积n np 2p 21p 1a a a 的代数和,各项的符号由n 级排列n p p p 21决定,即D=∑-npp p n p p p 21n np 2p 21p 1)21(a a a)1(τ,其中∑np p p 21表示对所有n 级排列求和,),,,(21n p p p τ是排列n p p p 21的逆序数.5.1.2行列式的性质(1) 行列式与它的转置行列式相等.(2) 互换行列式的两行(列),行列式变号.(3) 若行列式有两行(列)完全相同,则此行列式为零.(4)行列式的某一行(列)中所有的元素都乘以同一数k,等于用数k 乘此行列式.(5) 若行列式有两行(列)元素成比例,则此行列式为零.(6) 若行列式的某一列(行)的元素是两数的和,则此行列式等于对应两个行列式之和.即nnn n ni n n i i nn n n ni n n i i nn n n ni ni n n i i i i a a a a a a a a a a a a a a a a a a a a aa a a a a a a a a a a a a a a a a a21'21'22221'112112121222211121121'21'222221'111211+=+++(7) 若行列式的某一行(列)的各元素乘以同一数加到另一行(列)对应的元素上去,行列式不变.(8) 行列式等于它的任一行(列)的各元素与其对应的代数余子式乘积之和,即),,2,1(,0,1j k n i k i ki D A a D nj ij =⎩⎨⎧≠===∑=,或),,2,1(,0,1i n j k j kj D A a D nik ij =⎩⎨⎧≠===∑=(9) 设A,B 是n 阶方阵,则T A A =,A A n k k =,B A AB =, (10)若A 是n 阶可逆矩阵,则0≠A ,AA 11=- (11) 设n 21,,,λλλ 是n 阶方阵A 的特征值,则i nA λ1i =∏=,(12) 设*A 是n 阶方阵A 的伴随矩阵,则2n *1≥=-n A A(13) 几种特殊行列式的计算:nn nn a a a a a a 22112211000000= , nn nnnn a a a a a a a a a 221122*********=nn nn n n a a a a a a a a a221121222111000=,112n 12)1(1222111211)1(000n n n n n na a a a a a a a a---=5.1.3 MatLab 计算行列式的命令det(var) %计算方阵var 的行列式例1 计算行列式3833262290432231----的值在MatLab 命令窗口输入:A=[1,-3,2,2;-3,4,0,9;2,-2,6,2;3,-3,8,3] det(A)执行结果:A = 1 -3 2 2 -3 4 0 9 2 -2 6 2 3 -3 8 3 ans = -50例2 计算行列式dcb 10110011001a---的值,其中a,b,c,d 是参数.在MatLab 命令窗口输入:syms a b c dA=[a,1,0,0;-1,b,1,0;0,-1,c,1;0,0,-1,d] det(A)执行结果:A =[ a, 1, 0, 0][ -1, b, 1, 0] [ 0, -1, c, 1] [ 0, 0, -1, d]ans =a*b*c*d+a*b+a*d+c*d+1例3 求方程0881441221111132=--x xx的根.(1) 先求行列式的值在MatLab 命令窗口输入:syms xA=[1,1,1,1;1,-2,2,x;1,4,4,x*x;1,-8,8,x^3]y=det(A)执行结果:A =[ 1, 1, 1, 1][ 1, -2, 2, x][ 1, 4, 4, x^2][ 1, -8, 8, x^3]y =-12*x^3+48*x+12*x^2-48(2) 求3次方程的根.首先通过函数的图形确定根的大致范围,在MatLab命令窗口输入:grid onezplot(y)图1观察图1,可知3个根大致在-2,0,4附近,下面求精确值,在MatLab命令窗口输入:yf=char(y);g1=fzero(yf,-2)g2=fzero(yf,0)g3=fzero(yf,4)执行结果: g1 = -2g2 = 1.0000 g3 = 2.0000可知方程的3个根分别为-2,1,2.5.1.4用MatLab 实现克拉默法则(1)克拉默法则非齐次线性方程组方程组⎪⎪⎩⎪⎪⎨⎧=+++=+++=+++nn nn n n n n n n b x a x a x a b x a x a x a b x a x a x a 22112222212********* 当其系数行列式0212222111211≠=nnn n nna a a a a a a a a D 时,此方程组有唯一解,且可表示为DD x D D x D D x n n ===,,,2211 其中),,2,1(n j D J =是把系数行列式D 中第j 列的元素用方程组右端的常数项代替后所得到的n 阶行列式,即nnj n nj n n n j j j a a b a a a a b a a D1,1,111,111,111+-+-= 对于齐次线性方程组⎪⎪⎩⎪⎪⎨⎧=+++=+++=+++000221122221211212111n nn n n nn n n x a x a x a x a x a x a x a x a x a 当其系数行列式0212222111211≠=nnn n nn a a a a a a a a a D时,此方程组有唯一零解;当D=0时,方程组有非零解.(2) 编写函数klm.m 实现用克拉默法则求解非齐次线性方程组.function x=klm(a,b) %参数a 代表方程组的系数矩阵,列矩阵b 代表方程组的常数列,%返回方程组的解[m,n]=size(a); if (m~=n)disp('克拉默法则不适用此方程组的求解!') elsed=det(a); if (d==0)disp('该方程组没有唯一解!') elsedisp('该方程组有唯一解!') for i=1:m e=a; e(:,i)=b; f=det(e); x(i)=f/d; end end end例4 用克拉默法则解下列方程组:12341234123412345242235232110x x x x x x x x x x x x x x x x +++=⎧⎪+-+=-⎪⎨---=-⎪⎪+++=⎩ 操作步骤:在MatLab 命令窗口输入:D=[1,1,1,1;1,2,-1,4;2,-3,-1,-5;3,1,2,11]; A=[5;-2;-2;0]; klm(D,A) 执行结果:该方程组有唯一解!ans = 1 2 3 -1方程组的解为1,3,2,1x 4321-====x x x例5 问a 取何值时,齐次方程组⎪⎩⎪⎨⎧=-+=-+=++-0)4(20)6(2022)5(3121321x a x x a x x x x a 有非零解? 根据齐次方程组有非零解,系数行列式为零,用MatLab 操作步骤如下:在MatLab 命令窗口输入:syms xA=[5-x,2,2;2,6-x,0;2,0,4-x]; yy=det(A)ezplot(yy,[0,10]) grid on 执行结果:行列式的值为:yy =80-66*x+15*x^2-x^3 作函数yy 的图形,如图2观察图2,可知根大致在附近,再输入命令:yf=char(yy); x1=fzero(yf,2) x2=fzero(yf,5) x3=fzero(yf,8) 执行结果: x1 = 2 x2 = 5 x3 = 8即a 取2,5,或8时,齐次方程组有非零解。
第3章Matlab中的矩阵及其运算矩阵是数学中一个十分重要的概念,其应用能够十分广泛,Matlab中最基本最重要的功能就是进行矩阵运算,其所有数值功能都已矩阵为基本单元来实现,掌握Matlab中的矩阵运算是十分重要的。
关键词:Matlab 矩阵特殊矩阵一、矩阵的生成1、矩阵生成有多种方式,通常使用的有四种:(1)在命令窗口中直接输入矩阵(2)通过语句和函数产生矩阵(3)在M文件中建立矩阵(4)从外部的数据文件中导入矩阵其中第一种是最简单常用的创建数值矩阵的方法,较适合创建较小的简单矩阵。
把矩阵的元素直接排列到方括号中,每行内元素用空格或逗号相隔,行与行之间的内容用分号相隔。
如:matrix=[1,1,1,1;2,2,2,2;3,3,3,3;4,4,4,4] %逗号形式相隔matrix =1 1 1 12 2 2 23 3 3 34 4 4 4matrix=[1 1 1 1;2 2 2 2 ;3 3 3 3;4 4 4 4] %采用空格形式相隔matrix =1 1 1 12 2 2 23 3 3 34 4 4 42、特殊矩阵的生成1、零矩阵和全1矩阵零矩阵指各个元素都为零的矩阵。
(1)A=zeros(M,N)命令中,A为要生成的零矩阵,M和N分别为生成矩阵的行和列。
(2)若存在已知矩阵B,要生成与B维数相同的矩阵,可以使用命令A=zeros(size(B))。
(3)要生成方阵时,可使用命令A=zeros(N)来生成N阶方针。
全1矩阵用ones函数实现。
A=zeros(4,5)A =0 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 0B=[1 2 3 4 5 ;2 3 4 5 6 ;9 8 7 6 5 ;8 7 6 5 4]B =1 2 3 4 52 3 4 5 69 8 7 6 58 7 6 5 4A=zeros(size(B))A =0 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 0A=zeros(5)A =0 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 0C=ones(5,6)C =1 1 1 1 1 11 1 1 1 1 11 1 1 1 1 11 1 1 1 1 11 1 1 1 1 1 C=ones(3)C =1 1 11 1 11 1 12、单位矩阵的生成(1)A=eye(M,N)命令,可生成单位矩阵,M和N分别为生成单位矩阵的行和列。
如何在Matlab中进行矩阵运算矩阵运算是Matlab中非常重要的一部分,它可以让我们更方便地进行数学建模和算法实现。
在本文中,我们将介绍在Matlab中进行矩阵运算的基本知识和常用函数。
1. 矩阵的定义与表示在Matlab中,可以使用数组来表示矩阵。
我们可以使用一对方括号[],每行之间使用分号; 或者逗号, 来表示不同的矩阵元素。
例如,下面是一个3行3列的矩阵的定义:A = [1, 2, 3; 4, 5, 6; 7, 8, 9];2. 矩阵的基本运算Matlab中的矩阵运算包括加法、减法、乘法和除法等。
下面我们将逐个介绍这些运算。
2.1 矩阵的加法和减法矩阵的加法和减法是逐元素进行的,也就是对应位置的元素相加或相减。
例如,我们有两个矩阵A和B:A = [1, 2; 3, 4];B = [5, 6; 7, 8];我们可以使用矩阵加法和减法运算符+和-,计算出它们的和和差:C = A + B;D = A - B;运行结果为:D = [-4, -4; -4, -4]2.2 矩阵的乘法矩阵的乘法是按照矩阵乘法的规则进行的。
在Matlab中,我们可以使用*或者dot函数进行矩阵的乘法运算。
例如,我们有两个矩阵A和B:A = [1, 2; 3, 4];B = [5, 6; 7, 8];我们可以使用矩阵乘法运算符*,计算出它们的乘积:C = A * B;运行结果为:C = [19, 22; 43, 50]除了使用*号,我们还可以使用dot函数进行矩阵的乘法运算。
例如:D = dot(A, B);运行结果为:D = [19, 22; 43, 50]2.3 矩阵的除法矩阵的除法是矩阵乘法的逆运算。
在Matlab中,我们可以使用/或者inv函数进行矩阵的除法运算。
例如,我们有两个矩阵A和B:A = [1, 2; 3, 4];我们可以使用矩阵除法运算符/,计算出它们的除法结果:C = A / B;运行结果为:C = [-0.3333, -0.6667; -0.1667, -0.3333]除了使用/号,我们还可以使用inv函数进行矩阵的除法运算。
matlab矩阵的行列式矩阵行列式是线性代数中的重要概念,它是用来描述矩阵性质的数学量。
本文将介绍以下内容:1. 什么是矩阵行列式?3. 简单应用实例。
矩阵行列式(Determinant)是一个正方形矩阵所具有的一个标量值,通常用 |A| 表示。
行列式的值可以用来判断矩阵是否有逆矩阵、是否是满秩矩阵和正定矩阵等方面的特性。
对于一个矩阵 A,如果它是一个 2*2 的矩阵,那么计算它的行列式很简单,可以用以下公式:|A| = a11*a22 - a12*a21其中,a11, a12, a21 和 a22 是矩阵 A 中的元素。
如果矩阵 A 是一个 3*3 的矩阵,我们需要使用 Sarrus法则来计算行列式。
具体做法是:1) 复制一份 A,将其右侧附加在 A 的右侧,形成一个 3*6 的矩阵。
2) 沿着主对角线上的元素进行乘积,再求和。
即:- a31*a22*a13 - a32*a23*a11 - a33*a21*a12如果 A 是一个 n*n 的矩阵,我们可以使用元素的余子式来计算行列式,其中余子式的计算方法是:Aij = (-1) ^ (i+j)*Mij其中,i 和 j 分别表示矩阵 A 中的行和列,Mij 是删去第 i 行和第 j 列的矩阵的行列式。
最终,我们可以将余子式和矩阵 A 中的元素相乘,再求和得到矩阵的行列式。
假设有如下 3*3 矩阵 A:1 2 34 5 67 8 9(a) A11 = (-1)^(1+1) * (5*9 - 8*6) = -3然后,我们可以求出矩阵 A 的行列式:= 0因此,我们可以得到结论:矩阵 A 的行列式为 0,这说明矩阵 A 是一个奇异矩阵,即 A 没有逆矩阵。
总结。
怎么⽤matlab进⾏矩阵运算?MATLAB具有⼏乎所有类型的通⽤矩阵计算功能。
有函数可以得到特征值。
命令⾏键⼊:eig(A)点击“Enter”键。
如图12所⽰。
以及单值。
命令⾏键⼊:svd(A)点击“Enter”键。
如图13所⽰。
“多”函数⽣成⼀个包含特征多项式系数的向量。
矩阵a的特征多项式是:det(λI-A)。
命令⾏键⼊:p = round(poly(A))点击“Enter”键。
如图14所⽰。
我们可以很容易地找到⼀个多项式的根使⽤根函数。
这些实际上是原始矩阵的特征值。
命令⾏键⼊:roots(p)点击“Enter”键。
如图15所⽰。
MATLAB在矩阵计算之外有许多应⽤。
要卷积两个向量。
.命令⾏键⼊:q = conv(p,p)点击“Enter”键。
如图16所⽰。
...或再次卷积并绘制结果。
命令⾏键⼊:r = conv(p,q)plot(r);点击“Enter”键。
如图17、18所⽰。
在任何时候,我们都可以使⽤who或whos命令获得存储在内存中的变量列表。
命令⾏键⼊:whos 点击“Enter”键。
如图19所⽰。
通过键⼊特定变量的名称,可以获得该变量的值。
命令⾏键⼊:A点击“Enter”键。
如图20所⽰。
通过⽤逗号或分号分隔每个语句,可以在⼀⾏上有不⽌⼀条语句。
如果您没有分配⼀个变量来存储⼀个操作的结果,那么结果将存储在⼀个名为ans的临时变量中。
命令⾏键⼊:sqrt(-1)点击“Enter”键。
如图21所⽰。
正如你所看到的,MATLAB在计算中很容易处理复数。
以上就是⼩编为⼤家带来的怎么⽤matlab进⾏矩阵运算全部内容,希望对⼤家有所帮助更多内容请继续关注。
上⼀页1 2下⼀页阅读全⽂。