[NTG-context] Implicit plots/level curves possible?

Mikael P. Sundqvist mickep at gmail.com
Sun Oct 7 20:02:14 CEST 2018


On Sun, Oct 7, 2018 at 7:14 PM Alan Braslau <braslau.list at comcast.net> wrote:
>
> On Sun, 7 Oct 2018 17:25:35 +0200
> "Mikael P. Sundqvist" <mickep at gmail.com> wrote:
>
> > ContourPlot[2 x^5 + x y + y^5 == 0, {x, 0, 2}, {y, -2, 1/2}]
>
> Brut force:
>
> \startTEXpage
> \startMPcode {doublefun}
> pen savedpen ; savedpen := currentpen ;
> pickup pencircle scaled .01 ;
> path p ;
> p := for i=0 upto 1000 :
>        for j=0 upto 1000 :
>          hide(x := 2i/1000 ; y := 2.5j/1000 - 2 ;)
>          if abs(2*(x**5)+x*y+y**5) < .002i/1000 : (x,y) .. fi
>        endfor
>      endfor cycle ;
> draw subpath (0,length p - 1) of p ;
> setbounds currentpicture to (0,-2)--(2,-2)--(2,.5)--(0,.5)--cycle ;
> currentpicture := currentpicture xsized 5cm ;
> pickup savedpen ;
>
> picture pic ; pic := currentpicture ;
> drawarrow llcorner pic--lrcorner pic ;
> drawarrow llcorner pic--ulcorner pic ;
> label.rt ("$x$", lrcorner pic) ;
> label.top("$y$", ulcorner pic) ;
> for x=0 step .5 until 2 :
>     label.bot(decimal x,(x/2)[llcorner pic,lrcorner pic]) ;
> endfor
> for y=0 step .5 until 2.5 :
>     label.lft(decimal (y-2),(y/2.5)[llcorner pic,ulcorner pic]) ;
> endfor
> \stopMPcode
> \stopTEXpage
>
>
> Alan

Thanks both to luigi and to Alan! I'm impressed by your brute force
method, Alan! In particular it learned me the "hide" command.

I feel a bit ashamed. Earlier today I answered something else giving a
reference to the metafun manual. Now I'm here not reading it carefully
enough myself. In the helpers section it is clearly written how to
import and plot data. Thus, I exported the data from the Mathematica
plot (that file is pasted below in case anyone wants to try this
themselves, sorry in advance for the big amount of text it generates
in this email) and then importing it just worked fine. I like Alan's
method very much, but it takes some time during compilation, so I will
probably stick with importing. Working code below (where one can see
that Alan's method is indeed working fine, at least with this
example).

Again, thanks to both luigi and Alan!

\starttext

\startTEXpage[offset=2bp]
\startMPcode{doublefun}

pen savedpen ; savedpen := currentpen ;
pickup pencircle scaled .01 ;

lua("MP = { } MP.data = table.load('mmadata.txt')") ;
numeric n ;
lua("mp.print('n := ',\#MP.data)") ;
path mycurve;
mycurve :=
lua("mp.pair(MP.data[1])")
for i=2 upto n :
.. lua("mp.pair(MP.data[" & decimal i & "])")
endfor;
draw mycurve withcolor darkred withpen pencircle scaled 0.04;

path p ;
p := for i=0 upto 1000 :
       for j=0 upto 1000 :
         hide(x := 2i/1000 ; y := 2.5j/1000 - 2 ;)
         if abs(2*(x**5)+x*y+y**5) < .002i/1000 : (x,y) .. fi
       endfor
     endfor cycle ;
draw subpath (0,length p - 1) of p ;
setbounds currentpicture to (0,-2)--(2,-2)--(2,.5)--(0,.5)--cycle ;
currentpicture := currentpicture xsized 5cm ;
pickup savedpen ;

picture pic ; pic := currentpicture ;
drawarrow llcorner pic--lrcorner pic ;
drawarrow llcorner pic--ulcorner pic ;
label.rt ("$x$", lrcorner pic) ;
label.top("$y$", ulcorner pic) ;
for x=0 step .5 until 2 :
    label.bot(decimal x,(x/2)[llcorner pic,lrcorner pic]) ;
endfor
for y=0 step .5 until 2.5 :
    label.lft(decimal (y-2),(y/2.5)[llcorner pic,ulcorner pic]) ;
endfor
\stopMPcode
\stopTEXpage
\stoptext


%%% mmadata.txt %%%
return {{1.7781332646374535, -2.0}, {1.7768209908069152,
-1.9983615165933983}, {1.775510204081634, -1.9967215415115265},
{1.7664030082433901, -1.985873790716172}, {1.7568733335567501,
-1.9744897959183674}, {1.7559890220139953, -1.973381069421283},
{1.7551020408163278, -1.9722667987462739}, {1.7455791311458495,
-1.9608832289248324}, {1.7356495451060165, -1.9489795918367347},
{1.7351734376993888, -1.9483801416512756}, {1.7346938775510217,
-1.9477751961654046}, {1.7247720468786834, -1.9358716760955252},
{1.714463398255413, -1.9234693877551021}, {1.7142857142857155,
-1.9232445076564075}, {1.7093814232165505, -1.9173390239186459},
{1.7039827159442558, -1.910837931600294}, {1.6938775510204094,
-1.8986359463002893}, {1.6935950869756253, -1.8983122637294494},
{1.6932881048717179, -1.8979591836734695}, {1.683212201778606,
-1.8857806661440912}, {1.6734693877551032, -1.8739731304347957},
{1.6728341829160982, -1.873242985640593}, {1.6721459415303699,
-1.8724489795918369}, {1.6624611568740721, -1.8606990641114929},
{1.653061224489797, -1.8492648538255463}, {1.6520932542108602,
-1.8481487383588753}, {1.6510476808879386, -1.8469387755102042},
{1.6417306097129987, -1.8355918398995696}, {1.632653061224491,
-1.824508389583349}, {1.6313733625579403, -1.82302819476176},
{1.6299953447379028, -1.8214285714285716}, {1.621021656483979,
-1.8104576232725786}, {1.6122448979591848, -1.7997008180397196},
{1.6106756399677442, -1.7978799398362397}, {1.6089910811705357,
-1.795918367346939}, {1.6003354664096425, -1.7852949527022344},
{1.5918367346938787, -1.7748390113411368}, {1.5900012943276478,
-1.7727024637230948}, {1.5880371747643334, -1.7704081632653064},
{1.5796732875598591, -1.760102268101198}, {1.5714285714285725,
-1.7499196167238567}, {1.5693516154762674, -1.7474941541240552},
{1.5671360578036797, -1.7448979591836737}, {1.559036453200205,
-1.7348779028875008}, {1.5510204081632664, -1.7249390383587966},
{1.5487279818399662, -1.722253288006166}, {1.5462903226481057,
-1.7193877551020411}, {1.5384263887311262, -1.7096200753105835},
{1.5306122448979602, -1.6998934176492682}, {1.5281318676901015,
-1.6969780225302318}, {1.5255027353966268, -1.6938775510204085},
{1.5178446192795407, -1.6843268789618004}, {1.510204081632654,
-1.6747786118581103}, {1.507564851086154, -1.6716663851219011},
{1.5047762510118174, -1.6683673469387759}, {1.4972927780116314,
-1.6589962723834215}, {1.489795918367348, -1.6495901709353737},
{1.487028622577334, -1.6463162625946608}, {1.484114030093085,
-1.6428571428571432}, {1.476772615243479, -1.633626067680347},
{1.4693877551020418, -1.6243233124136804}, {1.466524994743585,
-1.6209253892235815}, {1.463519457517736, -1.6173469387755106},
{1.4562860084349807, -1.6082139180277042}, {1.4489795918367356,
-1.5989728942363095}, {1.44605591266623, -1.59549133365701},
{1.4429961632027681, -1.591836734693878}, {1.4358349731623732,
-1.5827573039551985}, {1.4285714285714295, -1.5735333853838596},
{1.4256234654289337, -1.5700114845403652}, {1.422548045280916,
-1.5663265306122454}, {1.415421675175695, -1.5572535182752807},
{1.4081632653061233, -1.5479988341700672}, {1.4052298987613066,
-1.5444830347116336}, {1.4021792960326345, -1.5408163265306127},
{1.39504844365984, -1.5316996495068342}, {1.3877551020408172,
-1.522362834087483}, {1.3848776289504767, -1.5189029638119056},
{1.3818944309730468, -1.51530612244898}, {1.3747177858315758,
-1.506092563628899}, {1.367346938775511, -1.4966184871011081},
{1.3645692581604423, -1.4932680191361836}, {1.3616983215613736,
-1.4897959183673475}, {1.3544324030201833, -1.4804288839798747},
{1.346938775510205, -1.4707583643151105}, {1.3443075913151248,
-1.467574694529565}, {1.3415962320825263, -1.4642857142857149},
{1.3341952083963358, -1.4547049690964184}, {1.3265306122448988,
-1.444774463977538}, {1.3240956547188925, -1.4418192071115903},
{1.3215938613494602, -1.4387755102040822}, {1.3140093465326064,
-1.4289168882628152}, {1.3061224489795926, -1.4186581668443676},
{1.3039367166080325, -1.4159974715869}, {1.3016973899944826,
-1.4132653061224496}, {1.2938782149996626, -1.4030603945157294},
{1.2857142857142865, -1.3924001890023634}, {1.2838343098483223,
-1.3901050718732724}, {1.2819135342629109, -1.387755102040817},
{1.2738054882248795, -1.377130894820943}, {1.2653061224489803,
-1.3659905323563684}, {1.2637922570174938, -1.3641372297485423},
{1.262249607399565, -1.3622448979591844}, {1.253795143864733,
-1.3511234171078605}, {1.2448979591836742, -1.3394184331288994},
{1.2438146981370093, -1.3380887701858828}, {1.242713589935552,
-1.3367346938775517}, {1.233851491968893, -1.3250325738143955},
{1.224489795918368, -1.3126723089083476}, {1.2239061213449884,
-1.3119540830126435}, {1.223314210449941, -1.311224489795919},
{1.2139792072421658, -1.298852521559539}, {1.204081632653062,
-1.2857397050294284}, {1.204071396831069, -1.2857270804917775},
{1.2040610387115078, -1.2857142857142865}, {1.203739283948535,
-1.2852863498336278}, {1.1941828495239635, -1.2725775605440268},
{1.1848728666718258, -1.2602040816326538}, {1.1843146571968737,
-1.2594025968712566}, {1.1836734693877558, -1.2584845639037323},
{1.1744675565464748, -1.2462012686026223}, {1.1658355990824183,
-1.2346938775510212}, {1.1646422985936957, -1.2329726369619636},
{1.1632653061224496, -1.2309927268418497}, {1.1548396662050255,
-1.2197157233661688}, {1.146961508332401, -1.2091836734693886},
{1.1450604755890992, -1.206429507554444}, {1.1428571428571435,
-1.2032486753632181}, {1.1353055778633054, -1.1931129256300532},
{1.1282625364233536, -1.183673469387756}, {1.1255758606927269,
-1.179764868011644}, {1.1224489795918373, -1.175233743918532},
{1.1158722500035858, -1.1663841772914378}, {1.1097518806321112,
-1.1581632653061233}, {1.1061957117731829, -1.1529696459978087},
{1.1020408163265312, -1.1469280138295148}, {1.0965472538980585,
-1.1395200142600814}, {1.0914441707559086, -1.1326530612244907},
{1.0869279281417792, -1.1260339673737978}, {1.081632653061225,
-1.1183103043424962}, {1.0773388321633344, -1.1125101332652214},
{1.073355678223837, -1.107142857142858}, {1.067781111626598,
-1.0989470798545091}, {1.0612244897959189, -1.0893581918849886},
{1.0582559623906629, -1.0853433123177956}, {1.0555045640821168,
-1.0816326530612255}, {1.0487646327800382, -1.0716972702494436},
{1.0408163265306127, -1.0600480676685298}, {1.0393084259327305,
-1.0580073247269455}, {1.0379111746931935, -1.0561224489795928},
{1.0298887022230219, -1.044271775282449}, {1.0215875701388464,
-1.032086503489885}, {1.0205861803415766, -1.0306122448979602},
{1.0205062844470683, -1.030489593420758}, {1.0204081632653066,
-1.0303327731966592}, {1.0111583837617015, -1.0166642651958337},
{1.00328045071553, -1.0051020408163276}, {1.0018506740328479,
-1.002788698275268}, {1.0000000000000004, -0.9998247144637208},
{0.9925846949533242, -0.9888609680430401}, {0.9862689729210781,
-0.979591836734695}, {0.9833620492224978, -0.9748790711249405},
{0.9795918367346943, -0.9688331607067846}, {0.9741844045384619,
-0.9608409228983529}, {0.9695743609940414, -0.9540816326530623},
{0.965053495511301, -0.9467443551006712}, {0.9591836734693882,
-0.9373286299987242}, {0.9559711254640683, -0.9325871135780796},
{0.9532266775860438, -0.9285714285714297}, {0.9469391680816696,
-0.9183668562244452}, {0.938775510204082, -0.9052822699905541},
{0.937959568860365, -0.9040811511694432}, {0.9372602079240614,
-0.9030612244897971}, {0.932154118799089, -0.8947844852335558},
{0.9290293101409223, -0.889733770487114}, {0.9213915388935029,
-0.8775510204081645}, {0.9201452591357462, -0.8753286301619515},
{0.9183673469387759, -0.8722133960823307}, {0.9113179542701124,
-0.8608525571623611}, {0.9057724934360561, -0.8520408163265318},
{0.9025494510675557, -0.8463029820839243}, {0.8979591836734697,
-0.8382820726300806}, {0.8938418613841069, -0.8316772651066027},
{0.8905848785525916, -0.8265306122448992}, {0.8851973504937649,
-0.8169726996378975}, {0.8775510204081636, -0.8036731357607297},
{0.8766181331775866, -0.8021865172014878}, {0.8758745616162483,
-0.8010204081632666}, {0.8717992018019936, -0.7938306349055541},
{0.8680942600934959, -0.7873311544749686}, {0.8673469387755105,
-0.7859605093610692}, {0.8613297469419768, -0.775510204081634},
{0.8596225972442848, -0.7724105289548499}, {0.8571428571428574,
-0.7677089093672168}, {0.8512196268844187, -0.7574040378230499},
{0.8468700937133944, -0.7500000000000013}, {0.8428873710051891,
-0.742309153590454}, {0.8367346938775513, -0.7307482141475812},
{0.8346278319927692, -0.7271233732743463}, {0.8330615296525217,
-0.7244897959183687}, {0.8264429761188443, -0.7118442390351198},
{0.826081710585806, -0.7111735668036873}, {0.8194566789043612,
-0.6989795918367361}, {0.8182906984321618, -0.6965243820618401},
{0.8163265306122451, -0.692527944882672}, {0.8102098917412865,
-0.6811151863438016}, {0.8059895119698924, -0.6734693877551035},
{0.8022037022277904, -0.6656127191540392}, {0.795918367346939,
-0.6530291338493389}, {0.7942732569585857, -0.6500155716589124},
{0.7931154678616339, -0.6479591836734708}, {0.788660951262447,
-0.6388874135678558}, {0.7864004340254593, -0.6343463962436878},
{0.7857142857142859, -0.6329068417862055}, {0.7804103584118951,
-0.6224489795918382}, {0.7785555188421481, -0.6186423361411941},
{0.7755102040816328, -0.6121243496531662}, {0.7707813831152447,
-0.6028498017181907}, {0.7676512010413118, -0.5969387755102056},
{0.7630775810320478, -0.5869693502405542}, {0.756393422065975,
-0.5730427979906334}, {0.7556055756464799, -0.571428571428573},
{0.7554321624629047, -0.5710159193703505}, {0.7551020408163267,
-0.570269643943723}, {0.7477770851084874, -0.5550745619817394},
{0.7448979591836736, -0.5488453809132513}, {0.7434519183830882,
-0.5459183673469403}, {0.7401801447477782, -0.5390605333509934},
{0.7346938775510206, -0.5270849482518927}, {0.73263840127533,
-0.522977508609921}, {0.7312918221599828, -0.5204081632653077},
{0.7268626402744253, -0.5106191166695636}, {0.7251230694566684,
-0.5068614693016152}, {0.719290705088944, -0.4948979591836751},
{0.7175705956538513, -0.49079185747350396}, {0.7142857142857144,
-0.48340643564105806}, {0.7100516847737509, -0.47468029199199685},
{0.7073448200023936, -0.4693877551020424}, {0.7025599580091759,
-0.45853474636608277}, {0.6982590979989207, -0.44935448474355033},
{0.6956311984283484, -0.4438775510204097}, {0.6950349244773347,
-0.4424308341992517}, {0.6938775510204083, -0.43980218908236496},
{0.6874491920686455, -0.4264027956284805}, {0.6833632684014233,
-0.4183673469387771}, {0.679858385623683, -0.410381099603051},
{0.6734693877551021, -0.39675537677370076}, {0.6722520475111009,
-0.3943788181621459}, {0.6714258258398694, -0.39285714285714446},
{0.6684972039320424, -0.3866419130783198}, {0.6645518711486437,
-0.3784938345335849}, {0.663265306122449, -0.3757402709557924},
{0.6590341526839318, -0.3673469387755118}, {0.6567489985166309,
-0.362737221241968}, {0.653061224489796, -0.3550365584154535},
{0.6488886553973445, -0.34705244605944346}, {0.6459894882213929,
-0.3418367346938791}, {0.6409564082075948, -0.3314575509649979},
{0.6339173473315975, -0.31790688824613117}, {0.6330768946052754,
-0.31632653061224647}, {0.6329213741527878, -0.31599113945187396},
{0.6326530612244898, -0.3154525754364381}, {0.6246825464459771,
-0.3007794700037548}, {0.6189168694975438, -0.29081632653061384},
{0.6163241005493615, -0.2857173232928916}, {0.6122448979591837,
-0.2782350162535417}, {0.6078288465185949, -0.27082618674971715},
{0.6043303428709713, -0.26530612244898116}, {0.5991788406190746,
-0.2561284900424849}, {0.5918367346938775, -0.24389776210463143},
{0.5903555073062609, -0.2416474526018694}, {0.5890627018230726,
-0.2397959183673485}, {0.5813397934240215, -0.22740689087303578},
{0.5784627297192345, -0.22307841214904475}, {0.5726038361977244,
-0.21428571428571586}, {0.5720710062542617, -0.213482670753603},
{0.5714285714285714, -0.21248006602652858}, {0.5625661740932898,
-0.19985350687318523}, {0.5543350120343092, -0.1887755102040832},
{0.5528254139340698, -0.18651925299057753}, {0.5510204081632653,
-0.18398157362696888}, {0.5428318611475172, -0.1735009898921355},
{0.5343987007027057, -0.16326530612245055}, {0.5325694176273844,
-0.16081884021066897}, {0.5306122448979591, -0.15834558885056343},
{0.5220230735267438, -0.148491566254837}, {0.512199147700871,
-0.1377551020408179}, {0.5111792551518377, -0.13653613514183702},
{0.510204081632653, -0.13542917534952764}, {0.5000261945383969,
-0.12496725682700528}, {0.49977963171669737, -0.12472453964587339},
{0.48979591836734687, -0.11506195678238179}, {0.48846717572160814,
-0.11390582626635866}, {0.48648252199319625, -0.11224489795918524},
{0.4765565181086078, -0.10328394420097649}, {0.4693877551020408,
-0.0970644987305743}, {0.4642917736480328, -0.09310467069506256},
{0.45583994657295973, -0.08673469387755259}, {0.44897959183673464,
-0.0812621502122962}, {0.43903522242696985, -0.07430423211534663},
{0.43869682455543724, -0.07407794889754166}, {0.4385461132586065,
-0.07397959183673626}, {0.4285714285714285, -0.06746833097322409},
{0.42515540023421394, -0.06549452521743815}, {0.4183673469387754,
-0.06126980011662488}, {0.418285103919423, -0.061224489795919934},
{0.4112599946137656, -0.057353578161365895}, {0.4081632653061224,
-0.05550762097783089}, {0.40024525152723367, -0.05132697257230899},
{0.3969603869705881, -0.04971788363370523}, {0.3877551020408163,
-0.04521174212933679}, {0.3820952329763974, -0.0427891220448109},
{0.3681688759031847, -0.03674170712388045}, {0.36734693877551017,
-0.03641942544183239}, {0.36690258896515276, -0.036269722977234034},
{0.36531106184529016, -0.03571428571428728}, {0.35108097561619805,
-0.030536535581794755}, {0.346938775510204, -0.028976072037454753},
{0.33963400053754317, -0.026583316998461205}, {0.33490176337515043,
-0.02525034680147161}, {0.32727188645789995, -0.022959183673470954},
{0.32653061224489793, -0.022736585235885894}, {0.3182130453173142,
-0.02060104029213431}, {0.31334917811298524, -0.019237493049396325},
{0.30612244897959184, -0.017563430698495447}, {0.30102370046108823,
-0.016577517280784146}, {0.28860697981479555, -0.013819949258291905},
{0.2857142857142857, -0.01332777433117424}, {0.2834618449596721,
-0.013019632575921659}, {0.26695317768842314, -0.010204081632654627},
{0.2655082234184484, -0.009951455420818617}, {0.26530612244897955,
-0.009908754497390013}, {0.26502946042836784, -0.009858254106889978},
{0.24701765087206728, -0.007554467022162315}, {0.24489795918367344,
-0.007194003754251076}, {0.24217254033624375, -0.006797308073367503},
{0.22818919952098876, -0.005579827129377822}, {0.22448979591836732,
-0.005079447159325402}, {0.21997601564642139, -0.004561856292722218},
{0.20904667370867258, -0.003997780313140377}, {0.2040816326530612,
-0.0034693311989266035}, {0.19827874791776576, -0.002950475713535316},
{0.18962026246209016, -0.002770590289735809}, {0.18367346938775508,
-0.002276228754648394}, {0.17695870487613444, -0.0018106259931288168},
{0.16994475754904617, -0.0018547673494080982}, {0.16326530612244897,
-0.0014210391046479282}, {0.15592141581127092, -0.001024218743682052},
{0.1500574537158482, -0.001203693059272969}, {0.14285714285714285,
-0.0008329879260291356}, {0.13509232585153358,
-0.0004980603756430477}, {0.1299958383315521, -0.0007705082080104071},
{0.12244897959183673, -0.00044962729960941125}, {0.11441150696269169,
-0.00015724084622331484}, {0.10979505323831777,
-0.0005112854929206802}, {0.10204081632653061,
-0.00021683572040633557}, {0.093829631052776, 0.00005989995953862605},
{0.08948471441215075, -0.0003890049439967871}, {0.08163265306122448,
-0.00008881812385440856}, {0.07330397446341344,
0.00020676661460917144}, {0.06908320845627795,
-0.00038068330720514645}, {0.061224489795918366,
-0.00002810596445531298}, {0.05279149292677095, 0.000337164453779645},
{0.0485800339458205, -0.0004994473636443092}, {0.04081632653061224,
0}, {0.03222508810558834, 0.000534966398625247},
{0.027827852574969683, -0.0009294699955751749}, {0.02040816326530612,
0}, {0.011337910781976428, 0.0011337339715074921}, {0,
-0.010204027425056751}, {0., 0.002538576406170707}}
%%% End of file


More information about the ntg-context mailing list