polynomial.js
v2.0.1
Published
A small library that helps you create a polynomial function out of a set of points
Downloads
5
Maintainers
Readme
polynomial.js
Polynomial.js is a very simple and small library that helps you calculate polynomial coefficients from points and calculating points based on the curve they represent.
It is based on this StackOverflow answer: http://stackoverflow.com/a/9861559
Installation
Simply use npm
or yarn
to install the package:
npm install polynomial.js
yarn install polynomial.js
Notes
- All points supplied to the library must be objects with an x- and a y-property.
- To help you with this, you can use the exported class
Point
(require("polynomial.js").Point
). Its' constructor will create such an object for you. It will throw a TypeError if a non-numerical value is supplied. - Calculating all values from 0 to 100 with the above curve would yield these points: https://pastebin.com/Ucz92TTe
Example
const Curve = require("polynomial.js").Curve;
let points = [
new Point(0, 5),
new Point(9, 10),
new Point(20, -3),
new Point(50, 23123),
];
let curve = new Curve(points);
let y = curve.compute(5); // 130.03044
Manual API
To create the coefficients array, pass an array with all your points into the method calculatePolynomialCoefficients
, like this:
const Polynomial = require("polynomial.js");
const Point = Polynomial.Point;
let points = [
new Point(0, 5),
new Point(9, 10),
new Point(20, -3),
new Point(50, 23123),
];
let coefficients = Polynomial.calculatePolynomialCoefficients(points);
To calculate a point using those coefficients you can use the method calculateValueForPolynomial
:
let y = Polynomial.calculateValueForPolynomial(5, coefficients);
To confirm that this actually works you can just input your original x values, and should receive your original y values:
points.forEach((point) => {
let y = Polynomial.calculateValueForPolynomial(point.x, coefficients);
console.log(point.y === y);
});
Tests
To run the tests, simply type npm run test
. For coverage run npm run cover
. istanbul
, mocha
and chai
are included as dev dependencies.
Credits
Many thanks to:
- Daniel Fischer on StackOverflow. He wrote all the code that makes this library work, I just gave it a nice API and published it. All credit goes to him!
- Tobias Rahloff helped me out with tests and all that. Without him I most likely would have never published this!