What else can we do with polynomials? We may add them. Here it goes:
1 class Polynomial : public vector<double> { 2 public: 3 // ... 4 // declare addition operator 5 Polynomial operator + (const Polynomial & p) const; 6 // ... 7 }; 8 9 Polynomial Polynomial::operator + (const Polynomial & p) const 10 { 11 Polynomial r(*this); // copy left polynomial into result 12 for ( unsigned int i=0 ; i<p.size() ; ++i ) // loop over right polynomial 13 if ( i<size() ) // check if coefficient index exist in result polysnomial 14 r[i] += p[i]; // yes: add coefficients from right polynomial 15 else 16 r.push_back(p[i]); // no: append coefficients from right polynomial 17 return r; // return result 18 } 19 20 int main() 21 { 22 Polynomial p(4); 23 p[0] = 1; // 1*x^0 24 p[4] = 2; // 2*x^4 25 26 Polynomial q(2); 27 q[0] = 1; // 1*x^0 28 q[1] = 2; // 2*x^1 29 q[2] = 3; // 3*x^2 30 31 cout << "p = " << p << endl; // print it 32 cout << "q = " << q << endl; // print it 33 cout << "p(3.4) = " << p(3.4) << endl; // evaluate and print it 34 cout << "q(3.4) = " << q(3.4) << endl; // evaluate and print it 35 cout << "p(3)+q(3) = " << p(3)+q(3) << endl; 36 cout << "p+q = " << p+q << endl; 37 cout << "(p+q)(3) = " << (p+q)(3) << endl; 38 return 0; 39 }Download Full Source
Line by line walk through:
The program will return:
p = 2*x^4 + 1 q = 3*x^2 + 2*x^1 + 1 p(3.4) = 268.267 q(3.4) = 42.48 p(3)+q(3) = 197 p+q = 2*x^4 + 3*x^2 + 2*x^1 + 2 (p+q)(3) = 197
Further extensions are obvious...