Write a class Polynomial that stores a polynomial such as p(x) = 5x^10 + 9x^7 -
ID: 3676528 • Letter: W
Question
Write a class Polynomial that stores a polynomial such as p(x) = 5x^10 + 9x^7 - x - 10 as a linked list of terms. A term contains the coefficient and the power of x. For example, you would store p(x) as (5,10),(9,7),(-1,1),(-10,0) Supply methods to add, multiply, and print polynomials. Supply a constructor that makes a polynomial from a single term. For example, the polynomial p can be constructed as Polynomial p = new Polynomia- l(new Term(-10, 0)); p.add(new Polynomia- l(new Term(-1, 1))); p.add(new Polynomia- l(new Term(9, 7))); p. add(new Polynomia- l(new Term(5, 10))); Then compute P(x) Times P(x). Polynomial q = p.multiply(p); q. print();Explanation / Answer
Polynommial.java
import java.util.LinkedList;
import java.util.ListIterator;
public class Polynomial
{
private LinkedList terms;
public Polynomial()
{
terms = new LinkedList();
}
//add polynomial
public Polynomial add(Polynomial p)
{
Polynomial r = new Polynomial();
ListIterator iterator = terms.listIterator();
while (iterator.hasNext())
{
r.add((Term)iterator.next());
}
ListIterator pIterator = p.terms.listIterator();
while (pIterator.hasNext())
{
r.add((Term)pIterator.next());
}
return r;
}
//multiply a polynomial
public Polynomial multiply (Polynomial p)
{
Polynomial r = new Polynomial();
ListIterator iterator = terms.listIterator();
while (iterator.hasNext())
{
ListIterator pIterator = p.terms.listIterator();
Term t1 = (Term)pIterator.next();
while (pIterator.hasNext())
{
Term t2 = (Term)pIterator.next();
r.add(t1.multiply(t2));
}
}
return r;
}
//add coefficient and degree as new Term
public void addTerm (double c, int d)
{
add(new Term(c,d));
}
//add term
public void add (Term t)
{
double c = t.getCoeff();
int d = t.getDegree();
ListIterator iterator = terms.listIterator();
while(iterator.hasNext())
{
Term current = (Term)iterator.next();
if (d == current.getDegree())
{
if (c == -current.getCoeff())
{
iterator.remove();
}
else
{
current.add(c);
}
}
else if (d < current.getDegree())
{
iterator.previous();
iterator.add(t);
return;
}
}
iterator.add(t);
}
//print the polynomial
public void print()
{
ListIterator iterator = terms.listIterator();
while (iterator.hasNext())
{
Term current = (Term)iterator.next();
if (current.getCoeff() != 0)
{
if (current.getCoeff() > 0)
{
System.out.print(" + ");
}
System.out.print(current.getCoeff());
if (current.getDegree() > 0)
{
System.out.print(" * x");
if (current.getDegree() > 1)
{
System.out.print("^" + current.getDegree());
}
}
}
}
System.out.println();
}
}
Term.java
public class Term
{
private double coeff;
private int degree;
public Term(double c, int d)
{
coeff = c;
degree = d;
}
//multiplies a term
public Term multiply (Term other)
{
return new Term(coeff * other.coeff, degree + other.degree);
}
//add coefficient
public void add (double c)
{
coeff = coeff + c;
}
//get coefficent
public double getCoeff()
{
return coeff;
}
//get degree
public int getDegree()
{
return degree;
}
}
PolynomialTester.java
public class PolynomialTester
{
public static void main (String[] args)
{
Polynomial p = new Polynomial();
p.addTerm(-10, 0);
p.addTerm(-1, 1);
p.addTerm(9, 7);
p.addTerm(5, 10);
Polynomial q = p.multiply(p);
q.print();
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.