package Current.popups.Polynomial; import Current.*; import Current.basic.*; import java.applet.Applet; import java.awt.event.*; import java.awt.*; import java.math.*; /*This class does some basic manipulations with BigPolynomials with BigComplex coefficients. I set the maximum degree at 100*/ public class BigPolynomial { public BigComplex[] z=new BigComplex[100]; //the coefficients public int D; //the degree /**basic constructors*/ public BigPolynomial() { D=0; for(int i=0;i<100;++i) z[i]=new BigComplex(); } public BigPolynomial(BigComplex[] w,int d) { D=d; for(int i=0;i<100;++i) z[i]=new BigComplex(); for(int i=0;i<=d;++i) z[i]=new BigComplex(w[i].x,w[i].y); } /**vector space operations*/ public BigPolynomial scale(BigComplex w) { BigPolynomial P=new BigPolynomial(); P.D=D; for(int i=0;i<=D;++i) { P.z[i]=BigComplex.times(w,z[i]); } return(P); } public BigPolynomial plus(BigPolynomial P) { int d; d=this.D; if(d.0001) return(1); } return(0); } /**This routine is applied to a sequence (encoded as a polynomial) f(0),f(1),f(2),f(3),... Assuming that these numbers are the output of a polynomial f, this routine takes successive differences and tried to find the degree. If the degree is higher than the number of terms, meaning that taking successive differences does not reveal a pattern, then -1 is returned*/ public int effectiveDegree() { int test=0; BigPolynomial P=new BigPolynomial(this.z,this.D); for(int i=0;i0;--i) { B1=A1.termFromGrowth(i); B2=B1.createValues(this.D); A1=A1.minus(B2); A2=A2.plus(B1); } A2.D=d; return(A2); } public void print() { System.out.println("BigPolynomial"); for(int i=0;i<=D;++i) z[i].print(); } }