/** * Wraps the polynomial around the array:<br> * f(x) = c[0] + c[1]*x + ... + c[n]*x<sup>n-1</sup> * @param coefficients Polynomial coefficients * @return new instance of a polyonimial which is identical to the input array */ public static Polynomial wrap( double ...coefficients ) { Polynomial p = new Polynomial(coefficients.length); p.setTo(coefficients,coefficients.length); return p; }
/** * Wraps the polynomial around the array:<br> * f(x) = c[0] + c[1]*x + ... + c[n]*x<sup>n-1</sup> * @param coefficients Polynomial coefficients * @return new instance of a polyonimial which is identical to the input array */ public static Polynomial wrap( double ...coefficients ) { Polynomial p = new Polynomial(coefficients.length); p.setTo(coefficients,coefficients.length); return p; }
remainder.setTo(numerator);
remainder.setTo(numerator);
/** * Compute the sturm sequence using a straight forward method */ private List<Double> computeSturm( Polynomial poly , double x ) { Polynomial d = new Polynomial(poly.size); PolynomialOps.derivative(poly, d); List<Double> found = new ArrayList<Double>(); found.add( poly.evaluate(x)); found.add( d.evaluate(x)); Polynomial q = new Polynomial(poly.size); Polynomial r = new Polynomial(poly.size); Polynomial p1 = new Polynomial(poly.size); Polynomial p2 = new Polynomial(poly.size); p1.setTo(poly); p2.setTo(d); do { PolynomialOps.divide(p1,p2,q,r); for( int i = 0; i < r.size; i++ ) { r.c[i] = -r.c[i]; } found.add(r.evaluate(x)); p1.setTo(p2); p2.setTo(r); } while( r.computeDegree() > 0 ); return found; }
@Test public void setTo() { Polynomial a = new Polynomial(10); Polynomial b = Polynomial.wrap(1,2,3,4); a.setTo(b); assertEquals(b.size(),a.size()); for( int i = 0; i < a.size(); i++ ) assertEquals(a.c[i],b.c[i],1e-8); }