Skip to content

Instantly share code, notes, and snippets.

@ollybritton
Created December 23, 2016 19:48
Show Gist options
  • Save ollybritton/be8fd172b518b13fc7466d2749a1e986 to your computer and use it in GitHub Desktop.
Save ollybritton/be8fd172b518b13fc7466d2749a1e986 to your computer and use it in GitHub Desktop.
Newtons Root Method (Not) Implemented In Js.
var derivativeOfATerm = function(arr) {
var one = arr[0];
var two = arr[1];
var derivative = [];
if(two <= 0) {
return [0,0];
} else {
derivative.push(one*two);
derivative.push(two-1);
return derivative;
}
};
var derivativeOfPolynomial = function(arr, order = 1) {
var derivative = [];
for(var i = 0; i < arr.length; i++) {
//console.log(arr[i]);
derivative.push(derivativeOfATerm(arr[i]));
}
if(order === 1) {
return derivative;
} else {
return derivativeOfPolynomial(derivative, order-1);
}
};
var runPolynomial = function(poly, num) {
var array = [];
for(var i = 0; i < poly.length; i++) {
array.push(Math.pow(num,poly[i][1])*poly[i][0]);
}
return array.reduce((a,b) => a+b);
};
var newtonRootFind = function(polynomial, guess, limit = 10) {
var derivative = derivativeOfPolynomial(polynomial);
var previous = guess;
var next;
for(var i = 0; i < limit; i++) {
next = previous - (runPolynomial(polynomial,previous))/(runPolynomial(derivative,previous));
previous = next;
}
return previous;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment