如何求解特征值?

canisminor 2002-12-01 09:36:41
我用特征脸的方法作一个人脸识别的东东,需要求一个19*19的对称矩阵的特征值,请问各位大侠,有什么通用算法来求解这样的特征值?
小弟万分感谢!!!!
...全文
318 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
司马青衫依旧 2002-12-18
  • 打赏
  • 举报
回复
《矩阵理论》之类的书里都有。
你还可以改编一下Matlab中的源代码。
vcshox 2002-12-17
  • 打赏
  • 举报
回复
可以利用Jacobi方法:平面旋转矩阵所构成的正交相似变化把对称矩阵化为对角型。(C算法如下)
a:二维数组(n*n),只用到对角线以上的元素
n:阶数
d:输出参数,存放特征值
v:输出参数,存放特征向量

JACOBI(int n,double **a,double *d,double **v)
{
int p,q,i,j;
double sm,c,s,t,h,g,tau,theta,tresh,*b,*z;
b=(double *)calloc(n,sizeof(double));
if(b==NULL) ...
z=(double *)calloc(n,sizeof(double));
if(z==NULL) ...

for(p=1;p<=n;p++)
for(q=1;q<=n;q++)
{
if(p==q) v[p-1][q-1]=1.0;
else v[p-1][q-1]=0.0;
}
for(p=1;p<=n;p++)
{
b[p-1]=d[p-1]=a[p-1][p-1];
z[p-1]=0.0;
}
for(i=1;i<=50;i++)
{
sm=0.0;
for(p=1;p<=n-1;p++)
for(q=p+1;q<=n;q++)
sm=sm+fabs(a[p-1][q-1]);
if(sm==0.0)
{
free(b);
free(z);
return(1);
}
if(i<4) tresh=0.2*sm/(n*n);
else tresh=0.0;
for(p=1;p<n;p++)
for(q=p+1;q<=n;q++)
{
g=100*fabs(a[p-1][q-1]);
if(i>4&&(fabs(d[p-1])+g)==fabs(d[p-1])
&&(fabs(d[q-1]+g)==fabs(d[q-1]))
a[p-1][q-1]=0.0;
else
{
if(fabs(a[p-1][q-1])>tresh)
{
h=d[q-1]-d[p-1];
if((fabs(h)+g)==fabs(h)) t=a[p-1][q-1]/h;
else
{
theta=0.5*h/a[p-1][q-1];
t=1/(fabs(theta)+sqrt(1+theta*theta));
if(theta<0) t=-t;
}
c=1/sqrt(1+t*t);
s=t*c;
tau=s/(1+c);
h=t*a[p-1][q-1];
z[p-1]-=h;d[p-1]-=h;
z[q-1]+=h;d[q-1]+=h;
a[p-1][q-1]=0.0;
for(j=i;j<p;j++)
{
g=a[j-1][p-1];
h=a[j-1][q-1];
a[j-1][p-1]=g-s*(h+g*tau);
a[j-1][q-1]=h+s*(g-h*tau);
}
for(j=p+1;j<q;j++)
{
g=a[p-1][j-1];
h=a[j-1][q-1];
a[p-1][j-1]=g-s*(h+g*tau);
a[j-1][q-1]=h+s*(g-h*tau);
}
for(j=q+1;j<=n;j++)
{
g=a[p-1][j-1];
h=a[q-1][j-1];
a[p-1][j-1]=g-s*(h+g*tau);
a[q-1][j-1]=h+s*(g-h*tau);
}
for(j=1;j<=n;j++)
{
g=v[j-1][p-1];
h=v[j-1][q-1];
v[j-1][p-1]=g-s*(h+g*tau);
v[j-1][q-1]=h+s*(g-h*tau);
}
}
}
}
for(p=1;p<=n;p++)
{
d[p-1]=b[p-1]=b[p-1]+z[p-1];
z[p-1]=0;
}
}
free(b);
free(z);
return(1);
}
vfe 2002-12-15
  • 打赏
  • 举报
回复
用google搜救行了
otuotu 2002-12-15
  • 打赏
  • 举报
回复
帮你up一下
foxmail 2002-12-15
  • 打赏
  • 举报
回复
<计算方法》,《数值计算》上面有算法吧
xuefl66 2002-12-15
  • 打赏
  • 举报
回复
see

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧