sokobo
Loading...
Searching...
No Matches
polynomial.h
1#pragma once
2#include <vector>
3#include <string>
4#include <complex>
5
6class Polynomial {
7private:
8 std::vector<double> coefficients;
9 void removeLeadingZeros();
10
11public:
12 Polynomial(const std::vector<double>& coeffs);
13 Polynomial(double constant = 0);
14
15 int degree() const;
16 double getCoeff(int i) const;
17 void setCoeff(int i, double val);
18 int getDegree() const;
19
20 // Basic operations
21 Polynomial operator+(const Polynomial& other) const;
22 Polynomial operator-(const Polynomial& other) const;
23 Polynomial operator*(const Polynomial& other) const;
24 std::pair<Polynomial, Polynomial> divide(const Polynomial& divisor) const;
25
26 // Advanced operations
27 Polynomial gcd(const Polynomial& other) const;
28 Polynomial derivative() const;
29 Polynomial integral() const;
30 std::vector<std::complex<double>> roots() const;
31
32 // Evaluation
33 double evaluate(double x) const;
34 std::complex<double> evaluate(std::complex<double> x) const;
35
36 // Factorization
37 std::vector<Polynomial> factor() const;
38
39 // String representation
40 std::string toString() const;
41
42 // Static methods for polynomial interpolation
43 static Polynomial lagrangeInterpolation(const std::vector<double>& x, const std::vector<double>& y);
44 static Polynomial newtonInterpolation(const std::vector<double>& x, const std::vector<double>& y);
45};