我正在使用 MATLAB 的lsqnonlin
函数,并且试图通过选项设置用户定义的 Jacboian模式JacobPattern
。我为trust-region-reflective
要使用的算法设置了一个首选项,并且output
fromlsqnonlin
表明这确实是求解器使用的算法(使用该JacobPattern
选项所必需的)。
我发现的问题是,如果我JacobPattern
的太稀疏(例如,在 500x500 雅可比行列式中只有几行),求解器将忽略它,而是计算完整的雅可比行列式。
此行为未记录在案;任何人都可以进一步阐明它吗?我希望能够强制求解器使用 myJacobPattern
无论它多么荒谬,或者它的梯度有多浅。
更新:
我做了更多的实验,似乎只有在雅可比模式中有任何全零行时才会重新计算雅可比。任何数量的全零列都可以,只要每行至少有一个“1”。虽然这有助于避免问题,但问题仍然存在 --- 为什么求解器要求每个因变量具有关联的梯度?无论如何,我希望忽略用户定义的选项至少值得警告......