网站建设要花多少钱,毕业设计代做的网站,广西建设厅办事大厅网站,深圳设计网站公司网站文章目录计算方法代码实现计算方法 单纯矩阵normal matrix指的是符号ATAAATA^TAAA^TATAAAT的矩阵#xff0c;他们的特征值互异。此外#xff0c;单纯矩阵还有个特点#xff0c;他们的特征空间彼此正交。 对于单纯矩阵#xff0c;存在以下的谱定理Spectral theorem…
文章目录计算方法代码实现计算方法 单纯矩阵normal matrix指的是符号ATAAATA^TAAA^TATAAAT的矩阵他们的特征值互异。此外单纯矩阵还有个特点他们的特征空间彼此正交。 对于单纯矩阵存在以下的谱定理Spectral theorem 单纯矩阵可以分解为以下矩阵相加的形式 A∑i1nλiviviHA\sum_{i1}^n\lambda_iv_iv_i^H Ai1∑nλiviviH 公式中viv_ivi是特征值λi\lambda_iλi对应的单位特征向量。 把矩阵分解为这种形式就是谱分解Spectral Decompostion。所以谱分解挺容易的求出特征值和特征向量就行了。 以下是一个矩阵谱分解的例子 (3000020000−20000−1)3(1000000000000000)2(0000010000000000)−2(0000000000100000)−(0000000000000001)\begin{pmatrix}3 0 0 0\\ 0 2 0 0\\ 0 0 -2 0\\ 0 0 0 -1\\ \end{pmatrix}\\ 3 \begin{pmatrix}1 0 0 0\\ 0 0 0 0\\ 0 0 0 0\\ 0 0 0 0\\ \end{pmatrix}2 \begin{pmatrix}0 0 0 0\\ 0 1 0 0\\ 0 0 0 0\\ 0 0 0 0\\ \end{pmatrix} -2 \begin{pmatrix}0 0 0 0\\ 0 0 0 0\\ 0 0 1 0\\ 0 0 0 0\\ \end{pmatrix} -\begin{pmatrix}0 0 0 0\\ 0 0 0 0\\ 0 0 0 0\\ 0 0 0 1\\ \end{pmatrix} 3000020000−20000−13100000000000000020000010000000000−20000000000100000−0000000000000001
代码实现 特征值可以用海森堡法求解特征向量可以用齐次方程组求解的方法求得最后注意单位化就行了。以下是python代码 # 谱分解def spectral_decomposition(self):# 求特征值from com.youngthing.mathalgorithm.linearalgebra.hessenberg import Matrix as Meigen_values M(self.__vectors).eigen_values()spectral_matrices []for i, e in enumerate(eigen_values):# 单纯矩阵的几何重数为1eigen_vector self.eigen_vector(e)[0]vector_len Matrix.vector_len(eigen_vector)eigen_vector matrix_utils.mul_num(eigen_vector, 1 / vector_len)x Matrix([eigen_vector])spectral_matrices.append(x * x.transpose_matrix())return eigen_values, spectral_matrices