The JavaScript code example demonstrates how to program a polynomial class with synthetic division and print the result in a clean format.
<!DOCTYPE html> <html> <head> <title>XoaX.net's Javascript</title> </head> <body> <script type="text/javascript" src="SyntheticDivision.js"></script> </body> </html>
function CPolynomial(daCoeff) { this.mdaCoeff = new Array(daCoeff.length); for (var iPower = 0; iPower < daCoeff.length; ++iPower) { this.mdaCoeff[iPower] = daCoeff[iPower]; } this.mfnDisplay = function() { // Assume a non-constant polynomial if (this.mdaCoeff.length > 1) { // Assume the leading coeffient is nonzero var sPoly = ((this.mdaCoeff[this.mdaCoeff.length - 1] < 0) ? "-":""); sPoly += AbsTerm(this.mdaCoeff[this.mdaCoeff.length - 1], this.mdaCoeff.length - 1); for (var iPower = this.mdaCoeff.length - 2; iPower >= 0; --iPower) { if (this.mdaCoeff[iPower] > 0) { sPoly += " + " + AbsTerm(this.mdaCoeff[iPower], iPower); } else if (this.mdaCoeff[iPower] < 0) { sPoly += " - " + AbsTerm(this.mdaCoeff[iPower], iPower); } } document.writeln(sPoly); } } this.SynDiv = function(dDivisor) { var daQ = new Array(daCoeff.length - 1); daQ[daCoeff.length - 2] = daCoeff[daCoeff.length - 1]; for (var iPower = daCoeff.length - 2; iPower > 0; --iPower) { daQ[iPower - 1] = daCoeff[iPower] + dDivisor*daQ[iPower]; } var dRemainder = daCoeff[0] + dDivisor*daQ[0]; return new CSynDivResult(new CPolynomial([-dDivisor, 1]), new CPolynomial(daQ), dRemainder); } } function CSynDivResult (qD, qQ, dR) { this.mqD = qD; this.mqQ = qQ; this.mdR = dR; this.mfnDisplay = function() { document.writeln("("); this.mqD.mfnDisplay(); document.writeln(")"); document.writeln("("); this.mqQ.mfnDisplay(); document.writeln(")"); if (this.mdR != 0) { document.writeln(((this.mdR > 0)?" + ":" - ")+Math.abs(this.mdR)); } document.writeln("<br />"); } } function AbsTerm(dC, iExp) { var sTerm = ""; // Do not display zero terms if (dC != 0) { if (Math.abs(dC) != 1 || iExp == 0) { // Print the positive coeffient sTerm += Math.abs(dC); } if (iExp > 1) { sTerm += "x<sup>" + iExp +"</sup>"; } else if (iExp == 1) { sTerm += "x"; } } return sTerm; } var daCoeff = [1.0, -4.0, 6.0, -4.0, -1.0]; var qP = new CPolynomial(daCoeff); qP.mfnDisplay(); document.writeln(" = "); var qResult = qP.SynDiv(1); qResult.mfnDisplay();
© 20072025 XoaX.net LLC. All rights reserved.