DGtal  0.9.4beta
polynomial2-derivative.cpp
1 
33 #include <iostream>
36 #include <string>
37 #include <sstream>
38 #include "DGtal/math/MPolynomial.h"
39 #include "DGtal/io/readers/MPolynomialReader.h"
41 
43 
44 using namespace DGtal;
45 
47 
48 void usage( int, char** argv )
49 {
50  std::cerr << "Usage: " << argv[ 0 ] << " <P(x,y)>" << std::endl;
51  std::cerr << "\t - computes the first and second derivatives of the given polynomial P (in two variables)." << std::endl;
52 }
53 
57 int main( int argc, char** argv )
58 {
59  if ( argc < 2 )
60  {
61  usage( argc, argv );
62  return 1;
63  }
64 
66  typedef double Ring;
67  typedef MPolynomial<2, Ring> MyPolynomial;
69 
71  std::string polynomialString( argv[ 1 ] );
72  std::istringstream polynomialIStream( polynomialString );
73  MyPolynomial P;
74  polynomialIStream >> P;
75  MyPolynomial P1_0 = derivative<0>( P );
76  MyPolynomial P2_0 = derivative<0>( P1_0 );
77  MyPolynomial P0_1 = derivative<1>( P );
78  MyPolynomial P0_2 = derivative<1>( P0_1 );
79  MyPolynomial P1_1 = derivative<1>( P1_0 );
80  MyPolynomial P1_1b= derivative<0>( P0_1 );
81  std::cout << "P(X_0,X_1) = " << P << std::endl;
82  std::cout << "dP/dX_0(X_0,X_1) = " << P1_0 << std::endl;
83  std::cout << "dP/dX_1(X_0,X_1) = " << P0_1 << std::endl;
84  std::cout << "d/dX_1 dP/dX_0(X_0,X_1) = " << P1_1 << std::endl;
85  std::cout << "d/dX_0 dP/dX_1(X_0,X_1) = " << P1_1b << std::endl;
86  std::cout << "d/dX_0 dP/dX_0(X_0,X_1) = " << P2_0 << std::endl;
87  std::cout << "d/dX_1 dP/dX_1(X_0,X_1) = " << P0_2 << std::endl;
89  return 0;
90 }
91 
Aim: Represents a multivariate polynomial, i.e. an element of , where K is some ring or field...
Definition: MPolynomial.h:58
DGtal is the top-level namespace which contains all DGtal functions and types.