public class MatrixEigenValue {
public static int Hessenberg(double[][] Matrix,int n,double[][]ret)
{
int i;
int j;
int k;
double temp;
int MaxNu;
n-=1;
for(k=1;k<=n-1;k++)
{
i=k-1;
MaxNu=k;
temp=Math.abs(Matrix[k][i]);
for(j=k+1;j<=n;j++)
{
if(Math.abs(Matrix[j][i])>temp)
{
MaxNu=j;
}
}
ret[0][0]=Matrix[MaxNu][i];
i=MaxNu;
if(ret[0][0]!=0)
{
if(i!=k)
{
for(j=k-1;j<=n;j++)
{
temp=Matrix[i][j];
Matrix[i][j]=Matrix[k][j];
Matrix[k][j]=temp;
}
for(j=0;j<=n;j++)
{
temp=Matrix[j][i];
Matrix[j][i]=Matrix[j][k];
Matrix[j][k]=temp;
}
}
for(i=k+1;i<=n;i++)
{
temp=Matrix[i][k-1]/ret[0][0];
Matrix[i][k-1]=0;
for(j=k;j<=n;j++)
{
Matrix[i][j]-=temp*Matrix[k][j];
}
for(j=0;j<=n;j++)
{
Matrix[j][k]+=temp*Matrix[j][i];
}
}
}
}
for(i=0;i<=n;i++)
{
for(j=0;j<=n;j++)
{
ret[i][j]=Matrix[i][j];
}
}
return n+1;
}
public static boolean EigenValue(double[][]Matrix,int n,int LoopNu,int Erro,double[][]Ret)
{
int i=Matrix.length;
if(i!=n)
{
return false;
}
int j;
int k;
int t;
int m;
double[][]A=new double[n][n];
double erro=Math.pow(0.1,