Hi,

My program takes any polynomial and calculates the first and second derivatives and evaluates them at a given x. The coefficients of the polynomial are stored in a vector A. I now want to do something else to this polynomial, however my calculations for the derivatives mean that the values of A, A, A etc change, so I was wondering is there any way of resetting them back to what they were without the user having to input them again?

``````#include <iostream>
#include <vector>

using namespace std;

//Declare functions
void poly(vector<double> A, double x, double& p, double& px, double& pxx, int degree);

//---------------------------------------------------------------------------------------

int main()
{
vector<double> A;                  // vector of coefficients a^degree...a^0
int degree;                        // highest degree
int i;
double x;                          // value of x
double p;                          // p(x)
double px;                         // p'(x)
double pxx;                        // p''(x)

poly(A, x, p, px, pxx, degree);

return 0;
}

//---------------------------------------------------------------------------------------

void poly(vector<double> A, double x, double& p, double& px, double& pxx, int degree)
{
cout << "For polynomial p(x) = a0 + a1x + a2x^2 + ... + anx^n" << endl;
cout << "Enter the polynomial degree, n" << endl;
cout << "Example:  2 for a quadratic, 3 for a cubic..." << endl;
cout << "Degree: ";
cin >> degree;

A.resize (degree + 1);

for (int i = degree; i >= 0; i--)
{
cout << "Enter coefficient a" << i << ": ";
cin >> A[i];
}

cout << "Enter the value of x for which to solve: ";
cin >> x;

//Calculations for p(x)

p = A[degree];
for (int i = (degree - 1); i >= 0; i--)
{
p = p*x;
p = p+A[i];
}

//First differentiation on the coefficients
for (int i = 1; i <= degree; i++)
{
A[i - 1] = i * A[i];
}

//Horner's Method - calculations for p'(x)
px = A[degree - 1];
for (int i = (degree - 2); i >= 0; i--)
{
px = px*x;
px = px+A[i];
}

//Second differentiation on the coefficients
for (int i = 1; i <= degree-1 ; i++)
{
A[i - 1] = i * A[i];
}

//Horner's Method - calculations for p''(x)
pxx = A[degree - 2];
for (int i = (degree - 3); i >= 0; i--)
{
pxx = pxx*x;
pxx = pxx+A[i];
}

cout << "  p\(" << x << ") = " << p << endl;
cout << " p\'(" << x << ") = " << px << endl;
cout << "p\''(" << x << ") = " << pxx << endl;
}``````