学习笔记——gauss消元法
。。。看了好几篇博客,说得都挺好的。。。
这里直接安利一篇讲得很棒的博客吧。。。
http://blog.csdn.net/u010182633/article/details/45225179
我们经常讲的是正常版递归上三角矩阵的gauss消元,这里上一份高斯——若尔当消元的代码,就是对角线矩阵消元
复杂度O(n^3)

//a 方程组对应的矩阵 //n 未知数个数 //l,ans 存储解,l[]表示是否为自由元 //返回值:解空间的维数 inline int gauss(double a[][MAXN],double ans[],bool l[],const int& n){ int res=0,r=0; for(int i=0;i<n;i++) l[i]=false; for(int i=0;i<n;i++){ for(int j=r;j<n;j++) if(fabs(a[j][i])>EPS){ for(int k=i;k<n;k++) swap(a[j][k],a[r][k]); break; } if(fabs(a[r][i])<EPS){ ++res; continue; } for(int j=0;j<n;j++){ if(j!=r && fabs(a[j][i])>EPS){ double tmp=a[j][i]/a[r][i]; for(int k=i;k<n;k++) a[j][k]-=tmp*a[r][k]; } } l[i]=true;++r; } for(int i=0;i<n;i++) if(l[i]) for(int j=0;j<n;j++) if(fabs(a[j][i])>0) ans[i]=a[j][n]/a[j][i]; return res; }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步