Kent State University Polynomials Questions

User Generated

Enwnfurxnetbhq

Programming

Kent State University

Description

We can represent a polynomial of one variable as an ordered list of terms, where the terms are ordered by their exponents. There are multiple ways to add or subtract two polynomials from an algorithmic standpoint. Here are two possibilities:

  • Traverse both lists and examine the two terms at the current iterator position. If the exponent of one is smaller than the exponent of the other, then insert this one into the result and advance that list’s iterator. If the exponents are equal, then create a new term with the exponent and the sum of the coefficients, and advance both iterators.
  • Traverse one list, adding a single term into another polynomial by looking for a matching exponent. If the exponents match, add the coefficients. Otherwise, place the single term in the other list at the right position to keep the terms ordered by exponent.

For example: 3x^4 + 2x^2 + 3x + 7 added to 2x^3 + 4x + 5 yields 3x^4 + 2x^3 + 2x^2 + 7x + 12.

Write a program to add and subtract polynomials (you don’t need to read input from the keyboard, just use methods to construct the polynomials). I have defined a class Term that contains the exponent and coefficient and implements the Comparable interface. You should define a class Polynomial that uses a java.util.LinkedList of Term objects. A toString() and equals() method is provided to help you debug. Things to keep in mind:

  • Make sure that there is only one representation of zero.
    • This is frequently the cause of errors because a polynomial like 0x^4 is not equal to 0x^0 but both have a toString representation of "0". This yields strange error messages like "Expected polynomial 0 but was 0."
  • Make sure that polynomials are built in order of exponent.
  • If two terms cancel out, don’t include a zero term unless the whole polynomial is zero.
    • Again, 0x^4 + 0x^3 +0x^2 will print as "0" but is not the same as 0x^0.
  • You should not change the Term class.
  • Do not alter this or the parameter polynomials in your methods. They are expected to be immutable objects (like String objects).

HERE IS THERE PROGRAM YOU HAVE TO DO:import java.util.List;

import java.util.LinkedList;

import java.util.ListIterator;

public class Polynomial {

public static final Polynomial ZERO = new Polynomial(Term.ZERO);

private List<Term> terms;

public Polynomial() {

this.terms = new LinkedList<Term>();

}

public Polynomial(Term [] terms) {

this();

Polynomial p = new Polynomial();

for (Term term : terms) {

p = p.add(new Polynomial(term));

}

this.terms = p.terms;

}

public Polynomial(Term term) {

this();

terms.add(term);

}

public Polynomial(Polynomial other) {

this();

for (Term term : other.terms) {

terms.add(term);

}

}

public Polynomial add(Polynomial other) {

Polynomial result = new Polynomial();

// add your code here

return result;

}

public Polynomial sub(Polynomial other) {

Polynomial result = new Polynomial();

// add your code here

return result;

}

@Override

public boolean equals(Object obj) {

if (!(obj instanceof Polynomial)) {

return false;

}

Polynomial other = (Polynomial)obj;

return this.terms.equals(other.terms);

}

public String toString() {

StringBuilder builder = new StringBuilder();

for (Term term : this.terms) {

if (!term.equals(Term.ZERO)) {

if (builder.length() != 0) {

if (term.isNegative()) {

builder.append(" - ");

term = term.negate();

} else {

builder.append(" + ");

}

}

builder.append(term.toString());

}

}

if (builder.length() == 0) {

return "0";

}

return builder.toString();

}

}

User generated content is uploaded by users for the purposes of learning and should be used following Studypool's honor code & terms of service.

Explanation & Answer

View attached explanation ...


Anonymous
Great study resource, helped me a lot.

Studypool
4.7
Trustpilot
4.5
Sitejabber
4.4

Related Tags