求逆矩阵

/** * Inverse of a Matrix: * Using Gauss-Jordan Elimination; * by 艾孜尔江. **/ #include<iostream> using namespace std; int main() { int i = 0, j = 0, k = 0, n = 0; float **mat = NULL; float d = 0.f; cout << "How many variables? "; cin >> n; cout << endl; // Allocating memory for matrix array mat = new float*[2*n]; for (i = 0; i < 2*n; ++i) { mat[i] = new float[2*n](); } cout << "Please enter the coefficients:" << endl; //Inputs the coefficients of the matrix for(i = 0; i < n; ++i) { for(j = 0; j < n; ++j) { // raw major!!! cin >> mat[i][j]; } } cout << endl << "Input matrix:" << endl; for (i = 0; i < n; ++i) { for (j = 0; j < n; ++j) { cout << mat[i][j] << "\t"; } cout << endl; } cout << endl; // Initializing Right-hand side to identity matrix for(i = 0; i < n; ++i) { for(j = 0; j < 2*n; ++j) { if(j == (i+n)) { mat[i][j] = 1; } } } // Partial pivoting for(i = n; i > 1; --i) { if(mat[i-1][1] < mat[i][1]) { for(j = 0; j < 2*n; ++j) { d = mat[i][j]; mat[i][j] = mat[i-1][j]; mat[i-1][j] = d; } } } cout << endl; // Pivoted output cout << "Pivoted output: " << endl; for(i = 0; i < n; ++i) { for(j = 0; j < 2*n; ++j) { cout << mat[i][j] << "\t"; } cout << endl; } cout << endl; // Reducing To Diagonal Matrix for(i = 0; i < n; ++i) { for(j = 0; j < 2*n; ++j) { if(j != i) { d = mat[j][i] / mat[i][i]; for(k = 0; k < n*2; ++k) { mat[j][k] -= mat[i][k]*d; } } } } cout << endl; // Reducing To Unit Matrix for(i = 0; i < n; ++i) { d = mat[i][i]; for(j = 0; j < 2*n; ++j) { mat[i][j] = mat[i][j]/d; } } // Print inverse of the input matrix cout<<"Inverse matrix:" << endl; for(i=0; i < n; ++i) { for(j = n; j < 2*n; ++j) { cout << mat[i][j] << "\t"; } cout << endl; } // Deleting the memory allocated for (i = 0; i < n; ++i) { delete[] mat[i]; } delete[] mat; return 0; }



作者:艾孜尔江


__EOF__

本文作者艾孜尔江
本文链接https://www.cnblogs.com/ezhar/p/14190397.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   艾孜尔江  阅读(111)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示