编辑:因此,当直接在脚本文件中而不是在命令行窗口中编码函数值的平方和时,我能够获得相同的 r 值。因此,手动执行可能存在舍入错误。谢谢。
我正在学习多变量求根,从几个变量中的一些简单的非线性方程组开始——求解 F = 0。我正在制作简单的方程,其中我知道一些明显的多变量根,我正在选择起点只是离根有点远,以便从 Matlab 的 fsolve 算法中获得解决方案。目前,我正在尝试学习如何解释算法的反馈,因为我的结果与 Matlab 的不同,这里是:
方程求解。
平方函数值的总和 r = 6.701089e-19 小于 sqrt(options.FunctionTolerance) = 1.000000e-03。r 梯度的相对范数 7.127651e-09 小于 options.OptimalityTolerance = 1.000000e-06。
优化指标
相对范数(grad r) = 7.13e-09
r = 6.70e-19选项
OptimalityTolerance = 1e-06(默认)
sqrt(FunctionTolerance) = 1.0e-03 (默认)
当我在命令行窗口中手动计算平方函数值的总和时,我得到的结果大约为 1e-7,与它们的 r 值 6.7e-19 相差无几。这个值 r 是多少?Matlab 也将其称为“平方函数值之和”。他们还给出了 grad r 的“相对规范”。我知道通常的欧几里得范数、p 范数、无穷范数和 Frobenius 范数,但我从未听说过相对范数。因此,我怀疑 Matlab 的定义是专有的而不是标准的——或者,命令行窗口中的手动计算可能存在舍入错误。