矩阵的求逆
来源:互联网 发布:速卖通产品数据分析 编辑:程序博客网 时间:2024/05/01 18:55
最近做一个加密算法遇到需要计算矩阵的逆,闲着无聊,记录一下,以后免得再麻烦。
#include <stdio.h>#include <math.h>#include <string.h>#define MAX 20#define E 0.000000001/** * 计算矩阵src的模 */double calculate_A( double src[][MAX], int n ){int i,j,k,x,y;double tmp[MAX][MAX], t;double result = 0.0;if( n == 1 ){return src[0][0];}for( i = 0; i < n; ++i ){for( j = 0; j < n - 1; ++j ){for( k = 0; k < n - 1; ++k ){x = j + 1;y = k >= i ? k + 1 : k;tmp[j][k] = src[x][y];}}t = calculate_A( tmp, n - 1 );if( i % 2 == 0 ){result += src[0][i] * t;}else{result -= src[0][i] * t;}}return result;}/** * 计算伴随矩阵 */void calculate_A_adjoint( double src[MAX][MAX], double dst[MAX][MAX], int n ){int i, j, k, t, x, y;double tmp[MAX][MAX];if( n == 1 ){dst[0][0] = 1;return;}for( i = 0; i < n; ++i ){for( j = 0; j < n; ++j ){for( k = 0; k < n - 1; ++k ){for( t = 0; t < n - 1; ++t ){x = k >= i ? k + 1 : k ;y = t >= j ? t + 1 : t;tmp[k][t] = src[x][y];}}dst[j][i] = calculate_A( tmp, n - 1 );if( ( i + j ) % 2 == 1 ){dst[j][i] = -1*dst[j][i];}}}}/** * 得到逆矩阵 */int calculate_A_inverse( double src[MAX][MAX], double dst[MAX][MAX], int n ){double A = calculate_A( src, n );double tmp[MAX][MAX];int i, j;if ( fabs( A - 0 ) <= E ){printf("不可能有逆矩阵!\n");return 0;}calculate_A_adjoint( src, tmp, n ); for( i = 0; i < n; ++i ) { for( j = 0; j < n; ++j ) { dst[i][j] = (double)( tmp[i][j] / A );} }return 1;}/** * 输出矩形查看 */void print_M( double M[][MAX], int n ){int i, j;for ( i = 0; i < n; ++i ){for ( j = 0; j < n; ++j ){printf("%lf ", M[i][j]);}printf("\n");}}/** * main */int main(){/** * 测试矩阵 */double test[MAX][MAX], dst[MAX][MAX];int n = 3;int is_exist;/** * 构造最简单的: * 1, 0, 0, * 0, 2, 0, * 0, 0, 5 */memset( test, 0, sizeof( test ) );test[0][0] = 1.0;test[1][1] = 2.0;test[2][2] = 5.0;is_exist = calculate_A_inverse( test, dst, n );if ( is_exist ){print_M(dst, n);}else{printf("不存在!\n");}return 0;}
- 求矩阵的逆
- 矩阵的求逆
- 求矩阵的逆
- 矩阵的求逆
- 求矩阵的逆
- pinv--求矩阵的伪逆矩阵
- 求矩阵的逆矩阵 c++
- 矩阵求逆的算法
- ublas求矩阵的逆
- inv--求矩阵的逆
- LAPACK 求矩阵的逆
- 求逆矩阵的方法
- C语言求矩阵的行列式、伴随矩阵、逆矩阵
- Matlab求矩阵的逆矩阵的C++代码
- 如何在C#去求矩阵的逆矩阵
- 如何在C#去求矩阵的逆矩阵
- 求逆矩阵以及两矩阵相乘的算法实现
- 使用OpenCV求模拟矩阵的逆矩阵
- Invalid action class configuration that references an unknown class named错误解决
- mssqlserver2008 收缩日志文件
- Qt主窗口没有最小化,最大化按钮且最大化显示
- cocos2d-x中添加Enter键和方向键按键响应
- 摄像头测脉搏的原理
- 矩阵的求逆
- 利用摄像头做一个手写书法程序(设想)
- Oracle Data Security - Advanced Security
- 人力资源总监面试时是怎么想的?
- 关于web页面播放声音
- 个人电脑配置外网可以访问服务器
- 深入浅出Swing事件分发线程
- cef chromium scrollbar--google浏览器框架自定义滚动条
- linux socket和UDP 源端口绑定