Java之矩阵求特征值(1)

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

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

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

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

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

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

感受:

其实我投简历的时候,都不太敢投递阿里。因为在阿里一面前已经过了字节的三次面试,投阿里的简历一直没被捞,所以以为简历就挂了。

特别感谢一面的面试官捞了我,给了我机会,同时也认可我的努力和态度。对比我的面经和其他大佬的面经,自己真的是运气好。别人8成实力,我可能8成运气。所以对我而言,我要继续加倍努力,弥补自己技术上的不足,以及与科班大佬们基础上的差距。希望自己能继续保持学习的热情,继续努力走下去。

也祝愿各位同学,都能找到自己心动的offer。

分享我在这次面试前所做的准备(刷题复习资料以及一些大佬们的学习笔记和学习路线),都已经整理成了电子文档

拿到字节跳动offer后,简历被阿里捞了起来,二面迎来了P9

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
候,都不太敢投递阿里。因为在阿里一面前已经过了字节的三次面试,投阿里的简历一直没被捞,所以以为简历就挂了。

特别感谢一面的面试官捞了我,给了我机会,同时也认可我的努力和态度。对比我的面经和其他大佬的面经,自己真的是运气好。别人8成实力,我可能8成运气。所以对我而言,我要继续加倍努力,弥补自己技术上的不足,以及与科班大佬们基础上的差距。希望自己能继续保持学习的热情,继续努力走下去。

也祝愿各位同学,都能找到自己心动的offer。

分享我在这次面试前所做的准备(刷题复习资料以及一些大佬们的学习笔记和学习路线),都已经整理成了电子文档

[外链图片转存中…(img-dwzJcIGI-1713128919491)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

版权声明:本文为博主作者:一条小尾鱼原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/m0_75232472/article/details/137762178

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2024年5月6日
下一篇 2024年5月6日

相关推荐