求解特征分解对于实对称或复厄米特方阵。 (规范)
计算实对称或复厄米特方阵的特征值和特征向量的子程序接口。
此接口提供计算实对称或复厄米特方阵的特征值,以及可选的特征向量的方法。支持的数据类型包括 real
和 complex
。矩阵必须是对称的(如果为 real
)或厄米特的(如果为 complex
)。仅访问矩阵的下半部分或上半部分,用户可以使用可选的 upper_a
标志选择使用哪一部分(默认值:使用下半部分)。向量是正交的,并且可以作为具有与 A
相同类型和大小的可选矩阵 vectors
的列返回。必须由用户提供特征值 lambda
和特征向量矩阵的预分配空间。
注意
解决方案基于 LAPACK 的特征问题求解器 *SYEV
/*HEEV
。
注意
BLAS/LAPACK 后端目前不支持扩展精度 (xdp
)。
实对称或复厄米特矩阵 A 的特征分解,返回一个包含特征值的数组 lambda
,以及可选的右或左特征向量。
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
complex(kind=sp), | intent(inout), | target | :: | a(:,:) |
输入矩阵 A[m,n] |
|
real(kind=sp), | intent(out) | :: | lambda(:) |
特征值数组 |
||
complex(kind=sp), | intent(out), | optional, | target | :: | vectors(:,:) |
vectors 的列包含 A 的正交特征向量 |
logical(kind=lk), | intent(in), | optional | :: | upper_a |
[可选] 是否应使用 A 的上/下半部分?默认值:下半部分 |
|
logical(kind=lk), | intent(in), | optional | :: | overwrite_a |
[可选] 可以覆盖和销毁 A 数据吗? |
|
type(linalg_state_type), | intent(out), | optional | :: | err |
[可选] 状态返回标志。如果未请求错误,代码将停止 |
实对称或复厄米特矩阵 A 的特征分解,返回一个包含特征值的数组 lambda
,以及可选的右或左特征向量。
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
real(kind=dp), | intent(inout), | target | :: | a(:,:) |
输入矩阵 A[m,n] |
|
real(kind=dp), | intent(out) | :: | lambda(:) |
特征值数组 |
||
real(kind=dp), | intent(out), | optional, | target | :: | vectors(:,:) |
vectors 的列包含 A 的正交特征向量 |
logical(kind=lk), | intent(in), | optional | :: | upper_a |
[可选] 是否应使用 A 的上/下半部分?默认值:下半部分 |
|
logical(kind=lk), | intent(in), | optional | :: | overwrite_a |
[可选] 可以覆盖和销毁 A 数据吗? |
|
type(linalg_state_type), | intent(out), | optional | :: | err |
[可选] 状态返回标志。如果未请求错误,代码将停止 |
实对称或复厄米特矩阵 A 的特征分解,返回一个包含特征值的数组 lambda
,以及可选的右或左特征向量。
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
real(kind=sp), | intent(inout), | target | :: | a(:,:) |
输入矩阵 A[m,n] |
|
real(kind=sp), | intent(out) | :: | lambda(:) |
特征值数组 |
||
real(kind=sp), | intent(out), | optional, | target | :: | vectors(:,:) |
vectors 的列包含 A 的正交特征向量 |
logical(kind=lk), | intent(in), | optional | :: | upper_a |
[可选] 是否应使用 A 的上/下半部分?默认值:下半部分 |
|
logical(kind=lk), | intent(in), | optional | :: | overwrite_a |
[可选] 可以覆盖和销毁 A 数据吗? |
|
type(linalg_state_type), | intent(out), | optional | :: | err |
[可选] 状态返回标志。如果未请求错误,代码将停止 |
实对称或复厄米特矩阵 A 的特征分解,返回一个包含特征值的数组 lambda
,以及可选的右或左特征向量。
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
complex(kind=dp), | intent(inout), | target | :: | a(:,:) |
输入矩阵 A[m,n] |
|
real(kind=dp), | intent(out) | :: | lambda(:) |
特征值数组 |
||
complex(kind=dp), | intent(out), | optional, | target | :: | vectors(:,:) |
vectors 的列包含 A 的正交特征向量 |
logical(kind=lk), | intent(in), | optional | :: | upper_a |
[可选] 是否应使用 A 的上/下半部分?默认值:下半部分 |
|
logical(kind=lk), | intent(in), | optional | :: | overwrite_a |
[可选] 可以覆盖和销毁 A 数据吗? |
|
type(linalg_state_type), | intent(out), | optional | :: | err |
[可选] 状态返回标志。如果未请求错误,代码将停止 |