📄 linearleastsquares.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 + -