plfunc
plot a two-dimensional function
parameter | type | units | description |
---|---|---|---|
func(float) | float* | uu | function of x to be plotted |
xmin,ymin,xmax,ymax | float | uu | window in which the function is plotted |
linetype | int | -- | see plot |
returns: | void |
Description
plfunc plfunc plots the function func(x) as far as it is within the window xmin, ymin, xmax, ymax. Stepsize is adjusted depending on earlier changes in the curvature. As a result, functions with sudden changes may give problems.Examples
see program sine.c on the next page// plotting sinusoidal curves, using various degrees of series expansion // // features: plotting of coloured and dashed curves // suppression of automatic scaling // crossing axes // drawing of text with greek letter and superior numbers #include <simplot.h> #include <math.h> #define Deg2Rad (M_PI/180) void plosin(int textshft,float red, float green, float blue, float (*func)(float),int def, char *text) // plots the function y=func(x). def defines dashed line { plcolor(red,green,blue); plot(0,1.7,UP); plotrm(0,textshft*plget(HEIGHT),UP); plotrm(20,0,def); plformat(.5,0,text); plfunc(func,0,-1.5,540,1.5,def); plcolor(Black); } float sinx(float x) { x*=Deg2Rad; return sin(x); } float sin5(float x) { x*=Deg2Rad; return x-pow(x,3)/6+pow(x,5)/120; } float sin9(float x) { x*=Deg2Rad; return x-pow(x,3)/6+pow(x,5)/120-pow(x,7)/5040+pow(x,9.)/362880.; } void pldraw(void) { plaxes(0,-1.5,540,1.5,120,70,"@a@ (deg)","sin @a@"," "); plrect(0,-1.5,540,1.5); plosin(6,Red, sinx,DOWN, " full expansion"); plosin(4,Green,sin5,2222, " sin @a@ = @a@ - @a@3^/3! + @a@5^/5!"); plosin(2,Blue, sin9,1141, " sin @a@ = @a@ - @a@3^/3! + @a@5^/5!-@a@7^/7! + @a@9^/9!"); plframe(5,3); } int main() { plinit(PS,"plfunc",160,150,30,80,"",""); plset(HEIGHT,3); plset(PLOTMODE,GXcopy); plset(XMARK,30); // forces scale marks every 30 degrees plset(XSKIP,3); // forces number at axis every 90 degrees plset(CROSS,1); // axes P_cross in (0,0) plloop(); exit(0); }