diff --git a/Maths/Polynomial.js b/Maths/Polynomial.js new file mode 100644 index 000000000..740ac3b25 --- /dev/null +++ b/Maths/Polynomial.js @@ -0,0 +1,82 @@ + +/** + * Polynomials are algebraic expressions consisting of two or more algebraic terms. + * Terms of a polynomial are: + * 1. Coefficients e.g. 5, 4 in 5x^0, 4x^3 respectively + * 2. Variables e.g. y in 3y^2 + * 3. Exponents e.g. 5 in y^5 + * + * Class Polynomial constructs the polynomial using Array as an argument. + * The members of array are coefficients and their indexes as exponents. + */ +class Polynomial { + constructor (array) { + this.coefficientArray = array // array of coefficients + this.polynomial = '' // in terms of x e.g. (2x) + (1) + this.construct() + } + + /** + * Function to construct the polynomial in terms of x using the coefficientArray + */ + construct () { + this.polynomial = this.coefficientArray.map((coefficient, exponent) => { + if (coefficient === 0) { + return '0' + } + if (exponent === 0) { + return `(${coefficient})` + } else if (exponent === 1) { + return `(${coefficient}x)` + } else { + return `(${coefficient}x^${exponent})` + } + }) + .filter((x) => { + if (x !== '0') { + return x + } + }) + .reverse() + .join(' + ') + } + + /** + * Function to display polynomial in terms of x + * @returns {String} of polynomial representation in terms of x + */ + display () { + return this.polynomial + } + + /** + * Function to calculate the value of the polynomial by substituting variable x + * @param {Number} value + */ + evaluate (value) { + return this.coefficientArray.reduce((result, coefficient, exponent) => { + return result + coefficient * (Math.pow(value, exponent)) + }, 0) + } +} + +/** + * Function to perform tests + */ +const tests = () => { + const polynomialOne = new Polynomial([1, 2, 3, 4]) + console.log('Test 1: [1,2,3,4]') + console.log('Display Polynomial ', polynomialOne.display()) + // (4x^3) + (3x^2) + (2x) + (1) + console.log('Evaluate Polynomial value=2 ', polynomialOne.evaluate(2)) + // 49 + + const polynomialTwo = new Polynomial([5, 0, 0, -4, 3]) + console.log('Test 2: [5,0,0,-4,3]') + console.log('Display Polynomial ', polynomialTwo.display()) + // (3x^4) + (-4x^3) + (5) + console.log('Evaluate Polynomial value=1 ', polynomialTwo.evaluate(1)) + // 4 +} + +tests()