Here, we consider the maximum value of lambda which is used during iteration to solve diffusion equation using forward / explicit Euler method, in order to have the solution converges.
Diffusion equation is expressed as below differential equation (with respect to position and time). The function u is a function of position and time, u = f (n,t). This differential equation implies that u is transformed gradually by the Laplacian of u, i.e., L(u). This kind of situation occurs for example during polygon smoothing.
du / dt = \lambda * L(u)
Discreting the diffusion equation in position, then the 1D form will become:
du / dt = \lambda * { (u_n+1 - u_n) - (u_n - u_n-1) } = \lambda * ( u_n+1 + u_n-1 - 2 * u_n )
Again, descreting in time, i.e., generating the difference equation:
(u_n^t+1 - u_n^t) / \delta t = \lambda * ( u_n+1^t + u_n-1^t - 2 * u_n^t )
Put \delta t to 1 and collecting same term:
u_n^t+1 = (1 - 2 * \lambda) * u_n^t + \lambda * ( u_n+1^t + u_n-1^t )
The above update equation of u_n requires that 0 < (1 - 2 * \lambda) < 1. So, for 1D, 0 < \lambda < 1/2 is necessary.
For 2D, the Laplacian is (4-neighbors):
L(u) = u_n+1,n + u_n-1,n + u_n,n+1 + u_n,n-1 - 4 * u_n,n
so, 0 < \lambda < 1/4.
For 3D, the Laplacian is 6-neighbors, and we get 0 < \lambda < 1/6.
For smoothing polygon mesh, the Laplacian is then calculated using the 1-ring neighbor. As such, the \lambda needs to:
0 < \lambda < 1 / (#1-ring-neighbor)
where #1-ring-neighbor is the number of 1-ring neighbor.