原始问题
我有一组非线性方程,我需要找到我的解向量的子集被限制为大于或等于 0 的根。我已经实现了 Newton-Raphson 算法,但我发现其中一些我需要保持积极的数量正在变为负数。我熟悉使用拉格朗日乘数在优化问题中强制执行约束,但我不确定如何为求根做同样的事情。
我突然想到,我可以将必须为正的变量映射到对数空间(即求解而不是) 但由于零是一个重要的情况,我担心这可能会导致数值问题。
从先前的答案看来,内点法可能是合适的,但它会涉及修改我的求解器,而不仅仅是我想避免的残差方程。
进一步说明
这些方程是由包含不可恢复变形的材料模型产生的一系列非线性方程()。通常实现这一点的方式是通过内部状态变量() 由一些演化方程控制,这些方程由一些演化速率 ()。
演化方程采用以下形式:
受限于一些额外的起始条件(屈服函数):
在哪里是总变形,它是一个 <= 0 的函数。该问题符合 Kuhn-Tucker 条件,可以概括为:
暗示进化率为零,如果和如果.
我的未知向量是这样的:
我的残差是这样的:
标记的值在哪里是进化方程的结果和是麦考利括号,定义为:
我包括了麦考利项,否则,F > 0 的情况和将被接受这是不正确的。我尝试在残差计算中使用 if 语句,但这会导致其他问题,而且这似乎表现得更好。