Java的高斯消元法

算法虽然会,但是用数组的形式进行求值是一件非常非常恶心的事情。

更恶心的是,公司里面的逻辑居然要用到方程组求解,万分无奈之下,上网找了一份Java代码。

谁知道居然是个算法数组从1开始的。

好吧,认了吧,我就把你改过来。

调试通过。

留个代码做纪念。

 

package com;

public class EquationSolver {

	/**
	 * @列主元高斯消去法
	 */
	static double a[][];
	static double b[];
	static double x[];
	static int n;
	static int n2; //记录换行的次数
    public static void Elimination(){  //消元
    	PrintA();
		for(int k=0;k=0;i--)
    		x[i]=(b[i]-jisuan(i))/a[i][i];
    }
    public static double jisuan(int i){
    	double he=0.0;
    	for(int j=i;j<=n-1;j++)
    		he=he+x[j]*a[i][j];
    	return he;
    }
    public static void Wrap(int k){//换行
    	double max=Math.abs(a[k][k]);
    	int n1=k;                   //记住要交换的行
    	for(int i=k+1;imax){
    			n1=i;
    			max=Math.abs(a[i][k]);
    		}
    	}
    	if(n1!=k)
    	{
    		n2++;
    	System.out.println("当k="+k+"时,要交换的行是:"+k+"和"+n1);
    	for(int j=k;j

 

你可能感兴趣的:(java,算法,线性方程组求解,Java)