首页 > 代码库 > 解方程与高斯消元
解方程与高斯消元
解决多元一次方程组:
n个方程n个未知数
高斯消元法:
思路:
1.把方程未知数的系数写成一个矩阵
2.消去x1,用除第一行以外的其他行减去第一行,写在原位上
3.同理第二步,消去第三行的x2
4.原来的矩阵会变成一个上三角矩阵
5.最后直接解方程
*如果当前方程需要消元的位置系数是0,就把当前方程和下面第一个非0的方程换一下位置
反正也不影响答案
代码实现:
void gauss() { juzhen:m for(int i=1;i<=n;++i) { if(m[i][i]==0) { for(int j=i+1;j<=n;++j) { if(m[j][i])//如果找不到,那么可以随便取值,无所谓 { swap(m[i],m[j]); break; } } } for(int j=i+1;j<=n;++j) { ratio=m[j][i]/m[i][i]; for(int k=1;k<=n+1;++k)//k也可以从i开始 m[j][k]-=m[i][k]*ratio; } } for(int i=n;i>=1;--i) { solution[i]=m[i][n+1]; for(int j=i+1;j<=n;++j) solution[i]-=m[i][j]*solution[j]; solution[i]/=m[i][i]; } }
还没编译过,不知道对不对。。
解决多元多次方程组
e.g.
f(x)=ax^5+bx^4+cx^3+dx^2+ex+f
解法:令x=1,2,3,4,5,带入方程,可得六个一次方程,然后用高斯消元
那么如果不一定是5次呢
用高斯消元造一个自动找规律机/滑稽,打表
解方程与高斯消元
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。