Java之矩阵求特征值

}

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, Erro);

double b;

double c;

double d;

double g;

double xy;

double p;

double q;

double r;

double x;

double s;

double e;

double f;

double z;

double y;

int loop1=LoopNu;

Hessenberg(Matrix,n,A);//将方阵K1转化成上Hessenberg矩阵A

m=n;

while(m!=0)

{

t=m-1;

while(t>0)

{

if(Math.abs(A[t][t-1])>erro*(Math.abs(A[t-1][t-1])+Math.abs(A[t][t])))

{

t-=1;

}

else

{

break;

}

}

if(t==m-1)

{

Ret[m-1][0]=A[m-1][m-1];

Ret[m-1][1]=0;

m-=1;

loop1=LoopNu;

}

else if(t==m-2)

{

b=-(A[m-1][m-1]+A[m-2][m-2]);

c=A[m-1][m-1]*A[m-2][m-2]-A[m-1][m-2]*A[m-2][m-1];

d=bb-4c;

y=Math.pow(Math.abs(d), 0.5);

if(d>0)

{

xy=1;

if(b<0)

{

xy=-1;

}

Ret[m-1][0]=-(b+xy*y)/2;

Ret[m-1][1]=0;

Ret[m-2][0]=c/Ret[m-1][0];

Ret[m-2][1]=0;

}

else

{

Ret[m-1][0]=-b/2;

Ret[m-2][0]=Ret[m-1][0];

Ret[m-1][1]=y/2;

Ret[m-2][1]=-Ret[m-1][1];

}

m-=2;

loop1=LoopNu;

}

else

{

if(loop1<1)

{

return false;

}

loop1-=1;

j=t+2;

while(j<m)

{

A[j][j-2]=0;

j+=1;

}

j=t+3;

while(j<m)

{

A[j][j-3]=0;

j+=1;

}

k=t;

while(k<m-1)

{

if(k!=t)

{

p=A[k][k-1];

q=A[k+1][k-1];

if(k!=m-2)

{

r=A[k+2][k-1];

}

else

{

r=0;

}

}

else

{

b=A[m-1][m-1];

c=A[m-2][m-2];

x=b+c;

y=c*b-A[m-2][m-1]*A[m-1][m-2];

p=A[t][t]*(A[t][t]-x)+A[t][t+1]*A[t+1][t]+y;

q=A[t+1][t]*(A[t][t]+A[t+1][t+1]-x);

r=A[t+1][t]*A[t+2][t+1];

}

if(p!=0||q!=0||r!=0)

{

if(p<0)

{

xy=-1;

}

else

{

xy=1;

}

s=xyMath.pow(pp+qq+rr, 0.5);

if(k!=t)

{

A[k][k-1]=-s;

}

e=-q/s;

f=-r/s;

x=-p/s;

y=-x-f*r/(p+s);

g=e*r/(p+s);

z=-x-e*q/(p+s);

for(j=k;j<=m-1;j++)

{

b=A[k][j];

c=A[k+1][j];

p=xb+ec;

q=eb+yc;

r=fb+gc;

if(k!=m-2)

{

b=A[k+2][j];

p+=f*b;

q+=g*b;

r+=z*b;

A[k+2][j]=r;

}

A[k+1][j]=q;

A[k][j]=p;

}

j=k+3;

if(j>=m-1)

{

j=m-1;

}

for(i=t;i<=j;i++)

{

b=A[i][k];

c=A[i][k+1];

p=xb+ec;

q=eb+yc;

r=fb+gc;

if(k!=m-2)

{

b=A[i][k+2];

p+=f*b;

q+=g*b;

r+=z*b;

A[i][k+2]=r;

}

A[i][k+1]=q;

A[i][k]=p;

}

}

k+=1;

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
知道该从何学起的朋友,同时减轻大家的负担。**

[外链图片转存中…(img-obnhjHJW-1715722406103)]

[外链图片转存中…(img-08LL9GC1-1715722406103)]

[外链图片转存中…(img-NsatAA5K-1715722406104)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值