文档库 最新最全的文档下载
当前位置:文档库 › 矩阵求逆的快速算法

矩阵求逆的快速算法

矩阵求逆的快速算法
矩阵求逆的快速算法

矩阵求逆的快速算法

算法介绍

矩阵求逆在3D程序中很常见,主要应用于求Billboard矩阵。按照定义的计算方法乘法运算,严重影响了性能。在需要大量Billboard 矩阵运算时,矩阵求逆的优化能极大提高性能。这里要介绍的矩阵求逆算法称为全选主元高斯-约旦法。

高斯-约旦法(全选主元)求逆的步骤如下:

首先,对于 k 从 0 到 n - 1 作如下几步:

从第 k 行、第 k 列开始的右下角子阵中选取绝对值最大的元素,并记住次元素所在的行号和列号,在通过行交换和列交换将它交换到主元素位置上。这一步称为全选主元。

m(k, k) = 1 / m(k, k)

m(k, j) = m(k, j) * m(k, k),j = 0, 1, ..., n-1;j != k

m(i, j) = m(i, j) - m(i, k) * m(k, j),i, j = 0, 1, ..., n-1;i, j != k

m(i, k) = -m(i, k) * m(k, k),i = 0, 1, ..., n-1;i != k

最后,根据在全选主元过程中所记录的行、列交换的信息进行恢复,恢复的原则如下:在全选主元过程中,先交换的行(列)后进行恢复;原来的行(列)交换用列(行)交换来恢复。

实现(4阶矩阵)

float Inverse(CLAYMATRIX& mOut, const CLAYMATRIX& rhs)

{

CLAYMATRIX m(rhs);

DWORD is[4];

DWORD js[4];

float fDet = 1.0f;

int f = 1;

for (int k = 0; k < 4; k ++)

{

// 第一步,全选主元

float fMax = 0.0f;

for (DWORD i = k; i < 4; i ++)

{

for (DWORD j = k; j < 4; j ++)

{

const float f = Abs(m(i, j));

if (f > fMax)

{

fMax = f;

is[k] = i;

js[k] = j;

}

}

}

if (Abs(fMax) < 0.0001f)

return 0;

if (is[k] != k)

{

f = -f;

swap(m(k, 0), m(is[k], 0));

swap(m(k, 1), m(is[k], 1));

swap(m(k, 2), m(is[k], 2));

swap(m(k, 3), m(is[k], 3));

}

if (js[k] != k)

{

f = -f;

swap(m(0, k), m(0, js[k]));

swap(m(1, k), m(1, js[k]));

swap(m(2, k), m(2, js[k]));

swap(m(3, k), m(3, js[k]));

}

// 计算行列值

fDet *= m(k, k);

// 计算逆矩阵

// 第二步

m(k, k) = 1.0f / m(k, k);

// 第三步

for (DWORD j = 0; j < 4; j ++)

{

if (j != k)

m(k, j) *= m(k, k);

}

// 第四步

for (DWORD i = 0; i < 4; i ++)

{

if (i != k)

{

for (j = 0; j < 4; j ++)

{

if (j != k)

m(i, j) = m(i, j) - m(i, k) * m(k, j);

}

}

}

// 第五步

for (i = 0; i < 4; i ++)

{

if (i != k)

m(i, k) *= -m(k, k);

}

}

for (k = 3; k >= 0; k --)

{

if (js[k] != k)

{

swap(m(k, 0), m(js[k], 0));

swap(m(k, 1), m(js[k], 1));

swap(m(k, 2), m(js[k], 2));

swap(m(k, 3), m(js[k], 3));

}

if (is[k] != k)

{

swap(m(0, k), m(0, is[k]));

swap(m(1, k), m(1, is[k]));

swap(m(2, k), m(2, is[k]));

swap(m(3, k), m(3, is[k]));

}

}

mOut = m;

return fDet * f;

}

比较

原算法原算法(经过高度优化) 新算法

加法次数 103 61 39

乘法次数 170 116 69

需要额外空间 16 * sizeof(float) 34 * sizeof(float) 25 * sizeof(float) 结果不言而喻吧。

总结求矩阵的逆矩阵的方法

总结求矩阵的逆矩阵的方法 课程名称: 专业班级: 成员组成: 联系方式:

摘要:矩阵是线性代数的主要内容,很多实际问题用矩阵的思想去解既简单又快 捷.逆矩阵又是矩阵理论的很重要的内容, 逆矩阵的求法自然也就成为线性代数研究的主要内容之一.本文将给出几种求逆矩阵的方法. 关键词:矩阵逆矩阵方法 Method of finding inverse matrix Abstract: Matrix in linear algebra is the main content,many prictical problems with the matrix theory is simple and fast. The inverse matrix andmatrix theory the important content, the solution of inverse matrix nature has become one of the main research contents of linear algebra. The paper will give some method of finding inverse matrix. Key words: Matrix inversematrix method

正文: 1.引言:矩阵是线性代数的主要内容,很多实际问题用矩阵的思想去解既简单又快捷.逆矩阵又是矩阵理论的很重要的内容, 逆矩阵的求法自然也就成为线性代数研究的主要内容之一.本文将给出几种求逆矩阵的方法. 2.求矩阵的逆矩阵的方法总结: 2.1 矩阵的基本概念 矩阵,是由个数组成的一个行列的矩形表格,通常用大写字母表示,组成矩阵的每一个数,均称为矩阵的元素,通常用小写字母其元素表示,其中下标都是正整数,他们表示该元素在矩 阵中的位置。比如,或表示一个矩阵,下标表示元素位于该矩阵的第行、第列。元素全为零的矩阵称为零矩阵。 特别地,一个矩阵,也称为一个维列向量;而一个矩阵,也称为一个维行向量。 当一个矩阵的行数与烈数相等时,该矩阵称为一个阶方阵。对于方阵,从左上角到右下角的连线,称为主对角线;而从左下角到右上角的连线称为付对 角线。若一个阶方阵的主对角线上的元素都是,而其余元素都是零,则称 为单位矩阵,记为,即:。如一个阶方阵的主对角线上(下)方的元素都是零,则称为下(上)三角矩阵,例如, 是一个阶下三角矩阵,而则是一个阶上三角矩阵。今后我们用表示数域上的矩阵构成

逆矩阵的几种常见求法

逆矩阵的几种常见求法 潘风岭 摘 要 本文给出了在矩阵可逆的条件下求逆矩阵的几种常见方法,并对每种方法做了具体的分析和评价,最后对几种方法进行了综合分析和比较. 关键词 初等矩阵; 可逆矩阵 ; 矩阵的秩; 伴随矩阵; 初等变换. 1. 相关知识 1.1 定义1 设A 是数域P 上的一个n 级方阵,如果存在P 上的一个n 级方阵B ,使得AB=BA=E,则称A 是可逆的,又称A 是B 的逆矩阵.当矩阵A 可逆时,逆矩阵由A 唯一确定,记为1-A . 定义2 设()ij n n A a ?=,由元素ij a 的代数余子式ij A 构成的矩阵 11 2111222212n n n n nn A A A A A A A A A ?? ? ? ? ??? 称为A 的伴随矩阵,记为A *. 伴随矩阵有以下重要性质 AA *= A *A=A E. 注:注意伴随矩阵中的元素ij A 的排列顺序. 1.2 哈密尔顿-凯莱定理

设A 是数域P 上的一个n n ?矩阵,f A λλ=E-()是A 的特征多项式, 则 11122()10n n n nn f A A a a a A A E -=-++ ++ +-=()() (证明参见[1]) . 1.3 矩阵A 可逆的充要条件 1.3.1 n 级矩阵A 可逆的充分必要条件是A 0≠(也即()rank A n =); 1.3.2 n 级矩阵A 可逆的充分必要条件是A 可写成一些初等矩阵的乘积(证明参见[1]); 1.3.3 n 级矩阵A 可逆的充分必要条件是A 可以通过初等变换(特别只通过初等行或列变换)化为n 级单位阵(证明参见[1]); 1.3.4 n 级矩阵A 可逆的充分必要条件是存在一个n 级方阵B ,使得AB=E (或BA=E ); 1.3.5 n 级矩阵A 可逆的充分必要条件是A 的n 个特征值全不为0;(证明参见[2]); 1.3.6 定理 对一个s n ?矩阵A 作一初等行变换就相当于在A 的左边乘上相应的s s ?初等矩阵;对A 作一初等列变换就相当于在A 的右边乘上相应的n n ?初等矩阵.(证明参见[1]) 2.矩阵的求逆 2.1 利用定义求逆矩阵 对于n 级方阵A ,若存在n 级方阵B ,使AB=BA=E ,则1B A -=.

复数矩阵求逆运算

所以按照以上介绍的方法,用C语言实现过程如下: #include #include float getA(float **arcs, int n)//按第一行展开计算|A| { if(n==1) { return arcs[0][0]; } int i,j,k; float ans = 0; float **temp = (float **)malloc(sizeof(float *) * n); for(i = 0; i < n; i++){ temp[i] = (float *)malloc(sizeof(float *) * n); } for(i=0;i=i)?k+1:k]; } }

float t = getA(temp,n-1); if(i%2==0) { ans += arcs[0][i]*t; } else { ans -= arcs[0][i]*t; } } return ans; } void getAStart(float **arcs,int n,float **ans) { if(n==1) { ans[0][0] = 1; return; } int i,j,k,t; float num = getA(arcs,n); float **temp = (float **)malloc(sizeof(float *) * n); for(i = 0; i < n; i++){ temp[i] = (float *)malloc(sizeof(float *) * n); } for(i=0;i=i? k+1:k][t>=j? t+1:t]; //找出除第i行第j列的(n-1)矩阵 } } ans[j][i] = getA(temp,n-1) / num; //计算arcs[i][j]的余子式 if((i+j)%2 == 1) {

总结求矩阵的逆矩阵的方法

总结求矩阵的逆矩阵的方法-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

总结求矩阵的逆矩阵的方法 课程名称: 专业班级: 成员组成: 联系方式:

摘要:矩阵是线性代数的主要内容,很多实际问题用矩阵的思想去解既简单又快捷.逆矩阵又是矩阵理论的很重要的内容, 逆矩阵的求法自然也就成为线性代数 研究的主要内容之一.本文将给出几种求逆矩阵的方法. 关键词:矩阵逆矩阵方法 Method of finding inverse matrix Abstract: Matrix in linear algebra is the main content,many prictical problems with the matrix theory is simple and fast. The inverse matrix andmatrix theory the important content, the solution of inverse matrix nature has become one of the main research contents of linear algebra. The paper will give some method of finding inverse matrix. Key words: Matrix inversematrix method

正文: 1.引言:矩阵是线性代数的主要内容,很多实际问题用矩阵的思想去解既简单又快捷.逆矩阵又是矩阵理论的很重要的内容, 逆矩阵的求法自然也就成为线性代数研究的主要内容之一.本文将给出几种求逆矩阵的方法. 2.求矩阵的逆矩阵的方法总结: 2.1 矩阵的基本概念 矩阵,是由个数组成的一个行列的矩形表格,通常用大写字母表示,组成矩阵的每一个数,均称为矩阵的元素,通常用小写字母其元素表示,其中下标都是正整数,他们表示该元素 在矩阵中的位置。比如,或表示一个 矩阵,下标表示元素位于该矩阵的第行、第列。元素全为零的矩阵称为零矩阵。 特别地,一个矩阵,也称为一个维列向量;而一个矩阵,也称为一个维行向量。 当一个矩阵的行数与烈数相等时,该矩阵称为一个阶方阵。对于方阵,从左上角到右下角的连线,称为主对角线;而从左下角到右上角的连线称 为付对角线。若一个阶方阵的主对角线上的元素都是,而其余元素都是零,则称为单位矩阵,记为,即:。如一个阶

利用初等行变换求矩阵的逆运算的代码

/**************reverse matrix************************/ //利用的是AX=B,X=A’B,这里B=E;进行初等行变换求解,把左边化为单位阵,右边就是A矩阵的逆矩阵; void swap(double *a,int i,int line,int n) // exchange line//交换行位置,i控制行号,line也是行号,//n是矩阵列数 { int j; double temp; for(j=0;jmax) { max=fabs(p[j*n+i]); temp=p[j*n+i]; line=j; } } if(max<=1e-5) { printf("no inverse array\n"); return; } if(line!=i) {

swap(p,i,line,n);//将每一列中最大行换到i行 swap(q,i,line,n); } for(k=0;k0;i--) { for(j=i-1;j>=0;j--)//从下往上每一行进行计算,与前面相反 { mmul=p[j*n+i]; p[j*n+i]-=p[i*n+i]*mmul; for(k=0;k

矩阵求逆的并行算法

.矩阵求逆的并行算法: #include "stdio.h" #include "stdlib.h" #include "mpi.h" #define intsize sizeof(int) #define floatsize sizeof(float) #define A(x,y) A[x*N+y] #define Q(x,y) Q[x*N+y] #define a(x,y) a[x*N+y] #define f(x) f[x] float *A,*Q; float *a,*f; int N,v,m; int p; int myid; MPI_Status status; FILE *dataFile; double starttime,endtime,time1; void readData() { int i,j; starttime = MPI_Wtime(); dataFile = fopen("dataIn.txt","r"); fscanf(dataFile,"%d",&N); A = (float *)malloc(floatsize*N*N); for(i = 0; i < N; i++) { for(j = 0; j < N; j++) { fscanf(dataFile,"%f",&A(i,j)); } } fclose(dataFile); printf("Input of file \"dataIn.txt\"\n"); printf("%d\n",N); for(i = 0; i < N; i++) { for(j = 0; j < N; j++) { printf("%f\t",A(i,j)); } printf("\n");

求逆矩阵的方法

求逆矩阵的方法与矩阵的秩 一、矩阵的初等行变换 (由定理2.4给出的求逆矩阵的伴随矩阵法,要求计算矩阵A 的行列式A 值和它的伴随矩阵*A .当A 的阶数较高时,它的计算量是很大的,因此用伴随矩阵法求逆矩阵是不方便的.下面介绍利用矩阵初等行变换求逆矩阵的方法.在介绍这种方法之前,先给出矩阵初等行变换的定义.) 定义2.13 矩阵的初等行变换是指对矩阵进行下列三种变换: (1) 将矩阵中某两行对换位置; (2) 将某一行遍乘一个非零常数k ; (3) 将矩阵的某一行遍乘一个常数k 加至另一行. 并称(1)为对换变换,称(2)为倍乘变换,称(3)为倍加变换. 矩阵A 经过初等行变换后变为B ,用 A →B 表示,并称矩阵B 与A 是等价的. (下面我们把)第i 行和第j , ”;把第i 行遍乘k k ”;第j 行的k 倍加至第i 为“ + k ”. 例如,矩阵 A = ????? ?????321321321c c c b b b a a a ???? ? ?????321 3 21321 c c c a a a b b b ???? ??????32 1 321321c c c b b b a a a ???? ? ?????32 1321321 kc kc kc b b b a a a ???? ? ?????32 1 321321 c c c b b b a a a ??? ? ? ??? ??+++32 1 332 2113 21 c c c ka b ka b ka b a a a (关于初等矩阵内容请大家自己阅读教材) 二、运用初等行变换求逆矩阵 由定理2.7的推论“任何非奇异矩阵均能经过初等行变换化为单位阵”可知,对于任意一个n 阶可逆矩阵A ,经过一系列的初等行变换可以化为单位阵I ,那么用一系列同样的初等行变换作用到单位阵I 上,就可以把I 化成A -1.因此,我们得到用初等行变换求逆矩阵的方法:在矩阵A 的右边写上一个同阶的单位矩阵I ,构成一个n ?2n 矩阵 ( A , I ),用初等行变换将左半部分的A 化成单位矩阵I ,与此同时,右半部分的I 就被化成了1-A .即 ( A , I )初等行变换 ?→???( I , A -1 ) 例1 设矩阵 A = ???? ? ?????--23 2 311111 ③k ①,② ②+①k

矩阵求逆标准算法

矩阵求逆标准算法(VB)源码 2006-11-29 13:49 类别:默认 本程序依据矩阵初等变换的基本原理编写,算法较为繁琐,但易于理解适合VB初学者。 本程序适合任何(n*n)的矩阵求逆,对于不可逆矩阵有提示信息,并结束程序 本程序在XP,VB6.0下调试通过 本程序由本人原创,请慎用。如有疑问,或调试有误,请联系本人QQ 30360126 本程序可在VB6.0内任何地方用call jzqn(qa(),na()))语句调用其中qa()是输入的矩阵数组,调用此函数后 na()为返回的逆矩阵数组 注意:调用本程序前不要声明na()的维数,仅用dim na()即可。 请不要试图对一个病态矩阵求逆、否则计算结果未必是你想要的病态矩阵是指行列式计算结果极其接近于零的矩阵 Public Sub jzqn(qa(), na()) Dim a() n = UBound(qa, 1) ReDim na(n, n) ReDim a(n, 2 * n) For i = 1 To n For j = 1 To n a(i, j) = qa(i, j)

Next j Next i For i = 1 To n For j = n + 1 To 2 * n If j - i = n Then a(i, j) = 1 Else a(i, j) = 0 End If Next j Next i For i = 1 To n If a(i, i) = 0 Then For q = i To n If a(q, i) <> 0 Then For w = i To 2 * n zj = a(i, w) a(i, w) = a(q, w) a(q, w) = zj Next w Exit For End If Next q If q > n Then MsgBox "此矩阵不可逆": Exit Sub End If

矩阵求逆方法大全-1

求逆矩阵的若干方法和举例 苏红杏 广西民院计信学院00数本(二)班 [摘 要] 本文详细给出了求逆矩阵的若干方法并给出相应的例子,以供学习有关矩阵方面 的读者参考。 [关键词] 逆矩阵 初等矩阵 伴随矩阵 对角矩阵 矩阵分块 多项式等 引 言 在我们学习《高等代数》时,求一个矩阵的逆矩阵是一个令人十分头痛的问题。但是,在研究矩阵及在以后学习有关数学知识时,求逆矩阵又是一个必不可缺少的知识点。为此,我介绍下面几种求逆矩阵的方法,供大家参考。 定义: n 阶矩阵A 为可逆,如果存在n 阶矩阵B ,使得E BA AB ==,这里E 是n 阶单位矩阵,此时,B 就称为A 的逆矩阵,记为1-A ,即:1-=A B 方法 一. 初等变换法(加边法) 我们知道,n 阶矩阵A 为可逆的充分必要条件是它能表示成一系列初等矩阵的乘积A=m Q Q Q 21, 从而推出可逆矩阵可以经过一系列初等行变换化成单位矩阵。即,必有一系列初等矩阵 m Q Q Q 21使 E A Q Q Q m m =-11 (1) 则1-A =E A Q Q Q m m =-11 (2) 把A ,E 这两个n 阶矩阵凑在一起,做成一个n*2n 阶矩阵(A ,E ),按矩阵的分块乘法,(1)(2)可以合并写成 11Q Q Q m m -(A ,E )=(11Q Q Q m m -,A ,E Q Q Q m m 11 -)=(E ,1-A ) (3) 这样就可以求出矩阵A 的逆矩阵1-A 。 例 1 . 设A= ???? ? ??-012411210 求1-A 。 解:由(3)式初等行变换逐步得到: ????? ??-100012010411001210→ ????? ??-100012001210010411 →???? ? ??----123200124010112001→

n阶矩阵求逆矩阵(C++面向对象)

课程设计报告 实验内容: n阶方阵求逆的实现 相关课程:信息系统开发语言(一) 学期: 2011-2012学年第2学期 学时学分: 68学时 4学分 专业班级:信管1022班 学号: 100312087 姓名:管小芬 指导老师:陈荣元 提交日期: 2012年06月21日

信息系统开发语言(一)课程设计 ——n 阶方阵求逆的实现 一、课程设计目的 1、了解什么是矩阵及逆矩阵。 2、通过VC++6.0编写一个实现求矩阵逆矩阵的程序。 3、巩固和加深学生对算法课程基本知识的理解和掌握。 4、培养利用算法知识解决实际问题的能力。 5、掌握利用程序设计语言进行算法程序的开发、调试、测试. 6、掌握书写算法设计说明文档的能力。 7、提高综合运用算法、程序设计语言、数据结构知识的能力。 二、问题描述 给出任意一个维数大于1小于256的矩阵,通过程序求出其逆矩阵。 如???? ??????=2221 20 1211 10 020100 a a a a a a a a a A ,存在矩阵B ,使得矩阵A 与B 的乘积为单位矩阵,则称矩阵B 为矩阵A 的逆矩阵。 三、问题分析 根据矩阵与逆矩阵的定义,即矩阵A 与矩阵B 相乘等于单位矩阵的思路,编辑程序。 为使问题更加简单明了化,现举除一个具体例子,便于理解,我们在求解数学题

目中,经常会遇到这一类的题目: 如求方阵A 的逆矩阵 ??????????=2221 20 1211 10 020100a a a a a a a a a A 拿到这个题,我们首先应该是理解什么叫矩阵及逆矩阵,我们根据定义可知,一个矩阵如果存在逆矩阵,那么这个矩阵的秩一定不会小于该矩阵的维数,拿到一个题,要求一个逆矩阵的方法是很多的,比较常用的还是先把矩阵化为上三角或者下三角矩阵,,判断矩阵是否存在逆矩阵,然后,然后根据矩阵与逆矩阵之积等于单位矩阵从而得出逆矩阵,这是比较一般的思路,我们一下设计基本上也是以此为基础的。 四、算法分析、设计与描述 1.算法分析和设计 对于矩阵求逆,逆矩阵的定义是:对于n 阶方阵A ,若存在矩阵B ,使得 AB=BA=E ,则称A 为可逆矩阵,简称A 可逆,并称B 为A 的逆矩阵。A 存在逆矩阵的充要条件是|A|≠0。若用定义的方法求解,计算量大,当矩阵的阶数很大时很浪费时间,为了节省时间,通过查阅资料和上网搜索,决定采用高斯-约旦发来进行方阵的求逆操作。 对于矩阵的乘法,利用矩阵乘法定义即可实现,矩阵的乘法的定义是:若A 是一个m*n 阶矩阵,B 是一个n*p 阶矩阵,则AB=C 是一个m*p 阶矩阵,而C 中的每一个(i,j )元都等于A 的第i 行中的各元和B 的第j 列的各对应元之乘积的和。只要按照该定义就可以求出两个矩阵的乘积。 2.算法描述 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 =? ? ?? ? ???? ???0000 30000020 0010,求 E-A 的逆矩阵. 分析 由于A 中有许多元素为零, 考虑A K 是否为零矩阵, 若为零矩阵, 则可以采用例2 的方法求E-A 的逆矩阵. 解 容易验证

A 2 =????????? ???0000000060000200, A 3=? ? ?? ? ? ? ?? ???00000000 00006000 , A 4=0 而 (E-A)(E+A+ A 2+ A 3)=E,所以 (E-A)1-= E+A+ A 2+ A 3= ? ? ?? ? ???????1000 31006210 6211. 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

矩阵及逆矩阵的求法

矩阵的可逆性与逆矩阵的求法 目录 摘要 (1) 第1章.矩阵 (2) 1.1矩阵的定义 (2) 1.2矩阵的运算 (2) 第2章.矩阵的可逆性及逆矩阵 (5) 2.1矩阵的基本概念 (5) 2.2矩阵可逆的判断方法 (6) 2.3矩阵可逆性的求法 (10) 第3章.逆矩阵的拓展 (17) 3.1广义逆矩阵的引入 (17) 3.2广义逆矩阵的定义及存在 (17) 第4章.总结 (21) 参考文献 (22) 致谢 (23) 附件:论文英文简介

矩阵的可逆性与逆矩阵的求法 [摘要]:矩阵理论是现代代数学的重要分支理论之一,它也为现代科技及现代经济理论研究提供不可或缺的数学支持。在线性代数研究中引入矩阵的目的之一就是为了研究线性方程组B AX 求解及更一般的矩阵方程求解提供数学工具,其中矩阵的可逆性及逆矩阵的求法是最主要的内容。本文从矩阵的基本概念及运算入手,主要探讨和归纳矩阵可逆性的四种判定方法和求逆矩阵的五种方法,并引进Matlab这一数学软件求逆矩阵的程序,同时关注广义逆矩阵意义及求法。 [关键词]:矩阵可逆性逆矩阵广义逆求法

矩阵可逆性的判断和可逆矩阵的求法是矩阵理论学习的重点与难点,也是研究矩阵性质及运算中必不可少的一部分。本文在分析和归纳判断矩阵的可逆性和逆矩阵的求法,给出了四种判断矩阵可逆的方法,其中有初等矩阵的应用,有行列式的应用,还有向量的线性无关和线性方程组的应用。逆矩阵的求法给出了五种方法:分别是行变换、列变换、伴随矩阵、分块矩阵法以及Matlab 软件的解法,同时也讨论了广义逆矩阵的求法。对矩阵可逆性的判断与逆矩阵的求法将会给矩阵的学习带来很大的帮助。 第1章 矩 阵 1.1矩阵的定义 定义1 由st 个数ij c 排成一个s 行t 列的表 ???? ?? ? ??st s s t t c c c c c c c c c 2 1 2222111211 叫作一个s 行t 列(或t s ?)矩阵,ij c 叫作这个矩阵的元素。 定义2 矩阵的行(列)初等变换指的是对一个矩阵施行的下列变换: )(i 交换矩阵的两行(列); )(ii 用一个不等于零的数乘矩阵的某一行(列),即用一个不等于零的数乘矩阵的某一行(列)的元素; )(iii 用某一数乘矩阵的某一行(列)后加到另一行(列),即用某一数乘矩阵的某一行(列)的每一元素后加到另一行(列)的对应元素上。 矩阵的初等变换在线性方程组求解,求矩阵的秩及求矩阵的逆矩阵方面都有重要的作用。 1.2矩阵运算 定义1 数域F 的数a 与F 上一个n m ?矩阵)(ij a A =的乘积aA 指的是n m ?矩阵 )(ij aa ,求数与矩阵的乘积的运算叫作数与矩阵的乘法。 定义2 两个n m ?矩阵)(),(ij ij b B a A ==的和B A +指的是n m ?矩阵)(ij ij b a +,求两

总结求逆矩阵方法

总结求逆矩阵方法 直接算会死人的。根据矩阵特点用不用的分解,写成几个例程,每次实验之前进行尝试,根据尝试结果在算法里决定里决定用哪个。 irst 我想问: 1.全阶矩阵A的求逆运算inv(A) 和稀疏矩阵B(阶数和a一样) 的求逆运算inv(B)是不是采取一样的方法啊?也就是说他们的 计算量是不是一样的啊?不会因为是稀疏矩阵就采取特殊的 方法来处理求逆吧? 我电脑内存256M ,做4096*4096的矩阵求逆还可以,上万阶的 就跑不动了 稀疏存储方式会减少不必要的计算,虽然原理还是一样,不过 计算量大大减少了。 2.如果一个矩阵C非零元素都集中在主对角线的周围,那么对C求逆最好 应该采用什么样的方法最好呢? 一般还是用LU分解+前后迭代的方法,如果矩阵对角占优就更好办了。 只不过还是需要稀疏存储。 稀疏矩阵的逆一般不会是稀疏矩阵,所以对高阶的稀疏矩阵求逆, 是不可行的,对1万阶的全矩阵需要的内存差不多已经达到了pc的 极限,我想最好的办法就是迭代,既然是稀疏,乘法的次数就有限, 效率还是很高的。 不过求逆运算基本上就是解方程,对稀疏矩阵,特别是他那种基本上非零元素都在对角线附近的矩阵来说,LU分解不会产生很多的注入元,所以用LU分解解方程方法的方法是可行的。 如果用迭代法,好像也就是共轭梯度法了。 C的资源网络上有很多google一下 或者到https://www.wendangku.net/doc/b93574902.html,,https://www.wendangku.net/doc/b93574902.html,上找找 或者用IMSL for C 或者用Lapack 或者用Matlab+C混合编程 有现成代码,但要你自己找了

也可以使用程序库 second 30,000*30,000的稀疏矩阵求逆如何实现? 试试基于krylov子空间方法的算法吧。 如arnoldi和GMRES方法。 matlab中有函数可以直接调用。 直接help gmres就可以了。 如果效果还不好。 就用用预处理技术。 比如不完全lu预处理方法。。等等。。 各种各样的预处理+GMRES是现在解决大规模稀疏矩阵的主力方法。。 维数再多还是用不完全LU分解预处理+CG or Gmres 我一个同学这么求过200W阶的矩阵 求逆一般是不可取的,无需多说。但稀疏矩阵的直接解法还是不少的。基本上都是对矩阵进行重新排序以期减少填充或运算量。 在matlab里面,有许多算法可以利用: colamd, colmmd, colperm, spparms, symamd, symmmd, symrcm. 根据是否对称,采用LU分解或者chol分解。 这些算法在internet上搜一下,很多都有相应的C或fortran版本。 稀疏矩阵的存储最常见的是压缩列(行)存储,最近发现一种利用hash表来存储的,其存取复杂度是O(1),很是不错。有幸趣的可以看看下面网页咯,作者提供了源程序。 事实上Hash表存储的效率也跟Hash算法有关,弄不好的话,不见得比直接按行或者列 顺序检索快。而且规模越大,效率肯定越来越低。 https://www.wendangku.net/doc/b93574902.html,rmatik.hs-bremen.de/~brey/ 对称正定的稀疏矩阵很好办啊,用LU分解就可以了。 如果维数实在太大,比如超过10^4量级,那就只能用 共轭梯度法之类的迭代法求解了。

逆矩阵运算

陕西科技大学 教育实习教案 课题:逆矩阵 学院:职业技术学院 学号: 8070614118 班级:信工 071 姓名:赵进彪

逆矩阵 Ⅱ.教学目的与要求 熟练掌握逆矩阵存在的条件与矩阵求逆的方法 Ⅲ.重点与难点 重点:矩阵的逆 难点:矩阵的逆的概念 Ⅳ.教学内容 定义 1 对于n 阶矩阵A ,如果有一个n 阶矩阵B ,使 E BA AB ==,则说矩阵A 是可逆的,并把B 称为A 的逆矩阵。 A 的逆矩阵记为1-A .,, 的逆阵也一定是的逆阵时为当由定义知B A A B . ,, 212211B B I A B AB I A B AB =====?则设唯一性

.. 111I A A AA A A ==---有的唯一的逆阵记为可逆阵 定理1 若矩阵A 可逆,则0≠A 证 A 可逆,即有1-A ,使E AA =-1 ,故11 ==-E A A 所以 0≠A 定理2 若0≠A ,则矩阵A 可逆,且* 1 1A A A =- 其中*A 为矩阵A 的伴随矩阵 证 由例1知: E A A A AA ==* * 因0≠A ,故有E A A A A A A ==**11 所以有逆矩阵的定义,既有* 1 1A A A =- 当A =0时,,A 称为奇异矩阵,否则称为非奇异矩阵,由上面两定理可知:A 是可逆矩阵的充分必要条件是0≠A ,即可逆矩 阵就是非奇异矩阵。 推论:若E AB =(或E BA =),则1 -=A B 证 1==E B A ,故0≠A ,因而1-A 存在,于是

111*)()(---=====A E A AB A B A A EB B 方程的逆 矩阵满足下述运算规律 ①若A 可逆,则1 -A 也可逆,且 A A =--11)( ②若A 可逆,数0≠λ,则A λ可逆,且11 1 ) (--= A A λ λ ③若B A .为同阶矩阵且均可逆,则B A .也可逆,且111)(---A B AB 证明 ()()() 1111----=A BB A A B AB 1 -=AEA ,1E AA ==- ().111 ---=∴A B AB 例2 求方程 ??? ? ? ??=343122321.A 的逆矩阵 解 023********≠=?+?+?=A A A A ,知1-A 存在 2.11=A 6.21 =A 4.31-=A 3.12-=A 6.22-=A 532 =A 2.13=A 2.23=A 2.33-=A 于是.A 的伴随矩阵为 ?? ??? ? ?----=222563462 .* A

逆矩阵的运算

11.5逆矩阵 11.5.1逆矩阵的概念 在前面,我们看到矩阵的运算性形式上有些类似于数的地方。比如零矩阵n m O ?在矩阵的加法中与数0在数的加法中有类似的性质:n m n m n m A O A ???=+;单位矩阵n I 在矩阵的乘法中与数1在数的乘法中有类似的性质:n m n n m A I A ??=,n m n m m A A I ??=。 而在数的乘法中,对于任何一个数0≠a 有所谓它的倒数1 -a 存在,适合 111==--a a aa 。下面我们在矩阵的范围中引进起到类似作用的所谓逆矩阵的概念。 定义11.17 对于n 阶矩阵A ,如果存在n 阶矩阵B ,使得 I BA AB == 则称矩阵A 为可逆矩阵,而称矩阵B 为A 的逆矩阵。 如果A 可逆,则A 的逆矩阵是唯一的。事实上,如果B 和C 都是A 的逆矩阵,则有 I BA AB ==,I CA AC == 那么 C IC C BA AC B BI B =====)()( 即 C B =。 我们把矩阵A 唯一的逆矩阵记作1 -A ,读作A 的逆。注意,1 -A 不能读作A 的负一次方,同时由于我们没有定义过矩阵的除法,1 -A 也不能看作 A 1。 1.伴随矩阵求逆法 定义11.18 若n 阶矩阵A 的行列式0≠A ,则称矩阵A 为非奇异的或非退化的。 定理11.11 n 阶矩阵() ij a A =为可逆的充分必要条件是A 为非奇异的,而且 * -= A A A 11 (11.17) 其中 ?? ?? ? ?? ??=*nn n n n n A A A A A A A A A A 2122212 12111 (11.18)

逆矩阵的几种求法与解析(很全很经典)

逆矩阵的几种求法与解析 矩阵是线性代数的主要内容,很多实际问题用矩阵的思想去解既简单又快捷.逆矩阵又是矩阵理论的很重要的内容, 逆矩阵的求法自然也就成为线性代数研究的主要内容之一.本文将给出几种求逆矩阵的方法. 1.利用定义求逆矩阵 定义: 设A、B 都是n 阶方阵, 如果存在n 阶方阵B 使得AB= BA = E, 则称A 为可逆矩阵, 而称B为A 的逆矩阵.下面举例说明这种方法的应用. 例1 求证: 如果方阵A 满足A k= 0, 那么EA是可逆矩阵, 且 (E-A)1-= E + A + A2+…+A1-K 证明因为E 与A 可以交换, 所以 (E- A )(E+A + A2+…+ A1-K)= E-A K, 因A K= 0 ,于是得 (E-A)(E+A+A2+…+A1-K)=E, 同理可得(E + A + A2+…+A1-K)(E-A)=E, 因此E-A是可逆矩阵,且 (E-A)1-= E + A + A2+…+A1-K. 同理可以证明(E+ A)也可逆,且 (E+ A)1-= E -A + A2+…+(-1)1-K A1-K. 由此可知, 只要满足A K=0,就可以利用此题求出一类矩阵E±A的逆矩阵.

例2 设 A =? ? ?? ? ???? ???000030000020 0010,求 E-A 的逆矩阵. 分析 由于A 中有许多元素为零, 考虑A K 是否为零矩阵, 若为零矩阵, 则可以采用例2 的方法求E-A 的逆矩阵. 解 容易验证 A 2=???? ????? ???0000 000060000200, A 3=? ? ?? ? ? ? ?? ???0000 0000 00006000 , A 4=0 而 (E-A)(E+A+ A 2+ A 3)=E,所以 (E-A)1-= E+A+ A 2+ A 3 =? ? ?? ? ???? ???1000 31006210 6211. 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-),就是求逆矩阵的初等行变换法,它是实际应用中比较简单的一种方法.需要注意的是,在作初等变换时只允许作行初等变换.同样,只用列初等变换也可以求逆矩阵.

矩阵LU分解求逆详细分析与C语言实现

题目要求 给定一个多维矩阵,实现该矩阵的求逆运算。 1、理论分析 矩阵的一种有效而广泛应用的分解方法是矩阵的LU 三角分解,将一个n 阶矩阵A 分解为一个下三角矩阵L 和一个上三角矩阵U 的乘积。所以首先对矩阵进行三角分解,这里采用Doolittle 分解,即分解为一个下三角矩阵(对角元素为1),和一个上三角矩阵的乘积。再进行相应的处理。 所以,矩阵求逆的算法流程可表述如下: 输输输输A 输输输LU 输输 L 输输输输U 输输输输 输输U 输输输输L 输 输 输输A 输输输输 U L 图1 矩阵求逆流程图 1)进行LU 分解;

2)对分解后的L 阵(下三角矩阵)和U 阵(上三角矩阵)进行求逆;; 3)L 阵的逆矩阵和U 阵的逆矩阵相乘,即可求得原来矩阵的逆。即: 1111()A LU U L ----== (1) 1.1矩阵的LU 分解 若n 阶方阵 n n n C A *∈的各阶顺序主子式不等于零,即: ),,,2,1(,0212222111211n k akk ak ak k a a a k a a a k =≠= ? (2) 则A 的LU 分解A L U =?存在且唯一。 111111*********r n r rr rn n nr nn r n r rr rn n nr nn a a a A a a a a a a U U U L U U LU L L U ?? ??????== ???????????? ???????? ????=???? ???? ??????? ? (3) 由矩阵的乘法原理, 可推导出LU 分解的迭代算法 (4) 000 ,(0,1,2,,1),i i a l i n u ==- (5) 1 1 11 , (0,1,2,,1;,,1), r rj ik kj r k rj rj rk kj k rr a l u u a l u l r n j r n --==-= =-=-=-∑∑ (6) 00,(0,1,2,,1), j j U a j n ==-

逆矩阵的几种求法与解析(很全很经典)

E-A) 1= E + A + 2 K1 + … +A (E- A )(E+A + A 2+…+ A K 1)= E-A K (E-A) (E+A+A 2 + …+A K 1)=E, 逆矩阵的几种求法与解析 矩阵是线性代数的主要内容 ,很多实际问题用矩阵的思想去解既简单又快捷 .逆矩阵又是矩阵理论的很重要的内容 , 逆矩阵的求法自然也就成为线性代数研究的主要内容之一 .本文将给出几种求逆矩阵的方法 . 1. 利用定义求逆矩阵 定义:设A、B都是n阶方阵,如果存在n阶方阵B使得AB= BA = E,则称A 为可逆矩阵,而称B为A的逆矩阵.下面举例说明这种方法的应用. 例1 求证:如果方阵A满足A k= 0,那么EA是可逆矩阵,且 证明因为E与A可以交换,所以 因A K= 0 ,于是得 同理可得( E + A + A 2 + … +A K 1 )(E-A)=E , 因此E-A是可逆矩阵,且 (E-A) 1 = E + A + A 2 +…+A K 1 同理可以证明 (E+ A) 也可逆,且

E-A 的逆矩阵. (E+ A) 1 = E -A + A 2+…+ (-1 ) K1A K1 . 由此可知,只要满足A K =0,就可以利用此题求出一类矩阵E A 的逆矩阵. 例2 设 A = 00 20 00 03 ,求 0003 0000 分析 由于A 中有许多元素为零,考虑A K 是否为零矩阵,若为零矩阵,则可以 采用例2的方法求E-A 的逆矩阵. 解 容易验证 00 2 0 0 0 0 6 2 00 0 6 3 0 0 0 0 4 A 2 = ■ A 3= , A 4 =0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 而 (E-A)(E+A+ A 2 + A 3 )=E , 所以 1 1 2 6 1 2 3 0 1 2 6 (E-A) E+A+ A 2 + A . 0 0 1 3 0 0 0 1 2. 初等变换法 求元素为具体数字的矩阵的逆矩阵,常用初等变换法 ?如果A 可逆,则A 可通过 初等变换,化为单位矩阵I ,即存在初等矩阵R,P 2 , P S 使 (1) p 1 p 2 p s A=I ,用 A 1 右乘上式两端,得: (2) p 1 p 2 p s I= A 1 比较(1)(2)两式,可以看到当A 通过初等变换化为单位矩阵的同时,对单 位矩阵I 作同样的初等变换,就化为A 的逆矩阵A 1. 用矩阵表示( A I ) 为( I A 1 ),就是求逆矩阵的初等行变换法, 它是实际应用中比较简单的一种方法 .需要注意的是,在作初等变换时只允许作行初 等

相关文档