求解方阵的特征分解对于方阵. (规范)
计算方阵特征值和特征向量的子程序接口。
此接口提供了计算一般方阵特征值以及可选特征向量的方法。支持的数据类型包括 real
和 complex
,并且不对矩阵结构做任何假设。用户可以请求返回左特征向量、右特征向量或两者。它们作为与 A
大小相同的方阵的列返回。必须由用户预先分配特征值 lambda
和特征向量矩阵的空间。
注意
解决方案基于 LAPACK 的一般特征值问题求解器 *GEEV
。
注意
BLAS/LAPACK 后端目前不支持扩展精度 (xdp
)。
矩阵 A 的特征分解,返回特征值数组 lambda
,以及可选的右或左特征向量。
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
complex(kind=sp), | intent(inout), | target | :: | a(:,:) |
输入矩阵 A[m,n] |
|
complex(kind=sp), | intent(out) | :: | lambda(:) |
特征值数组 |
||
complex(kind=sp), | intent(out), | optional, | target | :: | right(:,:) |
RIGHT 的列包含 A 的右特征向量 |
complex(kind=sp), | intent(out), | optional, | target | :: | left(:,:) |
LEFT 的列包含 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] |
|
complex(kind=dp), | intent(out) | :: | lambda(:) |
特征值数组 |
||
complex(kind=dp), | intent(out), | optional, | target | :: | right(:,:) |
RIGHT 的列包含 A 的右特征向量 |
complex(kind=dp), | intent(out), | optional, | target | :: | left(:,:) |
LEFT 的列包含 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] |
|
complex(kind=sp), | intent(out) | :: | lambda(:) |
特征值数组 |
||
complex(kind=sp), | intent(out), | optional, | target | :: | right(:,:) |
RIGHT 的列包含 A 的右特征向量 |
complex(kind=sp), | intent(out), | optional, | target | :: | left(:,:) |
LEFT 的列包含 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] |
|
complex(kind=dp), | intent(out) | :: | lambda(:) |
特征值数组 |
||
complex(kind=dp), | intent(out), | optional, | target | :: | right(:,:) |
RIGHT 的列包含 A 的右特征向量 |
complex(kind=dp), | intent(out), | optional, | target | :: | left(:,:) |
LEFT 的列包含 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(:) |
实特征值数组 |
||
complex(kind=dp), | intent(out), | optional, | target | :: | right(:,:) |
RIGHT 的列包含 A 的右特征向量 |
complex(kind=dp), | intent(out), | optional, | target | :: | left(:,:) |
LEFT 的列包含 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(:) |
实特征值数组 |
||
complex(kind=sp), | intent(out), | optional, | target | :: | right(:,:) |
RIGHT 的列包含 A 的右特征向量 |
complex(kind=sp), | intent(out), | optional, | target | :: | left(:,:) |
LEFT 的列包含 A 的左特征向量 |
logical(kind=lk), | intent(in), | optional | :: | overwrite_a |
[可选] A 数据可以被覆盖和销毁吗? |
|
type(linalg_state_type), | intent(out), | optional | :: | err |
[可选] 状态返回标志。如果未请求错误,代码将停止 |