版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、gauss-jordan法实矩阵求逆 下面是实现gauss-jordan法实矩阵求逆。 #include stdlib.h #include math.h #include stdio.h int brinv(double a, int n) int *is,*js,i,j,k,l,u,v; double d,p; is=malloc(n*sizeof(int); js=malloc(n*sizeof(int); for (k=0; k=n-1; k+) d=0.0; for (i=k; i=n-1; i+) for (j=k; j=n-1; j+) l=i*n+j; p=fabs(al);
2、if (pd) d=p; isk=i; jsk=j; if (d+1.0=1.0) free(is); free(js); printf(err*not invn); return(0); if (isk!=k) for (j=0; j=n-1; j+) u=k*n+j; v=isk*n+j; p=au; au=av; av=p; if (jsk!=k) for (i=0; i=n-1; i+) u=i*n+k; v=i*n+jsk; p=au; au=av; av=p; l=k*n+k; al=1.0/al; for (j=0; j=n-1; j+) if (j!=k) u=k*n+j; a
3、u=au*al; for (i=0; i=n-1; i+) if (i!=k) for (j=0; j=n-1; j+) if (j!=k) u=i*n+j; au=au-ai*n+k*ak*n+j; for (i=0; i=n-1; i+) if (i!=k) u=i*n+k; au=-au*al; for (k=n-1; k=0; k-) if (jsk!=k) for (j=0; j=n-1; j+) u=k*n+j; v=jsk*n+j; p=au; au=av; av=p; if (isk!=k) for (i=0; i=n-1; i+) u=i*n+k; v=i*n+isk; p=
4、au; au=av; av=p; free(is); free(js); return(1); void brmul(double a, double b,int m,int n,int k,double c) int i,j,l,u; for (i=0; i=m-1; i+) for (j=0; j=k-1; j+) u=i*k+j; cu=0.0; for (l=0; l=n-1; l+) cu=cu+ai*n+l*bl*k+j; return; int main() int i,j; static double a44= 0.2368,0.2471,0.2568,1.2671, 1.11
5、61,0.1254,0.1397,0.1490, 0.1582,1.1675,0.1768,0.1871, 0.1968,0.2071,1.2168,0.2271; static double b44,c44; for (i=0; i=3; i+) for (j=0; j=3; j+) bij=aij; i=brinv(a,4); if (i!=0) printf(mat a is:n); for (i=0; i=3; i+) for (j=0; j=3; j+) printf(%13.7e ,bij); printf(n); printf(n); printf(mat a- is:n); f
6、or (i=0; i=3; i+) for (j=0; j=3; j+) printf(%13.7e ,aij); printf(n); printf(n); printf(mat aa- is:n); brmul(b,a,4,4,4,c); for (i=0; i=3; i+) for (j=0; j=3; j+) printf(%13.7e ,cij); printf(n); 矩阵求逆的快速算法 算法介绍 矩阵求逆在3d程序中很常见,主要应用于求billboard矩阵。根据定义的计算方法乘法运算,严峻影响了性能。在需要大量billboard矩阵运算时,矩阵求逆的优化能极大提高性能。这里要介
7、绍的矩阵求逆算法称为全选主元高斯-约旦法。 高斯-约旦法(全选主元)求逆的步骤如下: 首先,对于 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)
8、= -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 is4; dword js4; float fdet = 1.0f; int f = 1; for (int k = 0; k 4; k +) / 第一步,全选主元 flo
9、at 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; isk = i; jsk = j; if (abs(fmax) 0.0001f) return 0; if (isk != k) f = -f; swap(m(k, 0), m(isk, 0); swap(m(k, 1), m(isk, 1); swap(m(k, 2), m(isk, 2); swap(m(k, 3), m(isk, 3); if (
10、jsk != k) f = -f; swap(m(0, k), m(0, jsk); swap(m(1, k), m(1, jsk); swap(m(2, k), m(2, jsk); swap(m(3, k), m(3, jsk); / 计算行列值 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 (jsk != k) swap(m(k, 0), m(jsk, 0); swap(m(k, 1), m(jsk, 1); swap(m(k, 2), m(jsk, 2); swap
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版机械行业科技创新合作合同书3篇
- 二零二五版艺术品字画购销与仓储管理合同2篇
- 二零二五版农业用地土壤环境质量调查委托合同3篇
- 二零二五版LED显示屏安全防护与应急响应合同3篇
- 美容院商铺租赁合同(2025版):美容院美容美体设备租赁及售后服务协议2篇
- 二零二五年绿色建筑空调系统设计与施工合同3篇
- 二零二五版废旧设备买卖及环保处理合同2篇
- 二零二五版房地产投资合作三方买卖合同3篇
- 二零二五版二手车鉴定评估及转让合同3篇
- 2025年度不锈钢太阳能板安装工程合同3篇
- GB/T 12914-2008纸和纸板抗张强度的测定
- GB/T 1185-2006光学零件表面疵病
- ps6000自动化系统用户操作及问题处理培训
- 家庭教养方式问卷(含评分标准)
- 城市轨道交通安全管理课件(完整版)
- 线缆包覆挤塑模设计和原理
- TSG ZF001-2006 安全阀安全技术监察规程
- 部编版二年级语文下册《蜘蛛开店》
- 锅炉升降平台管理
- 200m3╱h净化水处理站设计方案
- 个体化健康教育记录表格模板1
评论
0/150
提交评论