高斯消元法
1 #include<cstdio> 2 #include<cmath> 3 4 const double EPS=1E-8; //精度问题 5 double B[110][110]; 6 int n; 7 8 int main(){ 9 scanf("%d",&n); 10 for ( int i=0;i<n;i++){ 11 for ( int j=0;j<n;j++) 12 scanf("%lf",&B[i][j]);//读入系数 13 scanf("%lf",&B[i][n]);//读入值 14 } 15 for ( int i=0;i<n;i++){ 16 int pivot=i; 17 for ( int j=i;j<n;j++)//选择一个当前位置系数绝对值最大的调换过来,防止误差 18 if (fabs(B[j][i]-B[pivot][i])<=EPS) pivot=j; 19 for ( int j=0;j<=n;j++){//交换操作,要将所有的全部交换过来 20 double t=B[i][j]; 21 B[i][j]=B[pivot][j]; 22 B[pivot][j]=t; 23 } 24 if (fabs(B[i][i])<=EPS){//如果该位置系数等于零,则0x=a,一定无解 25 printf("No Solution\n"); 26 return 0; 27 } 28 for ( int j=i+1;j<=n;j++) B[i][j]/=B[i][i];//将该位的系数变为1 29 for ( int j=0;j<n;j++) //此处看不懂 先死记住 30 if (i!=j) 31 for ( int k=i+1;k<=n;k++) B[j][k]-=B[j][i]*B[i][k];//将其他方程用加减法减去系数值 32 } 33 for ( int i=0;i<n;i++) printf("%.2lf\n",B[i][n]);//最后输出结果。 34 return 0; 35 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通