package math.equation; public class RationalPolynomial { public Polynomial a; public Polynomial b; public RationalPolynomial(){ } public RationalPolynomial(Polynomial a, Polynomial b){ this.a = a; this.b = b; } public RationalPolynomial(Polynomial a, String b){ this.a = a; this.b = new Polynomial(b); } public RationalPolynomial(String a, Polynomial b){ this.a = new Polynomial(a); this.b = b; } public RationalPolynomial(String a, String b){ this.a = new Polynomial(a); this.b = new Polynomial(b); } public RationalPolynomial(double a, String b){ this.a = new Polynomial(a); this.b = new Polynomial(b); } public RationalPolynomial(double a, double b){ this.a = new Polynomial(a); this.b = new Polynomial(b); } public RationalPolynomial(String ab){ String[] a_b = ab.split(";"); if(a_b.length == 1){ a = new Polynomial(a_b[0]); b = new Polynomial(1); } if(a_b.length == 2){ a = new Polynomial(a_b[0]); b = new Polynomial(a_b[1]); } } /** * set the symbolic of all polynomials * @param symb symbolic */ public void setSymbolic(String symb){ a.setSymbolic(symb); b.setSymbolic(symb); } public RationalPolynomial plus(RationalPolynomial g){ Polynomial a = new Polynomial(this.a.times(g.b)).plus((g.a.times(b))); Polynomial b = new Polynomial(this.b.times(g.b)); return new RationalPolynomial(a, b); } public RationalPolynomial minus(RationalPolynomial g){ Polynomial a = new Polynomial(this.a.times(g.b)).minus((g.a.times(b))); Polynomial b = new Polynomial(this.b.times(g.b)); return new RationalPolynomial(a, b); } public RationalPolynomial times(RationalPolynomial g){ Polynomial a = new Polynomial(this.a).times(g.a); Polynomial b = new Polynomial(this.b).times(g.b); return new RationalPolynomial(a, b); } // use Horner's method to compute and return the polynomial evaluated at x public double evaluate(double x){ return a.evaluate(x) / b.evaluate(x); } public double mod(double x){ return new RationalPolynomialComplex(this).mod(x); } public double argd(double x){ return new RationalPolynomialComplex(this).argd(x); } @Override public String toString(){ String p = ""+a; String q = ""+b; int size = p.length() > q.length() ? p.length() : q.length(); String sep = ""; for(int i=0; i