XPolyMath

require.mx('mxjs/base/xpolymath.js');

This library provides functions for polynomial operations

This is very much still a work in progress, the functionality here has only been tested with a few sample cases.

StatusName
Number Complex.abs ( ComplexNumber ↓cp )

Returns the absolute value of a complex number.

ComplexNumber Complex.add ( ComplexNumber ↓cp1, ComplexNumber ↓cp2, ComplexNumber ↑cp )

Addition of complex numbers: cp = cp1 + cp2.

ComplexNumber Complex.copy ( ComplexNumber ↓cp1, ComplexNumber ↑cp )

Copies a complex number.

ComplexNumber Complex.create ( Number ↓r, Number ↓i, ComplexNumber ↑cp )

Creates a complex number.

ComplexNumber Complex.divide ( ComplexNumber ↓cp1, ComplexNumber ↓cp2, ComplexNumber ↑cp )

Division of complex numbers: cp = cp1 / cp2.

Boolean Complex.isInfinite ( ComplexNumber ↓cp )

Returns if the complex number is infinite. The complex number is infinite if either of its components are infinite.

Boolean Complex.isNaN ( ComplexNumber ↓cp )

Returns if the complex number is Not-A-Number. The complex number is Not-A-Number if either of its components are Not-A-Number.

ComplexNumber Complex.multiply ( ComplexNumber ↓cp1, ComplexNumber ↓cp2, ComplexNumber ↑cp )

Multiplication of complex numbers: cp = cp1 x cp2.

ComplexNumber Complex.set ( Number ↓r, Number ↓i, ComplexNumber ↑cp )

Sets the values of a complex number.

ComplexNumber Complex.sqrt ( ComplexNumber ↓cp1, ComplexNumber ↑cp )

Square root of complex numbers: cp is the square root of cp1.

ComplexNumber Complex.subtract ( ComplexNumber ↓cp1, ComplexNumber ↓cp2, ComplexNumber ↑cp )

Subtraction of complex numbers: cp = cp1 - cp2.

Number Solver.zeros ( Array ↓coefficients, Number ↓coefficients_length, Array ↑roots, Number ↓opt_initial, Number ↓opt_max_evaluations, Number ↓opt_absolute_accuracy, Number ↓opt_relative_accuracy, Number ↓opt_function_value_accuracy )

Solve for the zeroes/roots of the specified real polynomial function using Laguerre's algorithm.

The roots returned can be complex, so they are returned as an array of ComplexNumber(s).


Category: Complex

Methods for working with complex numbers

↑abs = Lib.Complex.abs ( ↓cp )

Returns the absolute value of a complex number.

Parameters: Returns: Number ↑abs - - absolute value of cp
↑cp = Lib.Complex.add ( ↓cp1, ↓cp2, ↑cp )

Addition of complex numbers: cp = cp1 + cp2.

Parameters:
  • ComplexNumber ↓cp1 - - complex number, first operand
  • ComplexNumber ↓cp2 - - complex number, second operand
  • ComplexNumber ↑cp - - complex number. Optional - if not specified a new ComplexNumber is created and returned.
Returns: ComplexNumber ↑cp - - complex number
↑cp = Lib.Complex.copy ( ↓cp1, ↑cp )

Copies a complex number.

Parameters:
  • ComplexNumber ↓cp1 - - complex number to copy
  • ComplexNumber ↑cp - - complex number. Optional - if not specified a new ComplexNumber is created and returned.
Returns: ComplexNumber ↑cp - - complex number
↑cp = Lib.Complex.create ( ↓r, ↓i, ↑cp )

Creates a complex number.

Parameters:
  • Number ↓r - - real component of complex number
  • Number ↓i - - imaginary component of complex number
  • ComplexNumber ↑cp - - complex number. Optional - if not specified a new ComplexNumber is created and returned.
Returns: ComplexNumber ↑cp - - complex number
↑cp = Lib.Complex.divide ( ↓cp1, ↓cp2, ↑cp )

Division of complex numbers: cp = cp1 / cp2.

Parameters:
  • ComplexNumber ↓cp1 - - complex number, first operand
  • ComplexNumber ↓cp2 - - complex number, second operand
  • ComplexNumber ↑cp - - complex number. Optional - if not specified a new ComplexNumber is created and returned.
Returns: ComplexNumber ↑cp - - complex number
↑isInfinite = Lib.Complex.isInfinite ( ↓cp )

Returns if the complex number is infinite. The complex number is infinite if either of its components are infinite.

Parameters: Returns: Boolean ↑isInfinite - - true if cp is infinite, false otherwise
↑isNaN = Lib.Complex.isNaN ( ↓cp )

Returns if the complex number is Not-A-Number. The complex number is Not-A-Number if either of its components are Not-A-Number.

Parameters: Returns: Boolean ↑isNaN - - true if cp is Not-A-Number, false otherwise
↑cp = Lib.Complex.multiply ( ↓cp1, ↓cp2, ↑cp )

Multiplication of complex numbers: cp = cp1 x cp2.

Parameters:
  • ComplexNumber ↓cp1 - - complex number, first operand
  • ComplexNumber ↓cp2 - - complex number, second operand
  • ComplexNumber ↑cp - - complex number. Optional - if not specified a new ComplexNumber is created and returned.
Returns: ComplexNumber ↑cp - - complex number
↑cp = Lib.Complex.set ( ↓r, ↓i, ↑cp )

Sets the values of a complex number.

Parameters:
  • Number ↓r - - real component of complex number
  • Number ↓i - - imaginary component of complex number
  • ComplexNumber ↑cp - - complex number
Returns: ComplexNumber ↑cp - - complex number
↑cp = Lib.Complex.sqrt ( ↓cp1, ↑cp )

Square root of complex numbers: cp is the square root of cp1.

Parameters:
  • ComplexNumber ↓cp1 - - complex number, first operand
  • ComplexNumber ↑cp - - complex number. Optional - if not specified a new ComplexNumber is created and returned.
Returns: ComplexNumber ↑cp - - complex number
↑cp = Lib.Complex.subtract ( ↓cp1, ↓cp2, ↑cp )

Subtraction of complex numbers: cp = cp1 - cp2.

Parameters:
  • ComplexNumber ↓cp1 - - complex number, first operand
  • ComplexNumber ↓cp2 - - complex number, second operand
  • ComplexNumber ↑cp - - complex number. Optional - if not specified a new ComplexNumber is created and returned.
Returns: ComplexNumber ↑cp - - complex number

Category: Solver

Methods for solving polynomial functions

↑n = Lib.Solver.zeros ( ↓coefficients, ↓coefficients_length, ↑roots, ↓opt_initial, ↓opt_max_evaluations, ↓opt_absolute_accuracy, ↓opt_relative_accuracy, ↓opt_function_value_accuracy )

Solve for the zeroes/roots of the specified real polynomial function using Laguerre's algorithm.

The roots returned can be complex, so they are returned as an array of ComplexNumber(s).

Parameters:
  • Array ↓coefficients - - an array specifying the coefficients. e.g. for 100 + 10x + 4x^2 + 3x^3 + x^5, the array would be [100, 10, 4, 3, 0, 1];
  • Number ↓coefficients_length - - the length of the above array
  • Array ↑roots - - output array to be populated with the ComplexNumber instances indicating the roots of the polynomial function
  • Number ↓opt_initial - - optional initial root for the Laguerre algorithm. By default this is 0.
  • Number ↓opt_max_evaluations - - optional max number of iterations for the Laguerre algorithm. By default this is Number.MAX_SAFE_INTEGER. An error will be thrown if the solution does not converge by this number of iterations.
  • Number ↓opt_absolute_accuracy - - optional absolute accuracy for the Laguerre algorithm. By default this is 1e-6.
  • Number ↓opt_relative_accuracy - - optional relative accuracy for the Laguerre algorithm. By default this is 1e-14.
  • Number ↓opt_function_value_accuracy - - optional function value accuracy for the Laguerre algorithm. By default this is 1e-15.
Returns: Number ↑n - - number of roots.

Class: ComplexNumber

A ComplexNumber encapsulates a complex number.

StatusName
Member Number i

- an array containing the y coordinates of the points in this Path

Member Number r

- real component of the