⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 用java来编写列主元gauss消去法解方程组.txt

📁 用java来编写列主元gauss消去法解方程组
💻 TXT
字号:
public class Solve {

     public static void main(String[] args) {
          //double[][] a; double[] b, x;
          //int n;
          //n = 3;
          //a = new double[n][n];
          //b = new double[n];
          //x = new double[n];
          //You might like to input data from a text file and comment the following paragraph.
        
          double[][] a = {{2,0,0},{3,1,0},{0,4,1}};
          double[] b = {2,4,5};
          double[] x = {0,0,0};
          int n;
          n = b.length;
        
          if (GaussEliminate(a,b,x))
          {    for (int i=0; i<n; i++)
               {    System.out.println(x[i]);
               }
          }
          else
          {    System.out.println("This is a single matrix!");
          }
     }
    
     static boolean GaussEliminate(double[][] a, double[] b, double[] x) { 
          //Gaussian elimination method, coded by www.dayi.net btef (please let this line remain)
          int maxI, i, j, n, n1;
          double maxV, s1;

          n = b.length;
          n1 = n-1;
          for (int ii=0; ii<n; ii++)
          {    maxV = Math.abs(a[ii][ii]);
               maxI = ii;
               for (i=ii+1; i<n; i++)
               {    if (Math.abs(a[i][ii])>maxV) 
                    {    maxV = Math.abs(a[i][ii]);
                         maxI = i;
                    }
               }

               if (maxV == 0.0)
               {    return(false);
               }

               if (ii!=maxI)
               {    for (j=ii; j<n; j++)                                    //exchange rows
                    {    s1 = a[maxI][j]; a[maxI][j] = a[ii][j]; a[ii][j] = s1;
                    }
                    s1 = b[maxI]; b[maxI] = b[ii]; b[ii] = s1;
               }
               for (i=ii+1; i<n; i++)                                       //elemination
               {    s1 = a[i][ii]/a[ii][ii];
                    for (j=ii+1; j<n; j++)
                    {    a[i][j] -= a[ii][j]*s1;
                    }
                    b[i] -= b[ii]*s1;
               }
          } 
          x[n1] = b[n1]/a[n1][n1];                                     //back substitution
          for (i=n1; i>=0; i--)
          {    s1 = 0.;
               for (j=i+1; j<n; j++)
               {    s1 += a[i][j]*x[j];
               }
               x[i] = (b[i]-s1)/a[i][i];
          }
          return(true);
     }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -