Libreoffice Iterative Calculation is not automatically converging

I have a circular set of equations with a corrector function built in to converge on a solution. When I change the input value, the dependent cells begin to calculate but stop prematurely. Should I reduce the minimum change value to a smaller value, rather than Calc continuing to calculate, I get an error 523 (not converged in the iterations given). But I have verified that the solution converges in about 20 steps, and the iteration limit is at the upper value of 32767. I can't seem to find a set of compatible convergence criteria that allow the solution to converge once from a single input.

To reproduce:

Set cells:

A1 to a value >1
B1=A1*C1^2-(1-D1)/20
C1=SQRT(B1/A1)
D1=C1^2*TAN(1/B1)

The intended operation has A1 as the input value. B1 and C1 are the sought parameters, and D1 is the validation value from which the correction in B1 comes. When converged, D1 equals 1.

I am open to simpler solutions to arriving at B1 and C1 satisfying the constraint of D1, and am aware that scripting and solver both exist, but am looking for an in-formula solution that arrives the instant A1 changes.

Further Information:

The single solution sought falls between 0 and pi/2, so the first positive solution. Repeated pressing of F9 forces the solution to converge so I'm confident in the method. The corrector does have opportunities for instability near the endpoints, but the problem I'm trying to solve doesn't even work for the well behaved solutions.


Solution 1:

It's not clear what problem you're trying to solve. Your equation for D1 establishes a relationship between C1 and B1; there are an infinitude of solutions satisfying D1==1, namely any C1 and a B1=1/(ATAN(1/C1^2)). The starting value in A1 will change which of these will result (if any) from your iteration. The values resulting from the iteration will also depend on the initial values in B1 and C1: if you are merely changing A1 without initializing B1 and C1, the solution if any will be different and the iteration will be different (and may not converge).