```! Given a function of 2 variables, (ChartPcontour.lng) 1) Create Surface and Contour charts of it, 2) Find a global minimum ; ! Keywords: Chart, Graph, ChartPsurface, ChartPcontour, Global; PROCEDURE bivariatefun: fval = x*@SIN(y) + y*@SIN(x); ENDPROCEDURE SUBMODEL bivariateopt: min = fxy; fxy = x*@SIN(y) + y*@SIN(x); @free( fxy); ! It could be < 0; @BND( lb, x, ub); @BND( lb, y, ub); ENDSUBMODEL CALC: lb = -10; ! Lower bound for x & y; ub = 10; ! Upper bound for x & y; @CHARTPSURFACE( 'f(x,y)=x*sin(y)+y*sin(x)', ! Chart title; 'X-axis', 'Y-axis', 'z-axis', ! Titles of the axes; bivariatefun, ! Name of function procedure; x, lb, ub, ! X variable and bounds; y, lb, ub, ! Y variable and bounds; 'f(x,y)', fval); ! Output title and variable; @CHARTPCONTOUR( 'f(x,y)=x*sin(y)+y*sin(x)', ! Chart title; 'X-axis', 'Y-axis', 'z-axis', ! Titles of the axes; bivariatefun, ! Name of function procedure; x, lb, ub, ! X variable and bounds; y, lb, ub, ! Y variable and bounds; 'f(x,y)', fval); ! Output title and variable; ! Optimize it; @SET( 'GLOBAL',1); ! Use Global solver? 0:No, 1:Yes; @SOLVE( bivariateopt); @WRITE(' f(x,y) achieves a global minimum value = ', fxy, ', at x = ',x,', y = ',y, @NEWLINE(1)); ENDCALC ```