Solve and Encapsulate

Write formulas once, reuse anywhere. Solve equations, automatically and functionally.

SOLVEWITH(outputsrange, inputsrange, newinputs, <monitors>)
Substitutes newinputs at inputsrange and returns new outputs found at outputsrange. The inputrange is reset to original values after completion.
  • outputsrange: Range of original outputs. See Note #1.
  • inputsrange: Range of original inputs. See Note #1.
  • newinputs: Array or range of new input values.
  • monitors: Range of intermediate formulas within original formula. See Notes #1, 2.
Note #1: Use RANGES function to select a discontinuous range. Better yet, create a Named Range with a descriptive name for the original functions.
Note #2: The monitors parameter is optional and rarely used. However, it is required when nesting intermediate Propel functions in the original formulas. When results comes back with "...", add monitors to ensure all Propel callbacks are fired prior to reading the outputsrange.
Example:
On the left table below, the complex formulas are composed. On the right, results are tabulated across different inputs. Using SOLVEWITH avoids repeating formulas, which simplifies spreadsheets and encapsulates ideas.
docsolvewith.png

SOLVEROOTS(rootsrange, variablerange, <monitors>)
Solves system of multiple equations with multiple unknowns and returns the solved variables (array). The variablerange is reset to original values after completion.
  • rootsrange: Range of root equations, with precedents from variablerange.
  • variablerange: Range of variables used in roots equations. See Note #1.
  • monitors: Range of intermediate formulas. See Note #2.
Note #1: The initial values in variablerange are used to begin the Newton-Raphson algorithm. Choosing "good" values is critical to ensure a solution is found. The use of formulas at variablerange that "guess" at a solution is recommended. Use RANGES function to select a discontinuous range.
Note #2: The monitors parameter is optional and rarely used. However, it is required when nesting intermediate Propel functions in the original formulas.
Example:
Many engineering problems do not have analytical solutions, especially thermodynamic problems. The below example solves for heat loss through pipe insulation (3 equations, 3 unknowns).
docsolveroots.png

SOLVEODE(dxdtrange, x0range, deltat, <t0>, <monitors>)
Integrates differential equations using the Runga-Kutta method and returns the states at each time step (array). The length of the returned array is determined by the formula range (ctrl-shift-enter).
  • dxdtrange: Range of differential formulas, with precedents from x0 and t0 ranges.
  • x0range: Range of state variables with initial values. See Note #1.
  • deltat: Time delta value for each iteration.
  • t0: Range of time variable, or initial time value (default = 0). See Note #1.
  • monitors: Range of intermediate formulas. See Note #2.
Note #1: The initial values in x0range and t0 (if range) are used to begin the Runga-Kutta algorithm. They are reset to original values after completion. Use RANGES function to select a discontinuous range.
Note #2: The monitors parameter is optionals and rarely used. However, it is required when nesting intermediate Propel functions in the original formulas.
Example:
Below is an example of a mass, spring, damper system.
docsolveode.png

Last edited Nov 6, 2014 at 6:35 PM by chadspen, version 13