求下下三角矩阵求逆算法的可以逆阵

矩阵求逆的快速算法 -
矩阵求逆的快速算法
矩阵求逆在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 = i & 4; i ++)
for (DWORD j = j & 4; j ++)
const float f = Abs(m(i, j));
if (f & fMax)
if (Abs(fMax) & 0.0001f)
if (is[k] != k)
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)
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]));
return fDet *
原算法(经过高度优化)
需要额外空间
16 * sizeof(float)
34 * sizeof(float)
25 * sizeof(float)
结果不言而喻吧。扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
求用分块方法求这个矩阵的逆阵
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
为您推荐:
其他类似问题
扫描下载二维码4504人阅读
应用技巧(19)
Excel中有很多执行线性代数运算的函数,只要轻点鼠标,各种计算都手到擒来。这一部分,我们将介绍矩阵求逆的方法。对于n阶方阵A,如果另外有一个n阶方矩阵B,使得A×B=E,E为单位矩阵,则A和B互为逆矩阵。比如下面的例子,读者可以利用中提供的方法来验证它们相乘的结果是一个单位矩阵。注意根据线性代数的知识:(1)只有方阵才有逆矩阵;(2)A是可逆矩阵的充分必要条件是矩阵的行列式∣A∣≠0,即可逆矩阵就是非奇异矩阵。首先,我们在EXCEL中输入一个待求逆的矩阵,如下图所示,其中蓝色部分表示A矩阵。然后再选定一个与A同样大小的区域作为显示计算结果的部分,如图中黄色部分所示。EXCEL中提供的矩阵求逆函数是MINVERSE,所以在选定显示计算结果的区域之后,我们就可以在公式栏中编辑公式,如果你看不到公示栏,那么先输入等号“=”,EXCEL就会知道你将要输入的是一个公式。然后在函数MINVERSE的参数部分,选定蓝色的区域,如下所示。主要要把括号输入完整。然后,同时按下Ctrl + Shift + Enter, 就大功告成啦!
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1905766次
积分:24771
积分:24771
排名:第264名
原创:318篇
转载:15篇
评论:4091条
:隐匿在数据结构背后的原理(C++版)
源码获取,读者答疑,请加算法学习群()
《图像处理中的数学修炼》
图像处理书籍读者群()还未购入本书者,切勿尝试加群,本群谢绝吃瓜群众以及毫无诚信者围观,妄图浑水摸鱼的行为最终都只能自取其辱
1. 在博客文章下留言,博客私信一律不回。
2. 邮件,将#换成@。君,已阅读到文档的结尾了呢~~
精品:总结求逆矩阵方法 求逆矩阵的方法 求逆矩阵 怎么求逆矩阵 逆矩阵求法 逆矩阵的求法 如何求逆矩阵 matlab求逆矩阵 excel 求逆矩阵 求矩阵的逆矩阵
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
总结求矩阵的逆矩阵方法
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口扫二维码下载作业帮
2亿+学生的选择
下载作业帮安装包
扫二维码下载作业帮
2亿+学生的选择
怎么计算1个矩阵的逆矩阵?
猫又゛膒蜱
扫二维码下载作业帮
2亿+学生的选择
矩阵的逆矩阵计算方法是:将此矩阵与一个单位矩阵写在一起,然后对此矩阵与单位矩阵一起进行初等行变换,当此矩阵变为单位矩阵时,与他写在一起的单位矩阵就是此矩阵的逆矩阵.例如:
为您推荐:
其他类似问题
矩阵A的逆矩阵等于A的模分支A的伴随矩阵
在线性代数中逆矩阵是按其伴随矩阵定义的,若则方阵可逆,且,其中为的伴随矩阵。要计算个阶的列式才能得到一个伴随矩阵,在数值计算中因其计算工作量大而不被采用。通常对做行的初等的效换,在将化成的过程中得到。在数值计算中,这仍然是一种行之有效的方法。
由逆矩阵的定义 令,有
化为个方程组j
是第个分量为1,其余分量为0的维向量。或记为:。
用直接法...
如果是二阶矩阵,逆矩阵就是主对角线对调,副对角线变号。。即可求得。。
扫描下载二维码

我要回帖

更多关于 求矩阵的逆 的文章

 

随机推荐