35 xDerivatives_m(0), sDerivatives_m(0){
36 std::vector<int> temp;
43 const std::size_t &sDerivatives):
44 xDerivatives_m(xDerivatives), sDerivatives_m(sDerivatives) {
53 polynomials_m(doperator.polynomials_m),
54 xDerivatives_m(doperator.xDerivatives_m),
55 sDerivatives_m(doperator.sDerivatives_m) {
74 for (std::size_t i = oldxDerivatives + 1; i <=
xDerivatives_m; i++) {
120 const std::size_t &x,
121 const std::size_t &s) {
135 if ((i != 0 || j != 0) &&
140 std::cout <<
")" <<
"(d/dx)^" << i <<
"(d/ds)^" << j;
162 const std::size_t &s)
const {
180 const std::size_t &xDerivative,
181 const std::size_t &sDerivative)
const {
185 return polynomials_m[xDerivative][sDerivative].evaluatePolynomial(x);
Inform & endl(Inform &inf)
DifferentialOperator & operator=(const DifferentialOperator &doperator)
Assigment operator.
std::size_t sDerivatives_m
void printOperator() const
Print operator, for internal debugging.
bool isPolynomialZero(const std::size_t &x, const std::size_t &s) const
Check if polynomial with x x-derivaties and s s-derivatives is a zero polynomial If x or s is larger...
double evaluatePolynomial(const double &x, const std::size_t &xDerivative, const std::size_t &sDerivative) const
Evaluate polynomial with xDerivative x-derivatives and sDerivative s-derivatives If xDerivative or s...
void truncate(const std::size_t &truncateOrder)
Truncate all polynomials to truncateOrder If truncateOrder is greater than the highest power of x th...
void multiplyPolynomial(const Polynomial &poly)
Multiplies each term with given polynomial.
DifferentialOperator()
Default constructor, initialises identity operator (constant 1)
void resizeX(const std::size_t &xDerivatives)
Set highest derivative in x to xDerivatives.
void differentiateX()
Differentiate wrt x using product rule.
std::vector< std::vector< Polynomial > > polynomials_m
void doubleDifferentiateS()
Differentiate wrt s twice.
void setPolynomial(const std::vector< int > &poly, const std::size_t &x, const std::size_t &s)
Assign the input polynomial If x or s is greater than xDerivatives_m or sDerivatives_m,...
void addOperator(const DifferentialOperator &doperator)
Add the operator to Operator, term by term.
std::size_t xDerivatives_m
void resizeS(const std::size_t &sDerivatives)
Set highest derivative in s to sDerivatives.
~DifferentialOperator()
Destructor, does nothing.