求逆矩阵的快速方法(用于编程)
求矩阵的逆矩阵的方法
求矩阵的逆矩阵的方法矩阵的逆是一个在线性代数中非常重要的概念。
逆矩阵是一个方阵(A)的伴随矩阵(ad(A))除以该方阵的行列式(det(A))的结果,即逆矩阵(A-1) = ad(A) / det(A)。
要找到一个矩阵的逆矩阵,首先需要确保矩阵是可逆的。
矩阵可逆的充分必要条件是矩阵的行列式不等于零,即det(A) ≠0。
只有当行列式不等于零时,才能找到逆矩阵。
如果行列式等于零,该矩阵就被称为奇异矩阵,它没有逆矩阵。
接下来,我将详细介绍两种常见的方法来计算矩阵的逆。
方法一:伴随矩阵法伴随矩阵法是一种直接计算矩阵的逆矩阵的方法。
首先,我们计算出原始矩阵的伴随矩阵,然后再除以矩阵的行列式即可得到逆矩阵。
步骤如下:1. 计算原始矩阵的伴随矩阵(ad(A))。
伴随矩阵的每个元素(ad(A)ij)等于原始矩阵(A)的代数余子式(Aij)的代数余子式(Aij)。
其中,代数余子式(Aij)是矩阵中去掉第i行和第j列的部分矩阵的行列式(det(Aij))乘以(-1)^(i+j)。
2. 计算原始矩阵的行列式(det(A))。
3. 计算逆矩阵(A-1)。
逆矩阵的每个元素(A-1)ij等于伴随矩阵(ad(A))的每个元素(ad(A)ij)除以原始矩阵的行列式(det(A))。
伴随矩阵法的优点是直接,可以一步得到逆矩阵。
然而,该方法在求解大型矩阵时计算量较大。
方法二:初等行变换法初等行变换法是通过一系列的初等行变换来得到一个单位矩阵,然后通过对单位矩阵进行相同的初等行变换得到逆矩阵。
步骤如下:1. 将原始矩阵(A)写在左侧,单位矩阵(I)写在右侧,构成一个增广矩阵[A I]。
2. 通过一系列的行变换,将左侧矩阵变成单位矩阵。
在每一步行变换时,同样地对右侧的单位矩阵做相同的变换。
3. 当左侧的矩阵完全变成单位矩阵时,右侧的矩阵就是原始矩阵的逆矩阵。
初等行变换法的优点是对于大型矩阵来说,计算量较小。
然而,该方法需要一定的手工计算和整数运算,可能会产生较大的误差。
编程计算逆矩阵
编程计算逆矩阵摘要:一、引言二、逆矩阵的概念和性质三、计算逆矩阵的方法1.通过高斯消元法计算逆矩阵2.通过伴随矩阵法计算逆矩阵四、编程实现逆矩阵计算1.使用Python 编程语言2.编写计算逆矩阵的函数3.测试并验证结果五、总结正文:一、引言在线性代数中,矩阵的逆矩阵是一个非常重要的概念。
逆矩阵可以用于解决线性方程组、求解矩阵的行列式和迹等问题。
在实际应用中,我们常常需要计算矩阵的逆矩阵。
本篇文章将介绍如何计算逆矩阵以及编程实现这一过程。
二、逆矩阵的概念和性质一个矩阵A 的逆矩阵,记作A^-1,满足以下性质:1.A * A^-1 = A^-1 * A = I,其中I 是单位矩阵。
2.A^-1 的行列式等于1/|A|,其中|A|表示矩阵A 的行列式。
3.若A 可逆,则A^-1 唯一。
三、计算逆矩阵的方法1.通过高斯消元法计算逆矩阵高斯消元法是一种常用的计算逆矩阵的方法。
其基本思想是将矩阵A 化为上三角矩阵,然后按照主元列的顺序,用其代数余子式表示逆矩阵的元素。
2.通过伴随矩阵法计算逆矩阵伴随矩阵法是另一种计算逆矩阵的方法。
首先计算矩阵A 的伴随矩阵A*,然后根据A*的性质求得逆矩阵A^-1。
四、编程实现逆矩阵计算1.使用Python 编程语言Python 是一种功能强大的编程语言,可以方便地实现矩阵计算。
我们将使用Python 编写一个计算逆矩阵的函数。
2.编写计算逆矩阵的函数我们可以使用高斯消元法来编写计算逆矩阵的函数。
首先,将矩阵A 转换为增广矩阵,然后进行高斯消元,最后根据回代求得逆矩阵。
3.测试并验证结果为了验证计算结果的正确性,我们可以使用矩阵的行列式和迹来检验逆矩阵。
如果计算得到的逆矩阵满足性质,那么计算结果就是正确的。
五、总结本文介绍了计算逆矩阵的方法以及编程实现这一过程。
逆矩阵在解决线性方程组、求解矩阵的行列式和迹等问题中具有重要意义。
(完整版)逆矩阵的几种求法与解析(很全很经典)
逆矩阵的几种求法与解析矩阵是线性代数的主要内容,很多实际问题用矩阵的思想去解既简单又快捷.逆矩阵又是矩阵理论的很重要的内容, 逆矩阵的求法自然也就成为线性代数研究的主要内容之一.本文将给出几种求逆矩阵的方法.1.利用定义求逆矩阵定义: 设A 、B 都是n 阶方阵, 如果存在n 阶方阵B 使得AB= BA = E, 则称A 为可逆矩阵, 而称B 为A 的逆矩阵.下面举例说明这种方法的应用.例1 求证: 如果方阵A 满足A k= 0, 那么EA 是可逆矩阵, 且(E-A )= E + A + A +…+A 1-21-K 证明 因为E 与A 可以交换, 所以(E- A )(E+A + A +…+ A )= E-A ,21-K K 因A = 0 ,于是得 K (E-A)(E+A+A +…+A )=E ,21-K 同理可得(E + A + A +…+A )(E-A)=E ,21-K 因此E-A 是可逆矩阵,且(E-A)= E + A + A +…+A .1-21-K 同理可以证明(E+ A)也可逆,且(E+ A)= E -A + A +…+(-1)A .1-21-K 1-K 由此可知, 只要满足A =0,就可以利用此题求出一类矩阵E A 的逆矩阵.K ±例2 设 A =,求 E-A 的逆矩阵.⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡0000300000200010分析 由于A 中有许多元素为零, 考虑A 是否为零矩阵, 若为零矩阵, 则可以K 采用例2 的方法求E-A 的逆矩阵.解 容易验证A =, A =, A =02⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡00000000600002003⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡0000000000006004而 (E-A)(E+A+ A + A )=E,所以23(E-A)= E+A+ A + A =.1-23⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡10003100621062112.初等变换法求元素为具体数字的矩阵的逆矩阵,常用初等变换法.如果A 可逆,则A 可通过初等变换,化为单位矩阵I ,即存在初等矩阵使S P P P ,,21 (1)A=I ,用A 右乘上式两端,得:s p p p 211- (2) I= A s p p p 211-比较(1)(2)两式,可以看到当A 通过初等变换化为单位矩阵的同时,对单位矩阵I 作同样的初等变换,就化为A 的逆矩阵A .1-用矩阵表示(A I )为(I A ),就是求逆矩阵的初等行变换法,−−−→−初等行变换1-它是实际应用中比较简单的一种方法.需要注意的是,在作初等变换时只允许作行初等变换.同样,只用列初等变换也可以求逆矩阵.例1 求矩阵A 的逆矩阵.已知A=.⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡521310132解 [A I]→⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡100521010310001132→⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡001132010310100521 →⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--3/16/16/1100010310100521→⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-----3/16/16/110012/32/10103/46/136/1001故 A =.1-⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-----3/16/16/112/32/13/46/136/1在事先不知道n 阶矩阵是否可逆的情况下,也可以直接用此方法.如果在初等变换过程中发现左边的矩阵有一行元素全为0,则意味着A 不可逆,因为此时表明=0,则A 不存在.A 1-例2 求A=.⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡987654321解 [A E]=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡100987010654001321→⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡------1071260014630001321 .→⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡----121000014630001321由于左端矩阵中有一行元素全为0,于是它不可逆,因此A 不可逆.3.伴随阵法定理 n 阶矩阵A=[a ]为可逆的充分必要条件是A 非奇异.且ij A =1-A 1⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡nn nnn n A A A A A A A A A (212221212111)其中A 是中元素a 的代数余子式.ij A ij 矩阵称为矩阵A 的伴随矩阵,记作A ,于是有A = A .⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡nn nnn n A A A A A AA A A (2122212)1211131-A 13证明 必要性:设A 可逆,由A A =I ,有=,则=,所以1-1-AA I A 1-A I A0,即A 为非奇异.≠充分性: 设A 为非奇异,存在矩阵B=,A 1⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡nn nnn n A A A A A A A A A .....................212221212111其中AB=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡nn n n n n a a a a a a a a a (2)12222111211⨯A 1⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡nn nnn n A A A A A A A A A ............... (2122212)12111===I A 1⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡A A A A ............0...00...0⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡1...00...1......0...100...01同理可证BA=I.由此可知,若A 可逆,则A =A .1-A13用此方法求逆矩阵,对于小型矩阵,特别是二阶方阵求逆既方便、快阵,又有规律可循.因为二阶可逆矩阵的伴随矩阵,只需要将主对角线元素的位置互换,次对角线的元素变号即可.若可逆矩阵是三阶或三阶以上矩阵,在求逆矩阵的过程中,需要求9个或9个以上代数余子式,还要计算一个三阶或三阶以上行列式,工作量大且中途难免出现符号及计算的差错.对于求出的逆矩阵是否正确,一般要通过AA =I 来检验.一1-旦发现错误,必须对每一计算逐一排查.4.分块矩阵求逆法4.1.准对角形矩阵的求逆命题 设A 、A 都是非奇异矩阵,且A 为n 阶方阵,A 为m 阶方阵11221122 ⎥⎦⎤⎢⎣⎡221100A A ⎥⎦⎤⎢⎣⎡--12211100A A 证明 因为==0, 所以A 可逆.A 22110A A 11A 22A ≠设A =,于是有=,1-⎥⎦⎤⎢⎣⎡WZY X⎥⎦⎤⎢⎣⎡W Z Y X ⎥⎦⎤⎢⎣⎡221100A A ⎥⎦⎤⎢⎣⎡m nI I 00其中 X A =I , Y A =0,Z A =0,W A =I .又因为A 、A 都可逆,用11n 221122m 1122A 、A 分别右乘上面左右两组等式得:111-122-X= A ,Y=0,Z=0,W= A 111-122-故 A = 21⎥⎦⎤⎢⎣⎡--12211100A A 把上述结论推广到每一个子块都是非奇异矩阵的准对角形状矩阵中去,即:=121...-⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡k A A A ⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡---11211...k A A A 4.2.准三角形矩阵求逆命题 设A 、A 都是非奇异矩阵,则有1122=12212110-⎥⎦⎤⎢⎣⎡A A A ⎥⎦⎤⎢⎣⎡-----122122121111110A A A A A 证明 因为=⎥⎦⎤⎢⎣⎡2212110A A A⎥⎦⎤⎢⎣⎡--I A A I 012111⎥⎦⎤⎢⎣⎡22110A A 两边求逆得=1121110--⎥⎦⎤⎢⎣⎡-I A A I 1221211-⎥⎦⎤⎢⎣⎡A A A ⎥⎦⎤⎢⎣⎡--12211100A A 所以 =1221211-⎥⎦⎤⎢⎣⎡A A A ⎥⎦⎤⎢⎣⎡--I A A I 012111⎥⎦⎤⎢⎣⎡--12211100A A =⎥⎦⎤⎢⎣⎡-----122122121111110A A A A A 同理可证=12221110-⎥⎦⎤⎢⎣⎡A A A ⎥⎦⎤⎢⎣⎡-----122122211111110A A A A A 此方法适用于大型且能化成对角子块阵或三角块阵的矩阵. 是特殊方阵求逆的一种方法,并且在求逆矩阵之前,首先要将已给定矩阵进行合理分块后方能使用.5.恒等变形法恒等变形法求逆矩阵的理论依据为逆矩阵的定义,此方法也常用与矩阵的理论推导上.就是通过恒等变形把要求的值化简出来,题目中的逆矩阵可以不求,利用AA =E ,把题目中的逆矩阵化简掉。
编程求解逆矩阵
本程序是运用矩阵的初等变换的知识来求解矩阵的逆矩阵的。
1.理论基础:若存在矩阵P使得矩阵A有PA = E那么 P = A’。
所以如果我们将(A,E)化成了(E,P),那么,P就是我们要求的A’。
2.由上面的分析可知,我们思路可分为以下3步:(1)申请一个新的矩阵,它是(A,E)(2) 将A先对角化(3)再将A单位化E,这是A后面的部分就是A’了。
3.编程实现#include<stdio.h>#include<stdlib.h>float A1[10],A2[10][2*10],B[10][10];//原矩阵、加上单位矩阵后的矩阵、所求的逆矩阵void ShangSanJiao(int n)//化成上三角{int k,i,j,l=0,temp;if(A2[0][0] == 0){while(A2[l][0]==0&&l<n-1)l++;}if(l!=0)//如果[0][0]处的数为0,则交换{for(i=0;i<2*n;i++){temp = A2[l][i];A2[l][i] = A2[0][i];A2[0][i] = temp;}}for(k=0;k<n-1;k++){for(i=k+1;i<n;i++)A1[i] = A2[i][k]/A2[k][k];for(l=k+1;l<n;l++){for(j=0;j<2*n;j++)A2[l][j] = A2[l][j] - A2[k][j]*A1[l];}}}void DuiJiaoXian(int n)//将对角线上的数化1,这样方便将原矩阵化成单位矩阵{int i,j;for(i=n-1;i>=0;i--){A1[i]=A2[i][i];}for(i=n-1;i>=0;i--){for(j=0;j<2*n;j++)A2[i][j] = A2[i][j]/A1[i];}}void DanWei(int n)//将原矩阵化成单位矩阵{int i,j,l;float temp;for(i=n-1;i>0;i--){for(j=i-1;j>=0;j--)temp = A2[j][i];for(l=0;l<2*n;l++)A2[j][l] = A2[j][l] - A2[i][l]*temp;}}}int main(){int n;//矩阵的阶数scanf("%d",&n);if(n>10){printf("矩阵不再表示的范围内!");exit(-1);}int i,j;for(i=0;i<n;i++){for(j=0;j<n;j++){scanf("%f",&A2[i][j]);for(j=n;j<2*n;j++)A2[i][j]=0;}for(i=0,j=n;i<n,j<2*n;i++,j++) A2[i][j] = 1;/* for(i=0;i<n;i++){for(j=0;j<2*n;j++){printf("%f ",A2[i][j]);}printf("\n");}printf("\n");*///显示输入的矩阵ShangSanJiao(n);//化成上三角/* for(i=0;i<n;i++){for(j=0;j<2*n;j++){printf("%f ",A2[i][j]);}printf("\n");}printf("\n");*///显示上三角的矩阵DuiJiaoXian(n);//对角化1/* for(i=0;i<n;i++){for(j=0;j<2*n;j++){printf("%f ",A2[i][j]);}printf("\n");}printf("\n");*///显示对角线化1后的矩阵DanWei(n);//将原矩阵单位化/* for(i=0;i<n;i++){for(j=0;j<2*n;j++){printf("%f ",A2[i][j]);}printf("\n");}printf("\n");*///将所求矩阵移到B中for(i=0;i<n;i++)for(j=n;j<2*n;j++){B[i][j-n] =A2[i][j];}//显示所求的逆矩阵for(i=0;i<n;i++){for(j=0;j<n;j++){printf("%f ",B[i][j]);}printf("\n");}return 0;}。
求逆矩阵的快速方法(用于编程)
1 引 言
求逆矩阵的方法通常有 2 种. 一种是行列式方法A - 1 =
A , A 3 为 A 的伴随矩阵 . 当 A 的阶数 n ≥4 A
2 主要结论
定理 1 假设 A ∈Cn×n 可逆, 则 A 可以分解为 A = QR , 其中 Q 为酉阵, 即 Q ・Q H = E , R 是上三角阵 . - 1 ( ) ( ) 定理 2 假设 R = R ij n×n 是上三角阵, R ij = 0, 当 i > j 时, 并且 R ii ≠0, 1 ≤ i ≤n , 则 R = Ρij n×n 可 通过以下算法得出: ( i) Ρij = 0, 当 i> j 时, 即 R - 1 也是上三角阵; - 1 ( ii) Ρkk = R kk ( 1≤k ≤n ) ;
m
( iii) Ρk , k + m = -
∑R
j= 1
k, k+ j
・Ρk + j , k + m R kk ( 1≤m ≤n - 1, 1≤k ≤n - m ).
定理 3 假设 A 可逆, 且 A = QR , 其中 Q 是酉阵, 则 A - 1 = R - 1 ・Q H , Q H 是 Q 的共轭转置 .
∑R
j= 1
k, k+ j
・Ρk + j , k + m R kk ( 1≤m ≤n - 1; 1≤k ≤n - m ).
Fa st Cacula tion for the Converse M a tr ix
12-逆矩阵的求法3-4
方法二: 初等变换法。
A可逆 A 可逆, A
1
1
P 1P 2 P s
P 1P 2 P sA E 1 P 1P 2 P sE A
( A E ) ( E A )
行变换
1
方法三:用定义求。 定义:对n阶方阵A,若有n阶矩阵B,使
E Ak E
练 习
设 A,B 为 n 阶方阵,且 E AB 与 E BA 均可逆, 证明 ( E BA)1 E B( E AB)1 A.
证 因为
( E BA 〔 ) E B( E AB) 1 A〕
E BA ( E BA) B( E AB) A E BA ( B BAB )( E AB) A
方法三:用定义求。 对n阶方阵A,只需找到一个n阶矩阵B,使 AB=E或者BA=E就行了。
行变换
1
方法四:用定义证明B为A的逆。
也就是证明等式AB=E成立或者BA=E成立。
E BA B( E AB)( E AB) 1 A
1
1
E BA BA E
故 ( E BA) 1 E B( E AB) 1 A.
方法二: 初等变换法。
逆阵的求法 1 1 方法一: 用A 求。 A A A
( A E ) ( E A )
解 由 2 A( A E ) A3,得
A3 2 A2 2 A 0,
所以
从而有
(A3 E ) (2 A2 2 A) E,
( E A)( A2 A E ) E.
即
( E A) A A E.
fortran方程求逆
fortran方程求逆Fortran方程求逆Fortran是一种广泛用于科学计算和数值分析的编程语言,它可以用于解决各种数学问题,包括求解方程和矩阵运算。
在数值分析中,求解矩阵的逆是一个常见的问题,而Fortran可以提供一种高效且准确的方法来求解矩阵的逆。
在Fortran中,我们可以使用线性代数库或自己编写代码来实现矩阵求逆的算法。
下面将介绍一种常见的求解方法,即LU分解法。
我们需要明确什么是矩阵的逆。
对于一个n阶方阵A,如果存在一个n阶方阵B,使得AB=BA=I(其中I为单位矩阵),则称B为A的逆矩阵,记作A^-1。
在Fortran中,我们可以使用LU分解法来求解矩阵的逆。
该方法将矩阵A分解为下三角矩阵L和上三角矩阵U的乘积,即A=LU。
然后通过解两个线性方程组,即LY=I和UX=Y,可以求得矩阵的逆。
我们需要将矩阵A进行LU分解。
在Fortran中,我们可以使用库函数或自己编写代码来实现LU分解。
下面是一个简化的LU分解代码示例:```fortranprogram LU_decompositionimplicit noneinteger, parameter :: n = 3integer :: i, j, kreal :: A(n,n), L(n,n), U(n,n)! 初始化矩阵AA = reshape([1, 2, 3, 4, 5, 6, 7, 8, 9], [n,n]) ! LU分解do i = 1, ndo j = 1, nL(i,j) = 0.0U(i,j) = A(i,j)end doL(i,i) = 1.0do k = i+1, nL(k,i) = U(k,i) / U(i,i)do j = i, nU(k,j) = U(k,j) - L(k,i) * U(i,j)end doend doend do! 打印结果print *, "Lower triangular matrix L:"do i = 1, ndo j = 1, nprint *, L(i,j)end doend doprint *, ""print *, "Upper triangular matrix U:"do i = 1, ndo j = 1, nprint *, U(i,j)end doend doend program LU_decomposition```上述代码中,我们首先定义了一个3x3的矩阵A,并进行了初始化。
(完整版)逆矩阵的几种求法与解析(很全很经典)
逆矩阵的几种求法与解析矩阵是线性代数的主要内容,很多实际问题用矩阵的思想去解既简单又快捷.逆矩阵又是矩阵理论的很重要的内容, 逆矩阵的求法自然也就成为线性代数研究的主要内容之一.本文将给出几种求逆矩阵的方法.1.利用定义求逆矩阵定义: 设A 、B 都是n 阶方阵, 如果存在n 阶方阵B 使得AB= BA = E, 则称A 为可逆矩阵, 而称B 为A 的逆矩阵.下面举例说明这种方法的应用.例1 求证: 如果方阵A 满足A k= 0, 那么EA 是可逆矩阵, 且(E-A )1-= E + A + A 2+…+A 1-K证明 因为E 与A 可以交换, 所以(E- A )(E+A + A 2+…+ A 1-K )= E-A K ,因A K = 0 ,于是得(E-A)(E+A+A 2+…+A 1-K )=E , 同理可得(E + A + A 2+…+A 1-K )(E-A)=E ,因此E-A 是可逆矩阵,且(E-A)1-= E + A + A 2+…+A 1-K .同理可以证明(E+ A)也可逆,且(E+ A)1-= E -A + A 2+…+(-1)1-K A 1-K .由此可知, 只要满足A K =0,就可以利用此题求出一类矩阵E ±A 的逆矩阵.例2 设 A =⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡0000300000200010,求 E-A 的逆矩阵.分析 由于A 中有许多元素为零, 考虑A K 是否为零矩阵, 若为零矩阵, 则可以采用例2 的方法求E-A 的逆矩阵.解 容易验证A 2=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡0000000060000200, A 3=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡0000000000006000, A 4=0而 (E-A)(E+A+ A 2+ A 3)=E,所以(E-A)1-= E+A+ A 2+ A 3=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡1000310062106211.2.初等变换法求元素为具体数字的矩阵的逆矩阵,常用初等变换法.如果A 可逆,则A 可通过初等变换,化为单位矩阵I ,即存在初等矩阵S P P P ,,21 使(1)s p p p 21A=I ,用A 1-右乘上式两端,得:(2) s p p p 21I= A 1-比较(1)(2)两式,可以看到当A 通过初等变换化为单位矩阵的同时,对单位矩阵I 作同样的初等变换,就化为A 的逆矩阵A 1-.用矩阵表示(A I )−−−→−初等行变换为(I A 1-),就是求逆矩阵的初等行变换法,它是实际应用中比较简单的一种方法.需要注意的是,在作初等变换时只允许作行初等变换.同样,只用列初等变换也可以求逆矩阵.例1 求矩阵A 的逆矩阵.已知A=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡521310132.解 [A I]→⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡100521010310001132→⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡001132010310100521→ ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--3/16/16/1100010310100521→⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-----3/16/16/110012/32/10103/46/136/1001故 A 1-=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-----3/16/16/112/32/13/46/136/1. 在事先不知道n 阶矩阵是否可逆的情况下,也可以直接用此方法.如果在初等变换过程中发现左边的矩阵有一行元素全为0,则意味着A 不可逆,因为此时表明A =0,则A 1-不存在.例2 求A=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡987654321.解 [A E]=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡100987010654001321→⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡------1071260014630001321→ ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡----121000014630001321. 由于左端矩阵中有一行元素全为0,于是它不可逆,因此A 不可逆.3.伴随阵法定理 n 阶矩阵A=[a ij ]为可逆的充分必要条件是A 非奇异.且A 1-=A 1⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡nn nnn n A A A A A A A A A (212221212111)其中A ij 是A 中元素a ij 的代数余子式.矩阵⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡nn nn n n A A A A A AA A A (2122212)12111称为矩阵A 的伴随矩阵,记作A 3,于是有A 1-=A 1A 3.证明 必要性:设A 可逆,由A A 1-=I ,有1-AA =I ,则A 1-A =I ,所以A ≠0,即A 为非奇异.充分性: 设A 为非奇异,存在矩阵B=A 1⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡nn nnn n A A A A A A A A A .....................212221212111, 其中AB=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡nn n n n n a a a a a a a a a (2)12222111211⨯A 1⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡nn nn n n A A A A A A A A A ............... (2122212)12111=A 1⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡A A A A ............0...00...0=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡1 (00)...1......0...100...01=I同理可证BA=I.由此可知,若A 可逆,则A 1-=A1A 3. 用此方法求逆矩阵,对于小型矩阵,特别是二阶方阵求逆既方便、快阵,又有规律可循.因为二阶可逆矩阵的伴随矩阵,只需要将主对角线元素的位置互换,次对角线的元素变号即可.若可逆矩阵是三阶或三阶以上矩阵,在求逆矩阵的过程中,需要求9个或9个以上代数余子式,还要计算一个三阶或三阶以上行列式,工作量大且中途难免 出现符号及计算的差错.对于求出的逆矩阵是否正确,一般要通过AA 1-=I 来检验.一旦发现错误,必须对每一计算逐一排查.4.分块矩阵求逆法4.1.准对角形矩阵的求逆命题 设A 11、A 22都是非奇异矩阵,且A 11为n 阶方阵,A 22为m 阶方阵⎥⎦⎤⎢⎣⎡221100A A ⎥⎦⎤⎢⎣⎡--12211100A A 证明 因为A =221100A A =11A 22A ≠0, 所以A 可逆.设A 1-=⎥⎦⎤⎢⎣⎡W ZY X,于是有⎥⎦⎤⎢⎣⎡W Z Y X⎥⎦⎤⎢⎣⎡221100A A =⎥⎦⎤⎢⎣⎡m nI I 00,其中 X A 11=I n , Y A 22=0,Z A 11=0,W A 22=I m .又因为A 11、A 22都可逆,用A 111-、A 122-分别右乘上面左右两组等式得:X= A 111-,Y=0,Z=0,W= A 122-故 A 21= ⎥⎦⎤⎢⎣⎡--12211100A A 把上述结论推广到每一个子块都是非奇异矩阵的准对角形状矩阵中去,即:121...-⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡k A A A =⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡---11211...k A A A 4.2.准三角形矩阵求逆命题 设A 11、A 22都是非奇异矩阵,则有12212110-⎥⎦⎤⎢⎣⎡A A A =⎥⎦⎤⎢⎣⎡-----122122121111110A A A A A证明 因为⎥⎦⎤⎢⎣⎡2212110A A A ⎥⎦⎤⎢⎣⎡--I A A I 012111=⎥⎦⎤⎢⎣⎡22110A A 两边求逆得1121110--⎥⎦⎤⎢⎣⎡-I A A I 12212110-⎥⎦⎤⎢⎣⎡A A A =⎥⎦⎤⎢⎣⎡--12211100A A 所以 1221211-⎥⎦⎤⎢⎣⎡A A A =⎥⎦⎤⎢⎣⎡--I A A I 012111⎥⎦⎤⎢⎣⎡--12211100A A =⎥⎦⎤⎢⎣⎡-----122122121111110A A A A A同理可证12221110-⎥⎦⎤⎢⎣⎡A A A =⎥⎦⎤⎢⎣⎡-----122122211111110A A A A A 此方法适用于大型且能化成对角子块阵或三角块阵的矩阵. 是特殊方阵求逆的一种方法,并且在求逆矩阵之前,首先要将已给定矩阵进行合理分块后方能使用.5.恒等变形法恒等变形法求逆矩阵的理论依据为逆矩阵的定义,此方法也常用与矩阵的理论推导上.就是通过恒等变形把要求的值化简出来,题目中的逆矩阵可以不求,利用AA 1-=E ,把题目中的逆矩阵化简掉。
矩阵求逆的几种方法
矩阵求逆的几种方法矩阵求逆是线性代数学习的重要内容,给出一个矩阵A,要求求矩阵A的逆矩阵存在时,可以通过几种方法来解决这个问题。
本文对这几种求逆方法进行了总结,一起来学习一下。
一、矩阵求逆的2x2特例2x2矩阵求逆是求矩阵逆最为基础的方法,下面以A为例,计算A的逆矩阵。
A=begin{pmatrix}a&bc&dend{pmatrix}则A的逆矩阵为:A^{-1}=frac{1}{ad-bc}begin{pmatrix}d&-b-c&aend{pmatrix}二、增广矩阵的方法用增广矩阵的方法,可以求任意阶的方阵的逆矩阵。
由A增广矩阵B:B=begin{pmatrix}a&b&e_1c&d&e_2e_3&e_4&e_5end{pmatrix} 其中,$e_i$是单位矩阵的元素。
用行列式计算法求出$Delta_B$由$Delta_B=ad-bceq 0$可以判断行列式不等于0,即矩阵A可逆。
计算A的逆矩阵:A^{-1}=frac 1{Delta_B}begin{pmatrix}d&-b&e_3-c&a&e_4e_1&e_2&e_5end{pmatr ix}其中,$e_i$为求解此增广矩阵过程中得到的单位矩阵的元素。
三、分块矩阵的求逆分块矩阵的方法是求解大型矩阵的另一种简便方法,假设A为4阶矩阵:A=begin{pmatrix}A_{11}&A_{12}A_{21}&A_{22}end{pmatrix} 它的逆矩阵为:A^{-1}=begin{pmatrix}A_{11}^{-1}&-A_{11}^{-1}A_{12}-A_{21}A _{11}^{-1}&A_{22}-A_{21}A_{11}^{-1}A_{12}end{pmatrix} 以上三种矩阵求逆的方法在实际应用中都有不同的作用,但是本质都是同一种方法,以上三种方法矩阵求逆的数学原理是一样的,只不过实现过程和求解结果有所不同而已。
C语言求矩阵的逆矩阵
C语言求矩阵的逆矩阵班级:自动化1604小组成员:潘孝枫金豆2017年4月作业要求:1.用C语言编程;2.查阅相关资料,至少了解三种以上的求矩阵的逆的方法;3.俩人一组,提交大作业报告,含源代码。
方法一:用伴随矩阵求矩阵的逆矩阵(潘孝枫)最主要的问题就是求解矩阵的逆矩阵,而且是一个动态矩阵1.求解矩阵的伴随矩阵,套用求行列式的函数解决问题的关键是如何运用一个循环递归将求行列式的函数反复嵌套函数的分块1.求矩阵的行列式的函数2.求余子式的函数3.求逆的函数#include <stdio.h>#include <math.h>#define N 9 //默认行列式最大输入阶数为9 float Fun(int n, float a[N][N] ); //定义行列式计算程序,n为行列式阶数,a为矩阵a/*主程序*/int main(void){int n ; //定义阶数ninti, j, i1, j1,i2 ,j2 ; //定义循环变量float a[N][N] , b[N][N] , c[N][N]; //定义数组,a为原始录入数组,b为中间变量数组,用于提取与计算余子式,c为输出结果数组float d; //定义a的行列式值printf("Input the order of matrix a:"); //输入a的阶数scanf("%d",&n);printf("Input matrix a:\n"); //输入矩阵afor( i = 0; i< n; i++){for( j = 0; j < n; j++){scanf("%f", &a[i][j]);}}d=Fun( n, a ); //计算a的行列式if(fabs(d)<1e-6) //判断a的行列式值是否为0{printf("The determinant is not invertible!"); //输出“行列式值为0,不可逆”}else{printf("The determinant of a is %f",d); //非0继续运算if(n==1) //阶数为1的情况{c[0][0]=1/d;}else //阶数大于1的情况{for( i = 0; i<=n-1; i++){for( j = 0; j <= n-1; j++){for(i1=0, i2=0; i2<n-1; i1++, i2++){for(j1=0, j2=0; j2<n-1; j1++, j2++){if(i1 == i){i1++;}if(j1 == j){j1++;}b[i2][j2]=a[i1][j1]; //提取a[i][j]所对应的余子式到矩阵b中}}c[j][i]=pow( -1 , i + j ) * Fun( n - 1 , b)/d; //计算a[i][j]对应的代数余子式,存入矩阵c中并完成转置}}}printf("\n"); //输出结果for(i=0;i<n;i++){for(j=0;j<n;j++){printf("%10f",c[i][j]);}printf("\n");}}}/*求行列式*/float Fun( int n, float a[N][N] ) //定义求矩阵行列式的程序,采用逐步降阶求值{float b[N][N]; //定义矩阵binti = 0, j = 0; //定义循环变量i,jfloat sum = 0; //定义行列式运算结果sumint c = 0,p = 0; //定义辅助变量c,pif(n == 1) //行列式阶数为1函数直接返回a[0][0]值{return a[0][0];}for(i = 0;i < n; i++) //针对行列式第一列展开{for(c = 0;c < n-1; c++){for(j = 0;j < n-1;j++){if (c <i) //判断录入数组b时行数值,如果c大于i,则在执行录入数组a时行数下移一行,否则不执行数+1的操作{p = 0;}else{p = 1;}b[c][j] = a[c+p][j+1]; //取出a[i][j]第一列每个元素对应的余子式存入数组b中}}sum += a[i][0] * Fun(n - 1, b ) * pow(- 1 , i ); //求出a第一列每个元素代数余子式之和,其中嵌套Fun进行逐步降阶完成高阶行列式计算}return sum;}方法二:用行初等变换来求矩阵的逆//应用矩阵初等变换的方法求逆矩阵//参数说明:// naturalmat 原矩阵// num 矩阵的阶数// InvMat 求解结果,逆矩阵bool Matrix_Inv(double **naturalmat,int num,double **InvMat){int i,j,k;double **MatEnhanced;//增广矩阵(A|E)MatEnhanced = (double**)malloc(num*sizeof(double*)); for(i=0;i<num;i++)MatEnhanced[i] = (double*)malloc(2*num*sizeof(double));double *temp;temp = (double*)malloc(2*num*sizeof(double));double xishu=1;//初等变换时系数,设初值为1for(i=0;i<num;i++) //增广矩阵赋值,前半部分 {for(j=0;j<num;j++)MatEnhanced[i][j] = naturalmat[i][j];}for(i=0;i<num;i++) //增广矩阵赋值,后半部分 {for(j=num;j<2*num;j++)MatEnhanced[i][j] = 0;//先将后半部分全部赋值为0MatEnhanced[i][i+num] = 1;//再将其对角线部分赋值为1}//接下来进行初等行变换for(i=0;i<num;i++){if(MatEnhanced[i][i] == 0)//如果前半部分的对角线上的元素为0,此时进行行变换{if(i == num-1)//如果是最后一行,那么说明该矩阵不可return false;//对第i行以后的各行进行判断,找到第i个元素不为零的行,并与第i行进行交换for(j=i;j<num;j++){if(MatEnhanced[j][i] != 0){k = j;//记住该行的行号break;//退出循环}}//接下来对第i行和第k行进行交换temp = MatEnhanced[k];//第k行MatEnhanced[k] = MatEnhanced[i];MatEnhanced[i] = temp;//初等变换for(j=0;j<num;j++)//对其他行的所有列进行计算{if(j != i)//本行不参与计算{if(MatEnhanced[j][i] != 0)//只有当其不为零时进行计算,否则不计算{xishu = MatEnhanced[j][i]/MatEnhanced[i][i];for(k=i;k<2*num;k++)//对后面的所有列进行计算MatEnhanced[j][k] -= xishu*MatEnhanced[i][k];}}}}//将本行所有列都除以对角线上的值,将前半部分化成单位矩阵xishu = MatEnhanced[i][i];for(j=i;j<2*num;j++)if(xishu != 0)MatEnhanced[i][j] /= xishu;}//计算完成后,后半部分即为原矩阵的逆矩阵,将其赋值给InvMat. for(i=0;i<num;i++){for(j=0;j<num;j++)InvMat[i][j] = MatEnhanced[i][j+num];}//内存释放free(MatEnhanced);free(temp);return true;//返回}。
求矩阵的逆矩阵的方法
求矩阵的逆矩阵的方法矩阵的逆矩阵是矩阵理论中非常重要的概念,它在线性代数、计算机图形学、物理学等领域都有着广泛的应用。
在实际问题中,我们经常会遇到需要求解矩阵的逆矩阵的情况,因此掌握求解逆矩阵的方法对于我们理解和应用矩阵具有重要意义。
首先,让我们来了解一下什么是矩阵的逆矩阵。
对于一个n阶方阵A,如果存在另一个n阶方阵B,使得AB=BA=I(其中I为单位矩阵),那么B就是A的逆矩阵,记作A^-1。
需要注意的是,并非所有的矩阵都有逆矩阵,只有可逆矩阵才存在逆矩阵。
接下来,我们将介绍几种求解矩阵逆的方法。
一、初等变换法。
通过初等变换将原矩阵转化为单位矩阵,此时原矩阵经过一系列相同的初等变换得到单位矩阵,而这些初等变换也分别作用于单位矩阵上,得到的矩阵即为原矩阵的逆矩阵。
二、伴随矩阵法。
对于n阶矩阵A,其伴随矩阵记作adj(A),则A的逆矩阵为1/det(A) adj(A),其中det(A)为A的行列式。
通过求解伴随矩阵和行列式,可以得到原矩阵的逆矩阵。
三、矩阵的初等行变换法。
通过将原矩阵和单位矩阵进行横向组合,得到一个增广矩阵,然后对增广矩阵进行初等行变换,直到左侧的矩阵变为单位矩阵,此时右侧的矩阵即为原矩阵的逆矩阵。
四、矩阵的分块法。
对于特定结构的矩阵,可以通过矩阵的分块运算来求解逆矩阵,这种方法在一些特殊情况下比较高效。
需要指出的是,对于大型矩阵来说,直接求解逆矩阵的方法可能会比较耗时,因此在实际应用中,我们通常会利用矩阵的性质和特殊结构,采用更加高效的方法来求解逆矩阵。
总之,求解矩阵的逆矩阵是矩阵理论中的重要问题,我们可以根据具体的矩阵结构和应用场景选择合适的方法来求解逆矩阵。
通过掌握这些方法,我们能够更好地理解和应用矩阵,在实际问题中取得更好的效果。
逆矩阵的求法
5.求具体矩阵的逆矩阵
求元素为具体数字的矩阵的逆矩阵时,常采用如下一些方法.
方法1伴随矩阵法:.
注1对于阶数较低(一般不超过3阶)或元素的代数余子式易于计算的矩阵可用此法求其逆矩阵.注意元素的位置及符号.特别对于2阶方阵,其伴随矩阵,即伴随矩阵具有“主对角元互换,次对角元变号”的规律.注2对分块矩阵不能按上述规律求伴随矩阵.
方法2 初等变换法:
注对于阶数较高()的矩阵,采用初等变换法求逆矩阵一般比用伴随矩阵法简便.在用上述方法求逆矩阵时,只允许施行初等行变换.
方法3 分块对角矩阵求逆:对于分块对角(或次对角)矩阵求逆可套用公式
其中均为可逆矩阵.
例1已知,求.
解将分块如下:
其中,
而
,
从而
例2已知,且,试求.
解由题设条件得
例3 设4阶矩阵
且矩阵满足关系式,试将所给关系式化简,并求出矩阵.解由所给的矩阵关系式得到
,即
故.利用初等变换法求.由于
故
例4 设,则_________.
应填:.
分析在遇到的有关计算时,一般不直接由定义去求,而是利用的重要公式.如此题,由得,而,于是
=
例5已知,试求和.
分析因为,所以求的关键是求.又由知,可见求得和后即可得到.
解对两边取行列式得,于是
即,故
又因为,其中,又,可求得
,
故由得
例6 设,其中(),则____.
应填:.
分析法1.,其中,.
从而.又,,代入即得的逆矩阵.
法2.用初等变换法求逆矩阵.
=
故。
C++求矩阵的逆程序代码
求解逆矩阵源代码:#include <stdio.h>#include <stdlib.h>#include <math.h>#define TINY 1.0e-20void inverse(double**,int);void ludcmp(double**, int, int*, double*);void lubksb(double**, int, int*, double*);double **matrix(int,int,int,int);double *vector(int,int);void free_matrix(double**,int,int,int,int);void free_vector(double*,int,int);void inverse(double **mat, int dim){int i,j,*indx;double **y,d,*col;y = matrix(0,dim-1,0,dim-1);indx = (int *)malloc((unsigned)(dim*sizeof(int)));col = vector(0,dim-1);ludcmp(mat,dim,indx,&d);for (j=0;j<dim;j++){for (i=0;i<dim;i++) col[i] = 0.0;col[j] = 1.0;lubksb(mat,dim,indx,col);for (i=0;i<dim;i++) y[i][j] = col[i];}for (i=0;i<dim;i++)for (j=0;j<dim;j++)mat[i][j] = y[i][j];free_matrix(y,0,dim-1,0,dim-1);free_vector(col,0,dim-1);free(indx);}void ludcmp(double **a, int n, int *indx, double *d){int i,imax,j,k;double big,dum,sum,temp;double *vv;vv = (double*)malloc((unsigned)(n*sizeof(double)));if (!vv){fprintf(stderr,"Error Allocating Vector Memory\n");exit(1);}*d = 1.0;for (i=0;i<n;i++){big = 0.0;for (j=0;j<n;j++){if ((temp=fabs(a[i][j])) > big) big = temp;}if (big == 0.0){fprintf(stderr,"Singular Matrix in Routine LUDCMP\n");for (j=0;j<n;j++) printf(" %f ",a[i][j]); printf("/n");exit(1);}vv[i] = 1.0/big;}for (j=0;j<n;j++){for (i=0;i<j;i++){sum = a[i][j];for (k=0;k<i;k++) sum -= a[i][k] * a[k][j];a[i][j] = sum;}big = 0.0;for (i=j;i<n;i++){sum = a[i][j];for (k=0;k<j;k++) sum -= a[i][k] * a[k][j];a[i][j] = sum;if ((dum=vv[i]*fabs(sum)) >= big){big = dum;imax = i;}}if (j != imax){for (k=0;k<n;k++){dum = a[imax][k];a[imax][k] = a[j][k];a[j][k] = dum;}*d = -(*d);vv[imax] = vv[j];}indx[j] = imax;if (a[j][j] == 0.0) a[j][j] = TINY;if (j != n-1){dum = 1.0 / a[j][j];for (i=j+1;i<n;i++) a[i][j] *= dum;}}free(vv);}void lubksb(double **a, int n, int *indx, double *b) {int i,ip,j,ii=-1;double sum;for (i=0;i<n;i++){ip = indx[i];sum = b[ip];b[ip] = b[i];if (ii>=0)for (j=ii;j<i;j++) sum -= a[i][j] * b[j];else if (sum) ii = i;b[i] = sum;}for (i=n-1;i>=0;i--){sum = b[i];for (j=i+1;j<n;j++) sum -= a[i][j] * b[j];b[i] = sum / a[i][i];}}。
逆矩阵的几种求法与解析(很全很经典)
逆矩阵的几种求法与解析矩阵是线性代数的主要内容,很多实际问题用矩阵的思想去解既简单又快捷.逆矩阵又是矩阵理论的很重要的内容, 逆矩阵的求法自然也就成为线性代数研究的主要内容之一.本文将给出几种求逆矩阵的方法.1.利用定义求逆矩阵定义: 设A 、B 都是n 阶方阵, 如果存在n 阶方阵B 使得AB= BA = E, 则称A 为可逆矩阵, 而称B 为A 的逆矩阵.下面举例说明这种方法的应用.例1 求证: 如果方阵A 满足A k= 0, 那么EA 是可逆矩阵, 且(E-A )= E + A + A +…+A 1-21-K 证明 因为E 与A 可以交换, 所以(E- A )(E+A + A +…+ A )= E-A ,21-K K 因A = 0 ,于是得 K (E-A)(E+A+A +…+A )=E ,21-K 同理可得(E + A + A +…+A )(E-A)=E ,21-K 因此E-A 是可逆矩阵,且(E-A)= E + A + A +…+A .1-21-K 同理可以证明(E+ A)也可逆,且(E+ A)= E -A + A +…+(-1)A .1-21-K 1-K 由此可知, 只要满足A =0,就可以利用此题求出一类矩阵E A 的逆矩阵.K ±例2 设 A =,求 E-A 的逆矩阵.⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡00300000200010分析 由于A 中有许多元素为零, 考虑A 是否为零矩阵, 若为零矩阵, 则可以K 采用例2 的方法求E-A 的逆矩阵.解 容易验证A =, A =, A =02⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡00000000600002003⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡0000000000006004而 (E-A)(E+A+ A + A )=E,所以23(E-A)= E+A+ A + A =.1-23⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡10003100621062112.初等变换法求元素为具体数字的矩阵的逆矩阵,常用初等变换法.如果A 可逆,则A 可通过初等变换,化为单位矩阵I ,即存在初等矩阵使S P P P ,,21 (1)A=I ,用A 右乘上式两端,得:s p p p 211- (2) I= A s p p p 211-比较(1)(2)两式,可以看到当A 通过初等变换化为单位矩阵的同时,对单位矩阵I 作同样的初等变换,就化为A 的逆矩阵A .1-用矩阵表示(A I )为(I A ),就是求逆矩阵的初等行变换法,−−−→−初等行变换1-它是实际应用中比较简单的一种方法.需要注意的是,在作初等变换时只允许作行初等变换.同样,只用列初等变换也可以求逆矩阵.例1 求矩阵A 的逆矩阵.已知A=.⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡521310132解 [A I]→⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡100521010310001132→⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡001132010310100521 →⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--3/16/16/1100010310100521→⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-----3/16/16/110012/32/10103/46/136/1001故 A =.1-⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-----3/16/16/112/32/13/46/136/1在事先不知道n 阶矩阵是否可逆的情况下,也可以直接用此方法.如果在初等变换过程中发现左边的矩阵有一行元素全为0,则意味着A 不可逆,因为此时表明=0,则A 不存在.A 1-例2 求A=.⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡987654321解 [A E]=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡100987010654001321→⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡------1071260014630001321 .→⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡----121000014630001321由于左端矩阵中有一行元素全为0,于是它不可逆,因此A 不可逆.3.伴随阵法定理 n 阶矩阵A=[a ]为可逆的充分必要条件是A 非奇异.且ij A =1-A 1⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡nn nnn n A A A A A A A A A .....................212221212111其中A 是中元素a 的代数余子式.ij A ij 矩阵称为矩阵A 的伴随矩阵,记作A ,于是有A = A .⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡nn nnn n A A A A A AA A A (2122212)1211131-A 13证明 必要性:设A 可逆,由A A =I ,有=,则=,所以1-1-AA I A 1-A I A0,即A 为非奇异.≠充分性: 设A 为非奇异,存在矩阵B=,A 1⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡nn nnn n A A A A A A A A A .....................212221212111其中AB=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡nn n n n n a a a a a a a a a (2)12222111211⨯A 1⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡nn nnn n A A A A A A A A A ............... (2122212)12111===I A 1⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡A AA A ...00.........0...00...0⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡1...00...1......0...100...01同理可证BA=I.由此可知,若A 可逆,则A =A .1-A13用此方法求逆矩阵,对于小型矩阵,特别是二阶方阵求逆既方便、快阵,又有规律可循.因为二阶可逆矩阵的伴随矩阵,只需要将主对角线元素的位置互换,次对角线的元素变号即可.若可逆矩阵是三阶或三阶以上矩阵,在求逆矩阵的过程中,需要求9个或9个以上代数余子式,还要计算一个三阶或三阶以上行列式,工作量大且中途难免出现符号及计算的差错.对于求出的逆矩阵是否正确,一般要通过AA =I 来检验.一1-旦发现错误,必须对每一计算逐一排查.4.分块矩阵求逆法4.1.准对角形矩阵的求逆命题 设A 、A 都是非奇异矩阵,且A 为n 阶方阵,A 为m 阶方阵11221122 ⎥⎦⎤⎢⎣⎡221100A A ⎥⎦⎤⎢⎣⎡--12211100A A 证明 因为==0, 所以A 可逆.A 22110A A 11A 22A ≠设A =,于是有=,1-⎥⎦⎤⎢⎣⎡WZYX⎥⎦⎤⎢⎣⎡W Z Y X ⎥⎦⎤⎢⎣⎡221100A A ⎥⎦⎤⎢⎣⎡m nI I 00其中 X A =I , Y A =0,Z A =0,W A =I .又因为A 、A 都可逆,用11n 221122m 1122A 、A 分别右乘上面左右两组等式得:111-122-X= A ,Y=0,Z=0,W= A 111-122-故 A = 21⎥⎦⎤⎢⎣⎡--12211100A A 把上述结论推广到每一个子块都是非奇异矩阵的准对角形状矩阵中去,即:=121...-⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡k A A A ⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡---11211...k A A A 4.2.准三角形矩阵求逆命题 设A 、A 都是非奇异矩阵,则有1122=12212110-⎥⎦⎤⎢⎣⎡A A A ⎥⎦⎤⎢⎣⎡-----122122121111110A A A A A 证明 因为=⎥⎦⎤⎢⎣⎡2212110A A A⎥⎦⎤⎢⎣⎡--I A A I 012111⎥⎦⎤⎢⎣⎡22110A A 两边求逆得=1121110--⎥⎦⎤⎢⎣⎡-I A A I 12212110-⎥⎦⎤⎢⎣⎡A A A ⎥⎦⎤⎢⎣⎡--12211100A A 所以 =1221211-⎥⎦⎤⎢⎣⎡A A A ⎥⎦⎤⎢⎣⎡--I A A I 012111⎥⎦⎤⎢⎣⎡--12211100A A =⎥⎦⎤⎢⎣⎡-----122122121111110A A A A A 同理可证=12221110-⎥⎦⎤⎢⎣⎡A A A ⎥⎦⎤⎢⎣⎡-----122122211111110A A A A A 此方法适用于大型且能化成对角子块阵或三角块阵的矩阵. 是特殊方阵求逆的一种方法,并且在求逆矩阵之前,首先要将已给定矩阵进行合理分块后方能使用.5.恒等变形法恒等变形法求逆矩阵的理论依据为逆矩阵的定义,此方法也常用与矩阵的理论推导上.就是通过恒等变形把要求的值化简出来,题目中的逆矩阵可以不求,利用AA =E ,把题目中的逆矩阵化简掉。
C语言求逆矩阵案例详解
C语⾔求逆矩阵案例详解⼀般求逆矩阵的⽅法有两种,伴随阵法和初等变换法。
但是这两种⽅法都不太适合编程。
伴随阵法的计算量⼤,初等变换法⼜难以编程实现。
适合编程的求逆矩阵的⽅法如下:1. 对可逆矩阵A进⾏QR分解:A=QR2. 求上三⾓矩阵R的逆矩阵3. 求出A的逆矩阵:A^(-1)=R^(-1)Q^(H)以上三步都有具体的公式与之对应,适合编程实现。
C语⾔实现代码:#include <stdio.h>#include <math.h>#define SIZE 8double b[SIZE][SIZE]={0};//应该读作“贝尔塔”,注释中⽤B表⽰double t[SIZE][SIZE]={0};//求和的那项double Q[SIZE][SIZE]={0};//正交矩阵double QH[SIZE][SIZE]={0};//正交矩阵的转置共轭double R[SIZE][SIZE]={0};//double invR[SIZE][SIZE]={0};//R的逆矩阵double invA[SIZE][SIZE]={0};//A的逆矩阵,最终的结果//={0};//double matrixR1[SIZE][SIZE]={0};double matrixR2[SIZE][SIZE]={0};//double init[3][3]={3,14,9,6,43,3,6,22,15};double init[8][8]={0.0938 , 0.5201 , 0.4424 , 0.0196 , 0.3912 , 0.9493 , 0.9899 , 0.8256,0.5254 , 0.3477 , 0.6878 , 0.3309 , 0.7691 , 0.3276 , 0.5144 , 0.7900,0.5303 , 0.1500 , 0.3592 , 0.4243 , 0.3968 , 0.6713 , 0.8843 , 0.3185,0.8611 , 0.5861 , 0.7363 , 0.2703 , 0.8085 , 0.4386 , 0.5880 , 0.5341,0.4849 , 0.2621 , 0.3947 , 0.1971 , 0.7551 , 0.8335 , 0.1548 , 0.0900,0.3935 , 0.0445 , 0.6834 , 0.8217 , 0.3774 , 0.7689 , 0.1999 , 0.1117,0.6714 , 0.7549 , 0.7040 , 0.4299 , 0.2160 , 0.1673 , 0.4070 , 0.1363,0.7413 , 0.2428 , 0.4423 , 0.8878 , 0.7904 , 0.8620 , 0.7487 , 0.6787};/*/函数名:int main()输⼊:输出:功能:求矩阵的逆 pure C language⾸先对矩阵进⾏QR分解之后求上三⾓矩阵R的逆阵最后A-1=QH*R-1,得到A的逆阵。
二阶矩阵求逆的快速方法
二阶矩阵求逆的快速方法二阶矩阵求逆是线性代数中的基本问题之一。
在实际应用中,我们经常需要计算一个二阶矩阵的逆矩阵。
本文将介绍一种快速求解二阶矩阵逆的方法。
我们需要明确什么是二阶矩阵的逆。
一个二阶矩阵A的逆矩阵记作A^-1,满足以下条件:A * A^-1 = A^-1 * A = I,其中I是单位矩阵。
换句话说,矩阵A的逆矩阵与A相乘结果为单位矩阵。
对于一个二阶矩阵A = [a b; c d],我们可以通过以下公式求解其逆矩阵A^-1:A^-1 = (1 / det(A)) * [d -b; -c a]其中det(A)表示矩阵A的行列式,即det(A) = ad - bc。
接下来,我们来看一下快速求解二阶矩阵逆的方法。
这个方法基于矩阵的性质,可以大大简化计算过程。
我们计算矩阵A的行列式det(A) = ad - bc。
如果det(A)等于0,说明矩阵A没有逆矩阵。
在这种情况下,我们无法继续计算。
如果det(A)不等于0,我们可以继续计算逆矩阵。
根据上述公式,我们可以得到逆矩阵A^-1 = (1 / det(A)) * [d -b; -c a]。
通过这个公式,我们只需要计算矩阵A的行列式det(A)和一些简单的乘法和除法,就可以得到逆矩阵A^-1。
下面,我们通过一个具体的例子来演示这个快速求解二阶矩阵逆的方法。
假设我们要求解矩阵A = [2 3; 1 4]的逆矩阵。
我们计算矩阵A的行列式det(A) = 2 * 4 - 3 * 1 = 8 - 3 = 5。
由于det(A)不等于0,我们可以继续计算逆矩阵。
根据上述公式,我们有A^-1 = (1 / det(A)) * [4 -3; -1 2]。
将det(A)代入公式,我们得到A^-1 = (1 / 5) * [4 -3; -1 2] = [4/5 -3/5; -1/5 2/5]。
因此,矩阵A = [2 3; 1 4]的逆矩阵为A^-1 = [4/5 -3/5; -1/5 2/5]。
求逆矩阵的简便方法
求逆矩阵的简便方法求逆矩阵是线性代数中非常重要的一个操作,它在很多领域都有广泛的应用,比如计算机图形学、机器学习等。
在实际应用中,求逆矩阵通常是通过一些简便的方法来完成的,本文将介绍一些常用的简便方法。
我们需要明确什么是矩阵的逆。
对于一个n阶方阵A,如果存在一个n阶方阵B,使得AB=BA=I,其中I为单位矩阵,那么我们称B 为A的逆矩阵,记作A^-1。
逆矩阵的存在与否是由A是否满足一定的条件决定的。
一种常用的方法是使用伴随矩阵求逆。
对于一个n阶方阵A,它的伴随矩阵记作adj(A),其元素由A的代数余子式按一定的规则构成。
我们可以通过求解伴随矩阵来得到矩阵的逆。
具体步骤如下:1. 计算矩阵A的行列式det(A)。
2. 如果det(A)等于0,则矩阵A不存在逆矩阵。
3. 如果det(A)不等于0,计算伴随矩阵adj(A)。
4. 计算A的逆矩阵A^-1,有A^-1 = adj(A)/det(A)。
这种方法的优点是简单易懂,但是需要计算矩阵的行列式和伴随矩阵,对于大规模的矩阵来说计算量较大。
另一种常用的方法是使用初等行变换。
初等行变换包括以下三种操作:1. 交换矩阵的两行。
2. 用一个非零常数乘以某一行。
3. 把某一行的常数倍加到另一行。
通过一系列的初等行变换,我们可以将矩阵A转化为一个上三角矩阵,记作U。
然后我们再通过一系列的初等行变换,将U转化为单位矩阵I。
而这些初等行变换对应的矩阵,记作E1、E2、…、En,它们的乘积E=E1E2…En即为A的逆矩阵A^-1。
这种方法的优点是计算量较小,特别适用于大规模矩阵的求逆。
但是需要注意的是,如果矩阵A的行列式等于0,则无法使用初等行变换求逆。
除了以上两种常用的方法外,还有一些特殊矩阵的逆矩阵求解方法。
比如,对于对角矩阵、上三角矩阵和下三角矩阵来说,它们的逆矩阵可以直接通过将对角元素取倒数来得到。
而对于对称矩阵和正交矩阵来说,它们的逆矩阵可以通过转置矩阵得到。
求逆矩阵简单的方法
求逆矩阵简单的方法嘿,朋友们!今天咱就来讲讲求逆矩阵那些事儿。
你说求逆矩阵难不难?其实啊,找对了方法,就跟走平路似的,轻松得很呢!咱先来说说啥是逆矩阵。
就好比你有个好朋友,你俩就像矩阵和它的逆矩阵一样,相互呼应,相互配合。
那怎么求这个“好朋友”呢?有一种方法就像是在迷宫里找出口,一步一步来。
先把矩阵摆出来,就像把宝贝放在眼前一样。
然后呢,通过一系列的运算,就像走迷宫的路线一样,慢慢找到那个对应的逆矩阵。
这过程可能有点繁琐,但就像解谜题一样,解开了就特别有成就感。
还有一种方法呢,就像有了一把神奇的钥匙,一下子就能打开求逆矩阵的大门。
比如利用一些特殊的公式和定理,那可真是太方便啦!就好像你知道了一个秘密通道,一下子就能到达目的地。
咱举个例子哈,想象一下有个矩阵,就像一个神秘的图案。
然后我们按照方法去操作,一点一点地揭开它的面纱,最后哇,逆矩阵就出现在我们眼前啦!是不是很神奇?哎呀,你可别小瞧这些方法,它们可是数学世界里的宝贝呢!学会了它们,你就像是有了超能力,可以在矩阵的世界里自由穿梭。
有时候,可能会遇到一些复杂的矩阵,就像遇到了一个调皮的小怪兽。
但别怕呀,咱有方法呀,就跟打怪兽有武器一样,总能把它搞定。
你想想,要是你能轻松求出逆矩阵,那感觉多棒啊!就像掌握了一门独特的技艺,别人都得对你刮目相看呢。
所以说呀,求逆矩阵其实没那么难,只要找对方法,多练习练习,你也能成为这方面的高手。
别再觉得它遥不可及啦,勇敢地去尝试吧!相信自己,你一定可以的!这就是我要告诉你们的关于求逆矩阵简单方法的事儿,加油哦,朋友们!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[ 1 ] 史荣昌. 矩阵分析 [M ]. 北京: 北京理工大学出版社, 1995. [ 2 ] 杨克劭, 包学游. 矩阵分析 [M ]. 哈尔滨: 哈尔滨工业大学出版社, 1995. [ 3 ] 北京大学数学力学系几何与代数教研室. 高等代数 [M ]. 北京: 人民教育出版社, 1978.
3 定理的证明及小结
定理 1 之证明 将 A 按列向量分块: A = ( Α1 , Α2 , …, Αn ). 由于 A 可逆, 所以 Α1 , Α2 , …, Αn 线性无关 . 用 Schm id t 方法将 Αi 正交化, 得 Β1 , Β2 , …, Βn , 再单位化得 v1 , v2 , …, vn , 且可得
W A N G J ian 2f eng
… cn 1 … cn 2 ω
cnn
= Q ・R.
定理 2 之证明 ( i) 由于 R 是上三角阵, 所以当 i> j 时, R ij = 0. 又因为 R - 1 ・R = E = ( E ij ) n×n , 其中
. E ii = 1, E ij = 0, 当 i ≠ j 时
n
所以当 i> 1 时, 0= E i1 =
∑ Ρ ・R
ik k= 1
k1
= Ρi1 ・R 11.
n
因为 R 11 ≠0, 所以 Ρi1 = 0, 当 i > 1 时. 再由当 i > 2 时, 0= E i2 = 所以 Ρi2 = 0, 当 i> 2 时. 即 R - 1 也是上三角阵.
n
∑ Ρ ・R
ik k= 1 ik kj
k2
= Ρi2 ・R 22 , 因为 R 22 ≠0,
一般地, 当 i > j 时, 由 Ρi1 = Ρi2 = …Ρij - 1 = 0, 以及 E ij = 0= Ρij = 0, 当 i > j 时.
n
∑ Ρ ・R
k= 1
= Ρij ・R j j , 因为 R j j ≠0, 所以
( ii) 因为 E kk = 1=
∑Ρ
j= 1 n
kj
・R jk , 由 ( i) 可知当 k > j 时, Ρk j = 0, 以及当 j > k 时, R jk = 0, 于是 1= Ρkk ・
[ 收稿日期 ] 2002211222
122
大 学 数 学 第 20 卷
A = ( Α1 , Α2 , …, Αn ) = ( c11 v1 , c21 v1 + c22 v2 , …, cn 1 v1 + cn 2 v2 + …+ cnn vn ).
于是
c11 A = ( v1 , v2 , …, vn ) ・ c21 c22
2 主要结论
定理 1 假设 A ∈Cn×n 可逆, 则 A 可以分解为 A = QR , 其中 Q 为酉阵, 即 Q ・Q H = E , R 是上三角阵 . - 1 ( ) ( ) 定理 2 假设 R = R ij n×n 是上三角阵, R ij = 0, 当 i > j 时, 并且 R ii ≠0, 1 ≤ i ≤n , 则 R = Ρij n×n 可 通过以下算法得出: ( i) Ρij = 0, 当 i> j 时, 即 R - 1 也是上三角阵; - 1 ( ii) Ρkk = R kk ( 1≤k ≤n ) ;
- 1 R kk , 即 Ρkk = R kk ( 1≤k ≤n ).
( iii) 由
E k , k + m = 0=
m ki
m k, k+ j
∑R
i= 1
・Ρi, k + m =
m
∑R
j= 0
・Ρk + j , k + m = R kk ・Ρk , k + m +
∑R
j= 1
k, k+ j
・Ρk + j , k + m ,
初等行变换
3
( E , A - 1 ). 这种方法计算量 时, 该种方法计算量将会很大. 另一种称为 J acob i 方法, 将 (A , E ) 小些 . 但由于没有现成的计算公式, 编程比较困难, 不易在计算机上实现 . 有没有一种方法既能保证计算
量小, 又易于编程实现呢? 本文讨论的就是这个问题 .
第 20 卷第 1 期
2004 年 2 月
大 学 数 学
COLL EGE M A TH EM A T ICS
. 20, № . 1 Vol Feb. 2004
求逆矩阵的快速方法
王建锋
( 河海大学 理学院, 南京 210098)
[ 摘 要 ] 介绍了求逆矩阵的快速方法, 先对矩阵作 Q R 分解, 再利用三角形矩阵求逆的迭代算法, 得到 了求逆矩阵的快速方法.
所以 Ρk , k + m = 定理 3 显然成立 . 由上述 3 个定理可以得到求逆矩阵的一种方法: 11 对可逆矩阵 A 作 QR 分解: A = QR ; 21 利用定理 2 求上三角阵 R 的逆矩阵 R - 1; 31 求出 A 的逆矩阵: A - 1 = R - 1Q H . 由于上面的 3 个步骤都有确定的计算公式, 所以易于编程实现 . 而且相对于通常的两种求逆矩阵 的方法. 它的计算量要小得多, 因此它是一种求逆矩阵的快速方法 .
m
( iii) Ρk , k + m = -
∑R
j= 1
k, k+ j
・Ρk + j , k + m R kk ( 1≤m ≤n - 1, 1≤k ≤n - m ).
定理 3 假设 A 可逆, 且 A = QR , 其中 Q 是酉阵, 则 A - 1 = R - 1 ・Q H , Q H 是 Q 的共轭转置 .
[ 关键词 ] 逆矩阵; Q R 分解; 快速方法 [ 中图分类号 ] O 151121 [ 文献标识码 ] C [ 文章编号 ] 167221454 ( 2004) 0120121202
1 引 言
求逆矩阵的方法通常有 2 种. 一种是行列式方法A - 1 =
A , A 3 为 A 的伴随矩阵 . 当 A 的阶数 n ≥4 A
i
Αi = 其中 c ij =
[ Βj , Αi ]
∑ c v , 1≤ i≤n ,
ij j j= 1
‖Βj ‖
, j = 1, 2, …, i- 1, [ Βj , Αi ] 表示 Βj 与 Αi 的内积 .
c ii = ‖Βi ‖, v j =
Βj , 1≤ i≤n , 1≤ j ≤ i, ‖Βj ‖
∑R
j= 1
k, k+ j
・Ρk + j , k + m R kk ( 1≤m ≤n - 1; 1≤k ≤n - m ).
Fa st Cacula tion for the Converse M a tr ix
(Co llege of Science, H eha i U n iversity, N an jing 210098, Ch ina ) Abstract: T h is p ap er in troduces the fa st cacu la tion fo r the converse m a trix. F irst reso lves the m a trix in to QR , then u ses the cacu la tion fo r the converse m a trix of the triangle m a trix R , la st gets the fa st cacu la tion fo r the converse m a trix. Key words: converse m a trix; QR reso lu tion; fa st cacu la tion