shiyan6.txt

来自「数值计算(科学计算)实验代码高斯消元楚列斯基分解」· 文本 代码 · 共 57 行

TXT
57
字号
//  利用增广矩阵解最小二乘问题
public class AugmentedSystem {
	public double[][] constructA(double[] t,double[] y,int n)
	{
		int tLength=t.length;
		double[][] aa=new double[tLength][n];
		for(int i=0;i<tLength;i++)
			aa[i][0]=1;
		for(int i=0;i<tLength;i++)
			for(int j=1;j<n;j++)
				aa[i][j]=aa[i][j-1]*t[i];
		return aa;	
	}
	public double[][] constructAugentArrary(double[][] aaa,int m,int n)
	{
		double[][] augentArrary=new double[m+n][m+n];
		for(int i=0;i<m+n;i++)
			for(int j=0;j<m+n;j++)
				augentArrary[i][j]=0;
		
		
		for(int i=0;i<m;i++)
			augentArrary[i][i]=1;
		
		
		for(int i=0;i<m;i++)
			for(int j=m;j<m+n;j++)
				augentArrary[i][j]=aaa[i][j-m];
		
		for(int i=m;i<m+n;i++)
			for(int j=0;j<m;j++)
				augentArrary[i][j]=aaa[j][i-m];
		
		return augentArrary;	
	}
	public double[] AugmentedSystem (double[][] t,int m,double[] y,int n)
	{
		//int m=t.length;
		//double[][] aaaa=this.constructA(t, y, n);
		double[][] augentA=this.constructAugentArrary(t, m, n);
		double[] xx=new double[m+n];
		double[] yy=new double[m+n];
		for(int i=0;i<m;i++)
			yy[i]=y[i];
		for(int i=m;i<m+n;i++)
			yy[i]=0;
		Gaussian rrrrr=new Gaussian();
		xx=rrrrr.Gaussian(augentA, yy, m+n);
		double[] x=new double[n];
		for(int i=0;i<n;i++)
		    x[i]=xx[i+m];
		
		return x;	
	}
	
}

⌨️ 快捷键说明

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