算法 9.2 展示了各个子程序之间的依赖关系。 我们根据四个大致定义的角色将这些子程序分组:
tangent)、线性移动(move)以及用于协变微分的连接项(connection)。这些子程序独立于目标函数组,但对几何化目标函数组至关重要。
grad)和Hessian(dgrad)。此外,还包括两个用于求逆协变Hessian的子程序(invdgrad_CG和invdgrad_MINRES)。该组提供了构建高层次算法组实现所需的原始工具。最后,检测(partition)和移除(nosym)块对角正交对称性的函数也位于该组。
Fline、dFline和gradline),并定义收敛准则。
最后,每个函数都从包含有关流形和计算信息的SGParameters全局结构中读取数据。在我们的示例中,我们使用了一个单独的全局FParameters来存储与计算F(Y)相关的信息。SGParameters的字段在sg_min中设置。