LMMC
Lamina Mathematic core
载入中...
搜索中...
未找到
eigen_symmetric.c 文件参考

对称矩阵特征值分解(Householder 三对角化 + QL 迭代)实现。 更多...

#include <math.h>
#include <string.h>
#include "memory_bridge.h"
#include "internal.h"
#include "eigen_internal.h"
#include "lmmc/config.h"
#include "lmmc/dense.h"
#include "lmmc/eigen.h"
#include "lmmc/linear_algebra.h"
#include "eigen_general_internal.h"
eigen_symmetric.c 的引用(Include)关系图:

浏览该文件的源代码.

函数

lmmc_status_t lmmc_eigen_symmetric (const lmmc_mat_t *a, lmmc_eigen_sym_result_t *out_result)
 计算实对称矩阵的全部特征值与特征向量.
void lmmc_eigen_sym_result_destroy (lmmc_eigen_sym_result_t *result)
 释放 lmmc_eigen_symmetric 输出结果.

详细描述

对称矩阵特征值分解(Householder 三对角化 + QL 迭代)实现。

在文件 eigen_symmetric.c 中定义.

函数说明

◆ lmmc_eigen_symmetric()

lmmc_status_t lmmc_eigen_symmetric ( const lmmc_mat_t * a,
lmmc_eigen_sym_result_t * out_result )

计算实对称矩阵的全部特征值与特征向量.

算法:公共尺度归一化 -> 安全缩放的 Householder 三对角化 -> 隐式 QL 迭代.特征值按升序排列,第 i 个特征值对应 eigenvectors 的第 i 列.

参数
[in]anxn 对称矩阵(不被修改).
[out]out_result输出结果,调用方需配对调用 lmmc_eigen_sym_result_destroy 释放.
返回
副作用
  • 分配堆内存(eigenvalues 向量 + eigenvectors 矩阵 + 临时工作空间).
  • a 不被修改.

在文件 eigen_symmetric.c 第 334 行定义.

引用了 lmmc_mat_t::cols, lmmc_vec_t::data, lmmc_eigen_sym_result_t::eigenvalues, lmmc_eigen_sym_result_t::eigenvectors, lmmc_eigen_matrix_scale(), lmmc_eigen_sym_result_destroy(), lmmc_eigen_symmetric(), lmmc_mat_create(), lmmc_mat_destroy(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE, LMMC_STATUS_OK, lmmc_vec_create(), lmmc_vec_destroy(), MAT_ELEM , 以及 lmmc_mat_t::rows.

被这些函数引用 lmmc_eigen_symmetric().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_eigen_sym_result_destroy()

void lmmc_eigen_sym_result_destroy ( lmmc_eigen_sym_result_t * result)

释放 lmmc_eigen_symmetric 输出结果.

在文件 eigen_symmetric.c 第 377 行定义.

引用了 lmmc_eigen_sym_result_t::eigenvalues, lmmc_eigen_sym_result_t::eigenvectors, lmmc_eigen_sym_result_destroy(), lmmc_mat_destroy() , 以及 lmmc_vec_destroy().

被这些函数引用 lmmc_eigen_sym_result_destroy() , 以及 lmmc_eigen_symmetric().

函数调用图:
这是这个函数的调用关系图: