MGL code:
new a 40 50 60 'exp(-x^2-4*y^2-16*z^2)' light on:alpha on copy b a:diff b 'x':subplot 5 3 0:call 'splot' copy b a:diff2 b 'x':subplot 5 3 1:call 'splot' copy b a:cumsum b 'x':subplot 5 3 2:call 'splot' copy b a:integrate b 'x':subplot 5 3 3:call 'splot' mirror b 'x':subplot 5 3 4:call 'splot' copy b a:diff b 'y':subplot 5 3 5:call 'splot' copy b a:diff2 b 'y':subplot 5 3 6:call 'splot' copy b a:cumsum b 'y':subplot 5 3 7:call 'splot' copy b a:integrate b 'y':subplot 5 3 8:call 'splot' mirror b 'y':subplot 5 3 9:call 'splot' copy b a:diff b 'z':subplot 5 3 10:call 'splot' copy b a:diff2 b 'z':subplot 5 3 11:call 'splot' copy b a:cumsum b 'z':subplot 5 3 12:call 'splot' copy b a:integrate b 'z':subplot 5 3 13:call 'splot' mirror b 'z':subplot 5 3 14:call 'splot' stop func splot 0 title 'max=',b.max:norm b -1 1 on:rotate 70 60:box:surf3 b return
C++ code:
void smgl_data1(mglGraph *gr) // basic data operations { mglData a(40,50,60),b; gr->Fill(a,"exp(-x^2-4*y^2-16*z^2)"); gr->Light(true); gr->Alpha(true); b.Set(a); b.Diff("x"); gr->SubPlot(5,3,0); splot1(gr,b); b.Set(a); b.Diff2("x"); gr->SubPlot(5,3,1); splot1(gr,b); b.Set(a); b.CumSum("x"); gr->SubPlot(5,3,2); splot1(gr,b); b.Set(a); b.Integral("x");gr->SubPlot(5,3,3); splot1(gr,b); b.Mirror("x"); gr->SubPlot(5,3,4); splot1(gr,b); b.Set(a); b.Diff("y"); gr->SubPlot(5,3,5); splot1(gr,b); b.Set(a); b.Diff2("y"); gr->SubPlot(5,3,6); splot1(gr,b); b.Set(a); b.CumSum("y"); gr->SubPlot(5,3,7); splot1(gr,b); b.Set(a); b.Integral("y");gr->SubPlot(5,3,8); splot1(gr,b); b.Mirror("y"); gr->SubPlot(5,3,9); splot1(gr,b); b.Set(a); b.Diff("z"); gr->SubPlot(5,3,10);splot1(gr,b); b.Set(a); b.Diff2("z"); gr->SubPlot(5,3,11);splot1(gr,b); b.Set(a); b.CumSum("z"); gr->SubPlot(5,3,12);splot1(gr,b); b.Set(a); b.Integral("z");gr->SubPlot(5,3,13);splot1(gr,b); b.Mirror("z"); gr->SubPlot(5,3,14);splot1(gr,b); }