Java 如何在不使用外部包的情况下计算特征值

Java 如何在不使用外部包的情况下计算特征值,java,math,linear-algebra,eigenvalue,Java,Math,Linear Algebra,Eigenvalue,我正在尝试用java创建一个应用程序,它可以进行一些矩阵修改,比如计算inveres和行列式。 现在我还想包括应用程序的选项,用于计算矩阵的特征值和特征向量。 据我所知,计算特征值的唯一“可靠”方法是使用下列特征公式: det(A-λI)=0 其中A是nxn矩阵,λ是实数。 据我所知,在Java中使用代数没有简单的方法,也许根本没有。另外,我想自己编写这个程序,所以我不想使用像Jama或其他外部软件包 有人能给我解释一下如何用Java编程这个等式,或者告诉我另一种方法吗?你可以这样做的一种方法是

我正在尝试用java创建一个应用程序,它可以进行一些矩阵修改,比如计算inveres和行列式。 现在我还想包括应用程序的选项,用于计算矩阵的特征值和特征向量。 据我所知,计算特征值的唯一“可靠”方法是使用下列特征公式:

det(A-λI)=0

其中A是nxn矩阵,λ是实数。 据我所知,在Java中使用代数没有简单的方法,也许根本没有。另外,我想自己编写这个程序,所以我不想使用像
Jama
或其他外部软件包


有人能给我解释一下如何用Java编程这个等式,或者告诉我另一种方法吗?

你可以这样做的一种方法是看看Jama,看看它是如何计算的,并解释它。不要只是复制和粘贴:P我们都知道谁会吸引人。

找到特征值和特征向量有点棘手,而且有许多算法具有不同的正负性。我会提出一些非常好的建议,而且实施起来并不困难


首先,计算特征多项式,然后使用。然后你得到了特征值。然后你可以解一组方程,找到给定特征值的特征向量。

实现许多可用的方法之一。你必须自己实现矩阵运算。没有像Matlab那样的内置支持。实现数值分析工具是出了名的困难。如果这是一个课堂项目,或者结果的准确性并不重要,那么你可以自己做。否则,您最好使用库。这不是一个课堂项目,只是想提高我的编程技能。对于我的应用程序,我更喜欢使用我自己编写的程序来计算东西。数值算法的一个有用参考是“数值食谱”书籍。这本书可能有Java版本,但没关系,任何版本都可以满足您的需要。只需阅读算法并创建自己的实现。顺便说一句,我认为编写自己的实现确实是一种很好的学习方式。