Fixed-Point Iteration

To obtain the solution with fully implicit friction, we can iteratively alternate between the nonlinear optimization with fixed , and given as and friction update until convergence (Algorithm 9.3.1).

Algorithm 9.3.1 (Fixed-Point Iteration for Fully-Implicit Friction).

If we denote \begin{equation} \begin{aligned} & f_m({ \lambda, T }) = \text{arg}\min_x E(x, { \lambda, T}) \ & f_u(x) = \text{FrictionUpdate}(x), \end{aligned} \end{equation} then Algorithm 9.3.1 is essentially a fixed-point iteration that finds the fixed-point of function \begin{equation} (f_m \cdot f_u) (x) \equiv f_m( f_u (x)). \end{equation}

Definition 9.3.1. is a fixed point of function if and only if \begin{equation} x = f(x). \end{equation} The fixed-point iterations find the fixed-point of a function starting from by iteratively updating the estimate \begin{equation} x^{i+1} \leftarrow f(x^i) \end{equation} until convergence.

Since the convergence of fixed-point iterations could only be achieved given an initial guess sufficiently close to the final solution, the convergence of Algorithm 9.3.1 analogously requires small time step sizes. However, note that each minimization with fixed (Algorithm 9.3.1 line 4) is still guaranteed to converge with arbitrarily large time step sizes.

Remark 9.3.1. In practice, semi-implicit friction with frame-rate time step sizes can already produce results with high visual quality. For higher accuracy, running 2 to 3 fixed-point iterations for friction is generally sufficient.