中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

KmlMgSolverApply

进行求解回代。

接口定义

C Interface:

KmlMgStatus KmlMgSolverApply(KmlMgSolverH solver, KmlMgMatrixH B, KmlMgMatrixH X, KmlMgApplyOptions* options);

参数

参数名

类型

描述

输入/输出

solver

KmlMgSolverH

由KmlMgSolverCreate创建的求解器句柄

输入/输出

B

KmlMgMatrix

由KmlMgMatrixCreate函数创建的矩阵句柄,表示右端向量

输入

X

KmlMgMatrix

由KmlMgMatrixCreate函数创建的矩阵句柄,表示解空间,初始输入值可作为初次迭代初值

输入/输出

options

KmlMgApplyOptions&

回代配置信息

输入

返回值

返回值

类型

描述

KML_MG_OK

int

正常执行

KML_MG_ERR_INVALID_PARAM

int

参数无效

KML_MG_ERR_UNSUPPORTED

int

暂不支持的功能

KML_MG_ERR_NO_MEMORY

int

分配内存失败

KML_MG_ERR_EXCEEDS_LIMIT

int

超过设置限制

KML_MG_ERR_INCOMPATIBLE

int

版本不兼容

KML_MG_ERR_NO_REQUIRED_FIELD

int

没设置必填字段

KML_MG_ERR_UNKNOWN_TYPE

int

未知的类型

KML_MG_ERR_THIRD_PART

int

内部调用第三方错误

KML_MG_ERR_INCONSISTENT

int

传递信息不一致

KML_MG_ERR_UNEXPECTED_CALL_ORDER

int

预期之外的调用顺序

KML_MG_ERR_MATRIX_VALUE_IS_NULL

int

矩阵值为空

KML_MG_ERR_NO_RESOURCE

int

资源未就绪

结构体说明

KmlMgApplyOptions

字段名

字段类型

字段说明

fieldMask

uint64_t

配置生效的字段掩码。非0的位代表配置对应字段指定的值,0的位代表使用默认值,可配置的掩码位请参见具体字段的说明。

useZeroGuess

bool

是否以X=0为初值开始迭代,若为true则迭代初值为0,若为false则以参数X传入时的值为初值。

掩码位:KML_MG_APPLY_OPTIONS_USE_ZERO_GUESS

toleranceType

KmlMgToleranceType

迭代收敛的阈值类型,有如下值

  • KML_MG_TOLERANCE_ABS
  • KML_MG_TOLERANCE_REL

掩码位:KML_MG_APPLY_OPTIONS_TOLERANCE_TYPE

tolerance

double

迭代收敛的阈值,小于该阈值则停止迭代

掩码位:KML_MG_APPLY_OPTIONS_TOLERANCE

maxIteration

int64_t

最大迭代次数,迭代次数达到阈值则停止迭代

掩码位:KML_MG_APPLY_OPTIONS_MAX_ITERATION

restartStep

int64_t

重启步数,仅当KmlMgSolverOptions.ksp为KML_MG_SOLVER_GCR或KML_MG_SOLVER_GMRES时生效。

掩码位:KML_MG_APPLY_OPTIONS_RESTART_STEP

solveResi

bool

是否转化成求解残差方程,精度优化选项。在给定初值X0时,若为true,则以将方程A*X=B转化为A*(X-X0)=B-A*X0。当X0非常接近真实解时仅当KmlMgSolverOptions.ksp为KML_MG_SOLVER_G

掩码位:KML_MG_APPLY_OPTIONS_SOLVE_RESI

依赖

#include "mg.h"

示例代码请参见示例