Example of mode.
MGL code:
define n 100 define kdx 0.5 crange 0 1 define $v 0.027 new m2 n n '(x^2<0.5)*(y^2<0.5)' subplot 2 2 1 '<_' axis:box:cont 0.5 m2 'k=' text 0.5 0.9 'linear' 'a';size -1.4 new v n n '$v' mode v m2 '0' kdx dens v/v.max 'wyrRk' subplot 2 2 2 '<_' axis:box:cont 0.5 m2 'k=' text 0.5 0.9 'defocusing' 'a';size -1.4 new v n n '$v' mode v m2 '0-' kdx dens v/v.max 'wyrRk' subplot 2 2 3 '<_' axis:box:cont 0.5 m2 'k=' text 0.5 0.9 'focusing' 'a';size -1.4 new v n n '$v' mode v m2 '0+' kdx dens v/v.max 'wyrRk' subplot 2 2 0 '<_' yrange 0 0.4 new m1 n '(x^2<0.5)' plot m1 'k=' axis:box define $u 0.1 new u n '$u' mode u m1 '0' kdx plot u '2b';legend '0' new u n '$u' mode u m1 '1' kdx plot u '2m';legend '1' new u n '$u' mode u m1 'r' kdx plot u '2c';legend 'r' new u n '$u' mode u m1 '0-' kdx plot u '2g';legend '0--' new u n '$u' mode u m1 '0+' kdx plot u '2r';legend '0+' legend
C++ code:
void smgl_mode(mglGraph *gr) { const long n=100; const double kdx=0.5, V = 0.027, U = 0.1; mglData m2(n,n), m1(n), v(n,n), u(n); gr->Fill(m2,"(x^2<0.5)*(y^2<0.5)"); gr->Fill(m1,"(x^2<0.5)"); mglDataV cv(1,1,1,0.5); gr->SetRange('c',0,1); gr->SubPlot(2,2,1,"<_"); gr->Axis(); gr->Box(); gr->Cont(cv,m2,"k="); gr->Puts(0.5,0.9,"linear","a",-1.4); v.Fill(V); v.Mode(m2,"0",kdx); v /= v.Maximal(); gr->Dens(v,"wyrRk"); gr->SubPlot(2,2,2,"<_"); gr->Axis(); gr->Box(); gr->Cont(cv,m2,"k="); gr->Puts(0.5,0.9,"defocusing","a",-1.4); v.Fill(V); v.Mode(m2,"0-",kdx); v /= v.Maximal(); gr->Dens(v,"wyrRk"); gr->SubPlot(2,2,3,"<_"); gr->Axis(); gr->Box(); gr->Cont(cv,m2,"k="); gr->Puts(0.5,0.9,"focusing","a",-1.4); v.Fill(V); v.Mode(m2,"0+",kdx); v /= v.Maximal(); gr->Dens(v,"wyrRk"); gr->SubPlot(2,2,0,"<_"); gr->SetRange('y',0,0.4); gr->Axis(); gr->Box(); gr->Plot(m1, "k="); u.Fill(U); u.Mode(m1,"0",kdx); gr->Plot(u,"2b","legend '0'"); u.Fill(U); u.Mode(m1,"1",kdx); gr->Plot(u,"2m","legend '1'"); u.Fill(U); u.Mode(m1,"r",kdx); gr->Plot(u,"2c","legend 'r'"); u.Fill(U); u.Mode(m1,"0-",kdx); gr->Plot(u,"2g","legend '0--'"); u.Fill(U); u.Mode(m1,"0+",kdx); gr->Plot(u,"2r","legend '0+'"); gr->Legend(); }