矩阵的乘法和求逆(C语言实现)
来源:互联网 发布:淘宝买车怎么买 编辑:程序博客网 时间:2024/05/21 22:37
文章分为两个部分:
1、用C语言实现矩阵的相乘
2、用C语言实现矩阵的求逆
1、矩阵的相乘
/************************************************************************ 函数名称:* MatricMul()**函数参数:* int a[] -第一个矩阵* int b[] -第二个矩阵* int c[] -结果矩阵* int m -第一个矩阵为m行* int Middle -第一个矩阵为Middle列,第二个矩阵为Middle行* int n -第二个矩阵为n列* 返回值: 无返回值** 说明:无***********************************************************************/void MatricMul(int a[],int b[],int c[],int m,int Middle,int n){for (int i=0;i<m;i++ ){for (int j=0;j<n;j++){int sum = 0;for (int k=0;k<Middle;k++){sum += a[i*Middle+k] * b[k*n+j];}c[i*n+j] = sum;}}}
2、矩阵求逆
此程序使用的是初等变换法。
/*********************************************************************** * 函数名称: * MatrixOpp * *函数参数: * double a[] -原始矩阵 * double result[] -结果矩阵 * * 返回值: 无返回值 * * 说明:矩阵的维数需要定义,且需要定义为常量型的,需要注意***********************************************************************/ void MatrixOpp(double a[], double result[]){int const M=3; //矩阵的维数int const N =2*M; //增广矩阵的列数double b[M][N]; //增广矩阵int i,j,k;for(i=0;i<M;i++){for(j=0;j<M;j++){b[i][j]=a[i*M+j];}}/*****************扩展矩阵***********************/for(i=0;i<M;i++){for(j=M;j<N;j++){if(i==(j-M)){b[i][j]=1;}else{b[i][j]=0;}}}/*****************扩展矩阵***********************//*****************求逆模块***********************/for(i=0;i<M;i++){if(b[i][i]==0){for(k=i;k<M;k++){if(b[k][k]!=0){for(int j=0;j<N;j++){double temp;temp=b[i][j];b[i][j]=b[k][j];b[k][j]=temp;}break;}}if(k==M){cout<<"该矩阵不可逆!"<<endl;}}for(j=N-1;j>=i;j--){b[i][j]/=b[i][i];}for(k=0;k<M;k++){if(k!=i){double temp=b[k][i];for(j=0;j<N;j++){b[k][j]-=temp*b[i][j];}}}}/*****************求逆模块***********************//*****************导出结果***********************/for(i=0;i<M;i++){for(j=M;j<N;j++){result[i*M+j-3]=b[i][j];}}/*****************导出结果***********************/for(i=0;i<M;i++){for(j=0;j<M;j++){cout<<result[i*M+j]<<" ";}cout<<endl;}}
扩充:超定方程的最小二乘求解
通过计算矩阵的转置、矩阵的逆、以及矩阵相乘,最终得到超定方程的最小二乘解。
0 0
- 矩阵的乘法和求逆(C语言实现)
- 矩阵求逆的C语言实现
- 矩阵乘法的C语言实现
- C语言矩阵乘法(指针实现)
- 矩阵乘法C语言实现
- C语言实现矩阵乘法
- C语言实现矩阵乘法
- 矩阵乘法(C语言)
- c语言实现求逆矩阵
- 求助:矩阵求逆、矩阵乘法的Delphi实现(20个积分的奖励)
- C语言之两矩阵乘法的实现
- gemm() 与 gesvd() 到矩阵求逆(inverse)(根据 SVD 分解和矩阵乘法求矩阵的逆)
- 复数矩阵乘法C语言实现
- 复数矩阵乘法C语言实现
- C语言求矩阵的行列式、伴随矩阵、逆矩阵
- C语言矩阵乘法
- 矩阵 模板(矩阵加减,矩阵乘法,矩阵求逆)
- 求生成树的个数(矩阵+乘法逆元)
- verilog代码中的"parameter" "#" "localparam"
- 3,4单元总结
- $.ajax请求数据时,请求文件内容不能用单引号
- android复习路之service综合篇
- Mysql数据库查询语句DQL(Data Query Language)—— 基本查询
- 矩阵的乘法和求逆(C语言实现)
- 编译安装pcre
- 合并排序数组
- 结束了一段时间
- Find Minimum in Rotated Sorted Array II
- jstorm 学习记录一
- 分数线划定pascal程序
- MySQL数据库---操作
- Ubuntu14.04中ROS的安装指南