## Solving an implicit equation

You use the Newton Raphson solver or a custom solver to solve implicit equations. After you select the solver, error tolerance, maximum iteration count, perturbation, and relaxation parameters, start the simulation to solve the equations.

Use the System > System Properties > Implicit Solver dialog to enter implicit solver options. Error Tolerance: Specifies the maximum allowable difference in total error between two successive iterations. A total error is computed as the sum of individual errors squared, where the error signal is the input signal to a constraint block. Newton-Raphson ceases iterating when the difference in total error between two successive iterations becomes less than the tolerance.

Use Error Tolerance in conjunction with Max Iteration Count to control the time spent converging. The larger the tolerance, the quicker and less accurate the solution. The default is 0.0001.

Max Iteration Count: Specifies the number of iterations the solver performs while attempting to meet the error tolerance criterion. One iteration of the solver has many simulation runs to obtain the local n-dimensional surface and run downhill one step. The default is 10.

Newton-Raphson: Newton-Raphson is a singular value decomposition-based solver (SVD) that performs static optimization at each time step. Embed derives an n-dimensional slope by numerically perturbing the unknown outputs and observing the effects on the constraints. Embed uses the slope matrix to compute values for the unknown blocks that drive the constraints to a minimum.

Specifically, Newton-Raphson forms a Jacobian matrix of the partial derivatives of each unknown block on each constraint block by numerically adding a small offset (perturbing) for each unknown and seeing how it affects each constraint input. If an unknown block has no effect on a constraint block, the value at that element in the Jacobian is 0. The unknown block outputs are adjusted by the current error vector (vector of constraint inputs squared) divided by the Jacobian matrix. This is calculated using SVD. The unknown block updates are scaled by the Relaxation parameter. You should start with 1 and reduce if nonlinearities result in numerical instability. The perturbation value is the small offset used to calculate the Jacobian. It should be about 1% of the value of the smallest unknown. If it is too small (< max unknown*1e-13) then its effect can be lost and the unknown block will not factor into the Jacobian. The Error Tolerance is the sum of squares of all constraint inputs.

Newton-Raphson is particularly useful for solving static equations in the presence of concurrent dynamics.

None: When you’re not solving an implicit equation, activate None.

Perturbation: Indicates the value by which the unknown blocks are numerically perturbed to evaluate the Jacobean (matrix of first partials). Each element of the Jacobean is a ratio of constraint change with respect to block perturbation value applied to the unknown blocks. The perturbation value should be at least one order of magnitude less than the unknown initial value, but greater than 1e-12 of the initial value for the unknowns. The default is 1e-007.

Relaxation: Attenuates the iteration update value to attain convergence for equations that prove difficult to converge. As a side effect, it slows the convergence process because it forces the iteration to take smaller steps. The typical range is from slightly greater than 0 – 2. Select values less than 1 for systems that appear to be unstable. The default is 1.

Suppress Convergence Warnings: If you’re solving for a set of roots that are equidistant from 0, you must initialize the unknown block to a value other than 0 to force the equations to converge. To suppress the convergence warnings when solving an implicit system with nonlinear dynamics, activate Suppress Convergence Warnings.

User Defined: When User Defined is activated, Embed uses VSOLVER.DLL in your current directory to solve the equation. For information on creating a custom solver, see Creating custom implicit solvers.