求解 接口

公共接口求解

求解线性系统对于未知向量来自方阵. (规范)

概要

用于求解来自一般矩阵的线性系统的接口。

描述

此接口提供了计算线性矩阵系统解的方法。支持的数据类型包括realcomplex。对矩阵结构没有假设。该函数可以同时求解一个(来自一维右手边向量b(:))或多个(来自二维右手边向量b(:,:))系统。

注意

该解决方案基于 LAPACK 的通用基于 LU 分解的求解器*GESV


函数

私有纯模块函数 stdlib_linalg_c_pure_solve_many(a, b) 结果(x)

参数

类型 意图可选 属性 名称
complex(kind=sp), intent(in) :: a(:,:)

输入矩阵 a[n,n]

complex(kind=sp), intent(in) :: b(:,:)

右手边向量或数组,b[n] 或 b[n,nrhs]

返回值 complex(kind=sp), allocatable, target, (:,:)

结果数组/矩阵 x[n] 或 x[n,nrhs]

私有纯模块函数 stdlib_linalg_c_pure_solve_one(a, b) 结果(x)

参数

类型 意图可选 属性 名称
complex(kind=sp), intent(in) :: a(:,:)

输入矩阵 a[n,n]

complex(kind=sp), intent(in) :: b(:)

右手边向量或数组,b[n] 或 b[n,nrhs]

返回值 complex(kind=sp), allocatable, target, (:)

结果数组/矩阵 x[n] 或 x[n,nrhs]

私有模块函数 stdlib_linalg_c_solve_many(a, b, overwrite_a, err) 结果(x)

参数

类型 意图可选 属性 名称
complex(kind=sp), intent(inout), target :: a(:,:)

输入矩阵 a[n,n]

complex(kind=sp), intent(in) :: b(:,:)

右手边向量或数组,b[n] 或 b[n,nrhs]

logical(kind=lk), intent(in), optional :: overwrite_a

[可选] A 数据可以被覆盖和销毁吗?

type(linalg_state_type), intent(out) :: err

[可选] 状态返回值。如果在错误发生时未请求,代码将停止

返回值 complex(kind=sp), allocatable, target, (:,:)

结果数组/矩阵 x[n] 或 x[n,nrhs]

私有模块函数 stdlib_linalg_c_solve_one(a, b, overwrite_a, err) 结果(x)

参数

类型 意图可选 属性 名称
complex(kind=sp), intent(inout), target :: a(:,:)

输入矩阵 a[n,n]

complex(kind=sp), intent(in) :: b(:)

右手边向量或数组,b[n] 或 b[n,nrhs]

logical(kind=lk), intent(in), optional :: overwrite_a

[可选] A 数据可以被覆盖和销毁吗?

type(linalg_state_type), intent(out) :: err

[可选] 状态返回值。如果在错误发生时未请求,代码将停止

返回值 complex(kind=sp), allocatable, target, (:)

结果数组/矩阵 x[n] 或 x[n,nrhs]

私有纯模块函数 stdlib_linalg_d_pure_solve_many(a, b) 结果(x)

参数

类型 意图可选 属性 名称
real(kind=dp), intent(in) :: a(:,:)

输入矩阵 a[n,n]

real(kind=dp), intent(in) :: b(:,:)

右手边向量或数组,b[n] 或 b[n,nrhs]

返回值 real(kind=dp), allocatable, target, (:,:)

结果数组/矩阵 x[n] 或 x[n,nrhs]

私有纯模块函数 stdlib_linalg_d_pure_solve_one(a, b) 结果(x)

参数

类型 意图可选 属性 名称
real(kind=dp), intent(in) :: a(:,:)

输入矩阵 a[n,n]

real(kind=dp), intent(in) :: b(:)

右手边向量或数组,b[n] 或 b[n,nrhs]

返回值 real(kind=dp), allocatable, target, (:)

结果数组/矩阵 x[n] 或 x[n,nrhs]

私有模块函数 stdlib_linalg_d_solve_many(a, b, overwrite_a, err) 结果(x)

参数

类型 意图可选 属性 名称
real(kind=dp), intent(inout), target :: a(:,:)

输入矩阵 a[n,n]

real(kind=dp), intent(in) :: b(:,:)

右手边向量或数组,b[n] 或 b[n,nrhs]

logical(kind=lk), intent(in), optional :: overwrite_a

[可选] A 数据可以被覆盖和销毁吗?

type(linalg_state_type), intent(out) :: err

[可选] 状态返回值。如果在错误发生时未请求,代码将停止

返回值 real(kind=dp), allocatable, target, (:,:)

结果数组/矩阵 x[n] 或 x[n,nrhs]

私有模块函数 stdlib_linalg_d_solve_one(a, b, overwrite_a, err) 结果(x)

参数

类型 意图可选 属性 名称
real(kind=dp), intent(inout), target :: a(:,:)

输入矩阵 a[n,n]

real(kind=dp), intent(in) :: b(:)

右手边向量或数组,b[n] 或 b[n,nrhs]

logical(kind=lk), intent(in), optional :: overwrite_a

[可选] A 数据可以被覆盖和销毁吗?

type(linalg_state_type), intent(out) :: err

[可选] 状态返回值。如果在错误发生时未请求,代码将停止

返回值 real(kind=dp), allocatable, target, (:)

结果数组/矩阵 x[n] 或 x[n,nrhs]

私有纯模块函数 stdlib_linalg_s_pure_solve_many(a, b) 结果(x)

参数

类型 意图可选 属性 名称
real(kind=sp), intent(in) :: a(:,:)

输入矩阵 a[n,n]

real(kind=sp), intent(in) :: b(:,:)

右手边向量或数组,b[n] 或 b[n,nrhs]

返回值 real(kind=sp), allocatable, target, (:,:)

结果数组/矩阵 x[n] 或 x[n,nrhs]

私有纯模块函数 stdlib_linalg_s_pure_solve_one(a, b) 结果(x)

参数

类型 意图可选 属性 名称
real(kind=sp), intent(in) :: a(:,:)

输入矩阵 a[n,n]

real(kind=sp), intent(in) :: b(:)

右手边向量或数组,b[n] 或 b[n,nrhs]

返回值 real(kind=sp), allocatable, target, (:)

结果数组/矩阵 x[n] 或 x[n,nrhs]

私有模块函数 stdlib_linalg_s_solve_many(a, b, overwrite_a, err) 结果(x)

参数

类型 意图可选 属性 名称
real(kind=sp), intent(inout), target :: a(:,:)

输入矩阵 a[n,n]

real(kind=sp), intent(in) :: b(:,:)

右手边向量或数组,b[n] 或 b[n,nrhs]

logical(kind=lk), intent(in), optional :: overwrite_a

[可选] A 数据可以被覆盖和销毁吗?

type(linalg_state_type), intent(out) :: err

[可选] 状态返回值。如果在错误发生时未请求,代码将停止

返回值 real(kind=sp), allocatable, target, (:,:)

结果数组/矩阵 x[n] 或 x[n,nrhs]

私有模块函数 stdlib_linalg_s_solve_one(a, b, overwrite_a, err) 结果(x)

参数

类型 意图可选 属性 名称
real(kind=sp), intent(inout), target :: a(:,:)

输入矩阵 a[n,n]

real(kind=sp), intent(in) :: b(:)

右手边向量或数组,b[n] 或 b[n,nrhs]

logical(kind=lk), intent(in), optional :: overwrite_a

[可选] A 数据可以被覆盖和销毁吗?

type(linalg_state_type), intent(out) :: err

[可选] 状态返回值。如果在错误发生时未请求,代码将停止

返回值 real(kind=sp), allocatable, target, (:)

结果数组/矩阵 x[n] 或 x[n,nrhs]

私有纯模块函数 stdlib_linalg_z_pure_solve_many(a, b) 结果(x)

参数

类型 意图可选 属性 名称
complex(kind=dp), intent(in) :: a(:,:)

输入矩阵 a[n,n]

complex(kind=dp), intent(in) :: b(:,:)

右手边向量或数组,b[n] 或 b[n,nrhs]

返回值 complex(kind=dp), allocatable, target, (:,:)

结果数组/矩阵 x[n] 或 x[n,nrhs]

私有纯模块函数 stdlib_linalg_z_pure_solve_one(a, b) 结果(x)

参数

类型 意图可选 属性 名称
complex(kind=dp), intent(in) :: a(:,:)

输入矩阵 a[n,n]

complex(kind=dp), intent(in) :: b(:)

右手边向量或数组,b[n] 或 b[n,nrhs]

返回值 complex(kind=dp), allocatable, target, (:)

结果数组/矩阵 x[n] 或 x[n,nrhs]

私有模块函数 stdlib_linalg_z_solve_many(a, b, overwrite_a, err) 结果(x)

参数

类型 意图可选 属性 名称
complex(kind=dp), intent(inout), target :: a(:,:)

输入矩阵 a[n,n]

complex(kind=dp), intent(in) :: b(:,:)

右手边向量或数组,b[n] 或 b[n,nrhs]

logical(kind=lk), intent(in), optional :: overwrite_a

[可选] A 数据可以被覆盖和销毁吗?

type(linalg_state_type), intent(out) :: err

[可选] 状态返回值。如果在错误发生时未请求,代码将停止

返回值 complex(kind=dp), allocatable, target, (:,:)

结果数组/矩阵 x[n] 或 x[n,nrhs]

私有模块函数 stdlib_linalg_z_solve_one(a, b, overwrite_a, err) 结果(x)

参数

类型 意图可选 属性 名称
complex(kind=dp), intent(inout), target :: a(:,:)

输入矩阵 a[n,n]

complex(kind=dp), intent(in) :: b(:)

右手边向量或数组,b[n] 或 b[n,nrhs]

logical(kind=lk), intent(in), optional :: overwrite_a

[可选] A 数据可以被覆盖和销毁吗?

type(linalg_state_type), intent(out) :: err

[可选] 状态返回值。如果在错误发生时未请求,代码将停止

返回值 complex(kind=dp), allocatable, target, (:)

结果数组/矩阵 x[n] 或 x[n,nrhs]