diff options
Diffstat (limited to 'graphics/epix/doc/plotting3.xp')
-rw-r--r-- | graphics/epix/doc/plotting3.xp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/graphics/epix/doc/plotting3.xp b/graphics/epix/doc/plotting3.xp new file mode 100644 index 0000000000..e5d1088978 --- /dev/null +++ b/graphics/epix/doc/plotting3.xp @@ -0,0 +1,43 @@ +/* -*-ePiX-*- */ +#include "epix.h" +using namespace ePiX; + +P sin_n(double x, double n) // Taylor polynomial of sin x +{ + const int N((int) floor(n)); // convert y to an index bound + const double sqx(-pow(x, 2)); // store -x^2 for efficiency + double val(x), summand(x); // places to store results of evaluation + + // step through odd numbers from 1 to 2N+1 + for (int i=1; i <= 2*N+1; i += 2) + { + summand *= (sqx/((i+1)*(i+2))); // (-1)^i x^{2i+1}/(2i+1)! + val += summand; + } + + return P(x, val); +} + +int main() +{ + picture(P(0,-1),P(6*M_PI, 1), "5x1in"); + + begin(); + + set_crop(); + h_axis(4); + v_axis(1); + + bold(); + green(); + plot(Sin, 0, xmax(), 120); + + domain R(P(0,1), P(6*M_PI, 41), mesh(60, 40), mesh(120, 40)); + for (int i=3; 0 <= i; --i) + { + rgb(0.25*i, 0, 1-0.25*i); + plot(sin_n, R.slice2(5*i+1)); + } + + end(); +} |