// created with Asymptote 2.47
import graph;
import settings;
outformat="pdf";
unitsize(6.2mm);
int Q_start = 0; // start value for drawing graph of inverse function z(Q)
int Q_end = 9; // end value for drawing graph of inverse function z(Q)
// prove if the given number is even
// Parameters: n ... integer number
// Returns: true if n is even; false otherwise
//
bool isEven(int n) {
return ((n % 2) == 0);
}
// prove if the given number is odd
// Parameters: n ... integer number
// Returns: true if n is odd; false otherwise
//
bool isOdd(int n) {
return ((n % 2) != 0);
}
// calculate inverse function of Q
// Parameters: n ... integer number
// Returns: n/2 if n is even;
// (n+9)/2 otherwise
//
int Qinverse(int n=0) {
if (isEven(n)) { return (n # 2); }
return ((n + 9) # 2);
}
// draw graph of inverse function z(Q)
pen graphPen = red + scale(2) * currentpen;
for (int Q = Q_start; Q < (Q_end + 1); ++Q) {
dot( (Q, Qinverse(Q)), graphPen );
}
// axes
pen axesPen = gray(0.5) + dashed + linewidth(0.5*linewidth());
xaxis( "$Q$",
BottomTop,
LeftTicks(n=1, begin=false, end=false, extend=true, pTick=axesPen) );
yaxis( "$z(Q)$",
LeftRight,
RightTicks(n=1, begin=false, end=false, extend=true, pTick=axesPen) );
// label
real pos = (Q_end - Q_start) / 2.0;
label(scale(2) * "$z(Q)$", (pos, pos), graphPen);