KmlDssSolve
对矩阵做回代求解,需先使用KmlDssFactorize进行分解。
接口定义
C Interface:
int KmlDssSolve(KmlDssSolver *solver, const KmlSolverMatrix *b, KmlSolverMatrix *x, const KmlDssSolveOption *option);
参数
参数名 |
类型 |
描述 |
输入/输出 |
---|---|---|---|
solver |
KmlDssSolver * |
由KmlDssInit创建的求解器句柄。 |
输入 |
b |
KmlSolverMatrix * |
右端向量结构体指针,本质是矩阵,由KmlSolverMatrixCreate函数创建,不可为空指针。 |
输入 |
x |
KmlSolverMatrix * |
解空间结构体指针,本质是矩阵,由KmlSolverMatrixCreate函数创建,输入不可为空指针,输出为包含求解出的x的数值数组。 |
输出 |
option |
KmlDssSolveOption * |
分解阶段配置选项,不可为空指针,具体内容如表1所示。 |
输入 |
字段名 |
类型 |
描述 |
---|---|---|
fieldMask |
uint64_t |
配置生效的字段掩码。非0的位代表配置对应字段指定的值,0的位代表使用默认值,可配置的掩码位见具体字段的说明。 |
stage |
KmlDssSolveStage |
设置回代阶段,有如下值。
掩码位:KMLDSS_SOLVE_OPTION_SOLVE_STAGE |
refineMethod |
KmlDssRefineMethod |
迭代修正方法,有如下值。
掩码位:KMLDSS_SOLVE_OPTION_REFINE_METHOD |
refineMaxSteps |
int32_t |
最大迭代修正步数,有如下值。
掩码位:KMLDSS_SOLVE_OPTION_REFINE_MAX_STEP |
refineTolerance |
double |
迭代修正残差阈值,该字段有如下值。
掩码位:KMLDSS_SOLVE_OPTION_REFINE_TOLERANCE 迭代满足如下任一条件则立即结束迭代修正。 |
返回值
返回值 |
类型 |
描述 |
---|---|---|
KMLSS_NO_ERROR |
int |
正常执行。 |
KMLSS_INTERNAL_ERROR |
int |
内部错误。 |
KMLSS_NULL_ARGUMENT |
int |
solver,b,x,option存在空参数。 |
依赖
#include "kml_dss.h"