大型矩阵快速求逆算法的研究Word下载.doc
- 文档编号:14624611
- 上传时间:2022-10-23
- 格式:DOC
- 页数:29
- 大小:1.02MB
大型矩阵快速求逆算法的研究Word下载.doc
《大型矩阵快速求逆算法的研究Word下载.doc》由会员分享,可在线阅读,更多相关《大型矩阵快速求逆算法的研究Word下载.doc(29页珍藏版)》请在冰豆网上搜索。
逆
算
法
的
研
究
信息09本
耀魂雨
大型矩阵快速求逆算法的研究
本文首先介绍了逆矩阵的定义以及逆矩阵的相关性质。
其次,根据逆矩阵的相关理论主要介绍了矩阵求逆的几种常用方法。
如定义法、伴随矩阵法、初等变换法、三角分解法、分块矩阵法等,并运用软件matlab7.0对一些方法实现了程序化。
且通过多次检验证明了所编程序的正确性。
文章最后简要阐述了对一些特殊矩阵的求逆算法(如对称正定矩阵、有理矩阵),还有针对一般矩阵的广义逆矩阵的作了浅层次的探究。
本文的相关研究不仅对提高矩阵求逆的速度和准确度起着较为重要的作用。
而且对逆矩阵应用的进一步发展有着深远的意义。
关键词:
逆矩阵求逆算法Matlab7.0广义矩阵
逆矩阵的定义:
对于n阶方阵A,如果有一个n阶方阵B,使AB=BA=E,则说方阵A是可逆的,并把方阵B称为A的逆矩阵(其中只有方阵才有逆矩阵的概念)。
矩阵可逆的条件:
定理1若方阵A可逆,则A的行列式不等于0。
定理2若A的行列式不等于0,则A可逆,且
故,求逆矩阵可以用逆矩阵的定义来求或者利用求伴随矩阵法的方法,还可以用行初等变换法(本文仅以行初等变换为例)、矩阵的三角分解、矩阵分块等方法求得逆矩阵。
一、五种基本求逆矩阵的方法
1.1定义法求逆矩阵
用一个例子来解释定义法求逆矩阵的方法:
例:
求矩阵A的逆矩阵,其中
解:
因为,所以存在.
设=,由定义知,
所以.
由矩阵乘法得
.
由矩阵相等可解得
故
1.2伴随矩阵求逆矩阵(附算法)
用求伴随矩阵的方法求逆矩阵的原理分析如下:
设A=()为n阶矩阵,为|A|中元素的代数余子式,(i,j=1,2,…,n),则称矩阵
÷
ø
ö
ç
è
æ
=
nn
n
A
L
2
1
22
12
21
11
*
为A的伴随矩阵。
根据上述定理2:
若A的行列式不等于0,则A可逆,且,
1.3初等变换法求逆矩阵(附算法)
用初等变换法的方法求逆矩阵的原理分析如下:
引理1.3.1对mxn阶矩阵A,施行一次初等行变换,相当于在A的左边乘以相应m阶初等矩阵;
对A施行一次初等列变换,相当于在A的右边乘以相应的n阶初等矩阵。
公理1.3.1初等矩阵都是可逆矩阵,其逆矩阵还是初等矩阵。
推论1.3.1A可逆的充要条件为A可表为若干初等矩阵之积。
即
推论1.3.2A可逆,则A可由初等行变换化为单位矩阵。
(1)
由矩阵初等变换的这些性质可知,若A可逆,构造分块矩阵(A︱E),其中E为与A同阶的单位矩阵,那么
(2)
由
(1)式代入
(2)式左边,
有
上式说明分块矩阵(A︱E)经过初等行变换,原来A的位置变换为单位阵E,原来E的位置变换为我们所要求的,即
1.4三角分解求逆矩阵(附算法)
直接可以得到
从此方法把A矩阵进行LU分解,并得到A的逆矩阵。
1.5分块矩阵法求逆
此方法可将阶数较高的矩阵化为阶数较低的矩阵再求其逆,使计算简化
1、利用分块矩阵的乘法,求可逆矩阵的逆阵.
设分块矩阵其中A,C均可逆,求
令,于是有
可得
所以,从而
2、利用分块矩阵的初等变换,降阶求逆
定理1.5.1设A和B分别是可逆矩阵,C是k×
r矩阵,D是r×
k矩阵,“可逆”或“可逆”,则矩阵可逆。
上例说明定理3可以应用到任何阶(奇数阶或偶数阶)可逆矩阵的求逆问题中。
通常它使2n阶可逆阵的求逆问题转化为一些n阶可逆阵的求逆问题,而使2m+1阶可逆阵的求逆问题转化为一些m阶和一些m+1阶可逆阵的求逆问题,从而使计算的难度降低。
因而这种求逆矩阵的方法也称之为“降阶法”。
应当指出,当A,B可逆时,相平行地,对于形如的矩阵(这里A,B分别是k阶和r阶可逆矩阵,C是k×
k矩阵)有着类似的结论:
二、算法要求及算法分析:
这里仅运用Matlab7.0软件对求伴随矩阵、初等行变换及直接三角分解法求逆矩阵这三种方法编写了算法,并进行了适当的算法分析。
2.1算法要求
首先,不管是用求伴随矩阵A*还是利用初等变换求A的逆矩阵,都要先判定A矩阵是否为方阵。
通过判断A矩阵的行数和列数是否相等来判断A矩阵是否为方阵。
其次,在确定A矩阵为方阵后还须判别A是否可逆。
这里我们可以利用定理1,通过判别A的行列式是否为0,来确定A是否存在逆矩阵。
最后,运用求伴随矩阵、初等行变换及直接三角分解法的计算方法来编写代码。
2.2三种求逆算法及解释分析
以下是运用Matlab7.0编写的求逆矩阵的三个函数,以及对这三个函数的分析及比较:
1、利用求伴随矩阵的方法编写的求逆算法(代码如下)
M函数函数名:
[F]=solvenif1(A)
function[F]=solvenif1(A)
n=rank(A);
[x,y]=size(A);
ifx~=y%判断A矩阵是否为方阵
disp('
请注意:
因为该矩阵非方阵,所以该矩阵无逆.'
)
F='
A无逆矩阵'
;
return;
else
%disp('
该矩阵为方阵.'
d=det(A);
ifd==0%判断A矩阵是否存在逆矩阵
因为该矩阵非满秩,所以该矩阵无逆.'
else
%disp('
因为该矩阵满秩,所以该矩阵逆存在.'
fori=1:
forj=1:
B=A;
B(i,:
)=[];
B(:
j)=[];
C(j,i)=((-1)^(i+j))*det(B)/d;
end
end
F=C;
disp('
该矩阵的逆F='
end
分析:
利用求伴随矩阵的方法编写的求逆算法最主要的就是求元素的代数余子式。
故一定要把元素所在的行和列删除,且需要剩余部分组成的余子式输出。
解释:
B(i,:
%是为了选取元素的代数余子式。
其中
(i,j=1,2,3﹒﹒﹒n)为的代数余子式,B为(n-1)阶方阵。
C(j,i)=((-1)^(i+j))*det(B)/d;
%是求A*与A的行列式d的比,结果即为(=/d)。
运行代码:
⑴
>
clear;
A=[27-19;
-113-37],[F]=solvenif1(A)
A=
27-19
-113-37
因为该矩阵非方阵,所以该矩阵无逆.
F=
A无逆矩阵
⑵
A=[23-1;
-13-3;
115-11],[F]=solvenif1(A)
23-1
-13-3
115-11
因为该矩阵非满秩,所以该矩阵无逆.
⑶
A=[123;
221;
343];
该矩阵的逆F=
1.00003.0000-2.0000
-1.5000-3.00002.5000
1.00001.0000-1.0000
A*F
ans=
100
010
001
注:
该算法对任何大型可逆方阵都适用
2、利用初等行变换求逆矩阵(代码如下)
M函数函数文件名:
[F]=solvenif2(A)
function[F]=solvenif2(A)
ifx~=y
F='
d=det(A);
ifd==0
disp('
F='
%disp('
B=eye(x);
A=[A,B];
%把A矩阵和单位阵B按行合并
y=2*y;
fork=1:
x%该for循环是在选主元
max=abs(A(k,k));
r=k;
forL=k+1:
x
ifmax<
abs(A(L,k))
max=abs(A(L,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大型 矩阵 快速 算法 研究