[模板]高斯消元
1 void Gauss(){ 2 register int bj;register double pp; 3 for(int i=1;i<=n;++i){ 4 bj=i; 5 for(int j=i+1;j<=n;++j) 6 if(gauss[bj][i]*gauss[bj][i]<gauss[j][i]*gauss[j][i])bj=j; 7 for(int j=1;j<=n+1;++j)pp=gauss[i][j],gauss[i][j]=gauss[bj][j],gauss[bj][j]=pp; 8 if(gauss[i][i]*gauss[i][i]<1e-7)continue; 9 for(int j=1;j<=n;++j){ 10 if(i==j)continue; 11 pp=gauss[j][i]/gauss[i][i]; 12 for(int k=1;k<=n+1;++k)gauss[j][k]-=pp*gauss[i][k]; 13 } 14 } 15 for(int i=n;i;--i){ 16 for(int j=i+1;j<=n;++j) gauss[i][n+1]-=gauss[i][j]*gauss[j][n+1]; 17 gauss[i][n+1]/=gauss[i][i]; 18 } 19 for(int i=1;i<n;++i)printf("%.10lf\n",gauss[i][n+1]); 20 }
$Fate \ is \ Fake$

浙公网安备 33010602011771号