一个4×4的矩阵,有什么快速的方法求它的最大特征值 ,或者是它的模?

long_xz 2007-10-15 10:17:13
一个4×4的矩阵,有什么快速的方法求它的最大特征值 ,或者是它的模?
...全文
2534 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
arong1234 2007-10-24
  • 打赏
  • 举报
回复
2楼的方式应该不错,归一化也是好的,因为特征向量可以随意,归一化不会有害处,反而会有唯一解

原理在于Ax=λx,当重复计算x(n)=Ax(n-1)以后,最大的特征值就沉淀下来了,x(n)元素和x(n-1)元素最终收敛于绝对值最大的特征值,对应的向量就是对应的特征向量

另外一种方式是通过相抵变换,计算其Jordan标准型,这种方法可以得到所有特征值和特征矢量

方法是,计算det(A-λI)=0的根,这是一个四次方程,你可以通过newton迭代法得到所有的特征值
超级大笨狼 2007-10-23
  • 打赏
  • 举报
回复
定义都忘记了.
silwol 2007-10-22
  • 打赏
  • 举报
回复
这是我以前做AHP的时候用过的一个程序片断,由于需要所以把特征向量规一化了:

public class solution
{
private double v;
private double [] weight;
public solution(double v, double [] weight)
{
this.v = v;
this.weight = weight;
}
public double V
{
get
{
return this.v;
}
set
{
this.v = value;
}
}

public double [] Weight
{
get
{
return this.weight;
}
set
{
this.weight = value;
}
}
}

/// <summary>
/// 幂法求矩阵最大特征根和特征向量实现
/// </summary>
/// <param name="matrix"></param>
/// <returns></returns>
public static solution GetSolution(double [][] matrix)
{
double [] DL = new double[matrix.Length];
double [] tmp = new double[matrix.Length];
double [] tmp1 = new double[matrix.Length];
for (int i = 0; i < matrix.Length; i++)
tmp[i] = 1;
do
{
DL = tmp;
double max = Max(tmp);
for (int i = 0; i < tmp.Length; i++)
tmp1[i] = tmp[i] / max;
tmp = mMultiply(matrix, tmp1);
}while(Math.Abs(Max(tmp) - Max(DL)) > 0.000001);
DL = tmp;
double maxVL = Max(DL);
double sum = 0.0;
foreach (double d in DL)
sum += d;
for (int i = 0; i < DL.Length; i++)
DL[i] /= sum;
return new solution(maxVL, DL);
}



LZ要是不想得到规一化的特征向量,就不用DL = DL / sum了。
另:while(Math.Abs(Max(tmp) - Max(DL)) > 0.000001);
中的0.000001是预设的计算精度,理论上幂法求矩阵最大特征值是可以得到任意给定精度的值的。
原算法中好像应该是采用的求模运算将中间向量规一化的,但考虑到计算量问题,我就用向量中的最大值代替了,我所看过的资料中说这是可以的。
silwol 2007-10-22
  • 打赏
  • 举报
回复
幂法,方根法,和积法都可以,还可以求出对应的特征向量。
原来写的程序找不到了,LZ可以GOOGLE下“幂法求矩阵最大特征值”。
学习人工智能,机器学习都离不开数学基础和编程知识。无论你是数据科学的初学者还是已经从事人工智能开发的有经验人员,这门课都适合于你。为什么这么说?首先人工智能和机器学习本质上就是算法,而算法就是数学及统计学以及编程的结合。当前市场上有许多开源的软件包如SKLEARN确实可以帮助没经验的或缺乏数学或算法基础的人实现机器学习型及预测,但这些工具无法使你真正懂得算法的本质或来源,或者无法使你在不同场合下灵活运用及改进算法。记住,在实际工作中找到适合应用场景的解决方案是最难但是最重要的。但这离不开数学基础和算法理解。比如,线性回归是一类普遍的机器学习算法,所有的机器学习软件都有现成的方法实现型,但如果在训练数据中加入几条新数据,那么新建立的型和原来的型有和联系或不同?再比如,为什么深度神经网络中的Sigmoid函数一般只用到输出层?神经网络的向后传播理论如何与泰勒展开和复合函数的偏导数联系在一起?人工智能中推荐系统和文字向量如何与矩阵的奇异分解以及特征向量联系?型中对标签进行数据变换如何影响预测值?所有这些问题的答案,你都可以从本课中找到线索。本课系统地讲述了有关人工智能,机器学习背后的数学知识。特别指出,微积分和代数知识是本课的核心。统计学基础被安排在另外的课程中。除此之外,我在每一章节或主要知识点后都安排了各类程序以解释和回顾所学到的东西。最后要提到的是,这不是一门工程项目实践课。但我会另外专门安排有关人工智能,机器学习的实践课程

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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