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

📄 linearleastsquares.java

📁 数值计算(科学计算)实验代码高斯消元楚列斯基分解
💻 JAVA
字号:

public class LinearLeastSquares {
	public double[] normalEquations(double[] t,double[] y,int n)
	{
	//构造矩阵A
		int tLength=t.length;
		double[][] aaa=new double[tLength][n];
		for(int i=0;i<tLength;i++)
		aaa[i][0]=1;
		double[][] aaaT=new double[n][tLength];
		for(int i=0;i<tLength;i++)
			for(int j=1;j<n;j++)
				aaa[i][j]=aaa[i][j-1]*t[i];
		aaaT=this.aT(aaa, tLength, n);
		double[][] rrrr=new double[tLength][1];
		for(int i=0;i<tLength;i++)
			rrrr[i][0]=y[i];
		double[][] mmmm=this.matrixMutiple(aaaT, aaa, n, tLength, n);//A	
		double[][] nnnn=this.matrixMutiple(aaaT, rrrr, n, tLength, 1);
		double[] bC=new double[n];
		for(int i=0;i<n;i++)
			bC[i]=nnnn[i][0];//b
		Gaussian gassian=new Gaussian();
		double[] x=gassian.Gaussian(mmmm, bC, n);
		return x;
		
	}
	
	public double[][] aT(double[][] a,int i,int j)
	{
		double[][] aT=new double[j][i];
		for(int m=0;m<j;m++)
			for(int q=0;q<i;q++)
				aT[m][q]=a[q][m];	
		return aT;
			
	}
	public double[][] matrixMutiple(double[][] a,double[][] b,int i,int j,int k)
	{
		double[][] matrixMutiple=new double[i][k];
		for(int m=0;m<i;m++)
			for(int q=0;q<k;q++)
				matrixMutiple[m][q]=0;	
		for(int m=0;m<i;m++)
			for(int n=0;n<k;n++)
		    {
				//double sum=0;
				for(int r=0;r<j;r++)
				matrixMutiple[m][n]=matrixMutiple[m][n]+a[m][r]*b[r][n];	
		    }
		return matrixMutiple;
		
	}

}

⌨️ 快捷键说明

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