#include #include #include #include #include using namespace std; class Wielomian { public: vector coof; // <- to bedziemy chcieli ukryc z sekcji publicznej Wielomian(const vector &tab); Wielomian operator*(const Wielomian &a) const; Wielomian operator*(double x) const; Wielomian pochodna() const; Wielomian operator-(const Wielomian &a) const; double operator()(double x) const; vector roots() const; static Wielomian gen(int n); }; Wielomian::Wielomian(const vector &tab) { coof=tab; } Wielomian Wielomian::operator*(double x) const { vector wyn; for (auto a:coof) { wyn.push_back(a*x); } return Wielomian(wyn); } Wielomian Wielomian::pochodna() const { vectorwyn; for (int i = 1; i < coof.size(); i++) { wyn.push_back(i*coof[i]); } return Wielomian(wyn); } double Wielomian::operator()(double x) const { double wyn=0; for (int i=0;i wyn; vector a=coof; vector b=t.coof; for (int i=0;i<=a.size()+b.size();i++) { double temp=0; for (int j=0;ja.size()-1 || i-j>b.size()-1 || i-j<0) { ; } else { temp+=a[j]*b[i-j]; } } wyn.push_back(temp); } while (wyn.back()==0) { wyn.pop_back(); } return Wielomian(wyn); } Wielomian operator*(double x, const Wielomian &a) { return a*x; } vector Wielomian::roots() const { if (coof.size()==0) { return vector(); } if (coof.size()==2) { return vector( {-coof[0]/coof[1]} ); } // TODO: przypadek funkcji kwadratowej // zawsze musimy cos zwrocic return vector(); } Wielomian Wielomian::operator-(const Wielomian &a) const { vector wyn; for (int i=0;i=coof.size()) { x=0; } else { x=coof[i]; } if (i>=a.coof.size()) { y=0; } else { y=(a.coof)[i]; } wyn.push_back(x-y); } return Wielomian(wyn); } class Czebyszew : public Wielomian { public: int n; // <- tego raczej nie powinno byc, a na pewno nie w sekcji publicznej Czebyszew (int n): Wielomian(vector()) { if (n==0) { this->coof=vector{1}; } else if (n==1) { this->coof=vector{0,1}; } else { this->coof=(Czebyszew(n-1)*Wielomian(vector{0,2})-Czebyszew(n-2)).coof; } this->n=n; } vector roots() const { vector wyn; for (int i = 0; i < n; i++) { wyn.push_back(cos( M_PI*(i+1/2)/n)); } return wyn; } }; int main() { vector tab={1,1,1,1,1}; Wielomian a(tab); cout<