No entiendo el error que genera la compilación de este código que no funciona (basado en una idea de Franck PastorÁrea entre dos curvas
beginfig(1);
interim linejoin := mitered;
interim ahangle := 30;
numeric u, pi, a, b;
pi = 3.141592653589793;
u = 1.5cm;
vardef graph_of_function (suffix f) (expr xmin, xmax, xsep) =
for x = xmin step xsep until xmax: (x, f(x)) .. endfor (xmax, f(xmax))
enddef ;
vardef vline (suffix f, g) (expr x) = (x, min(f(x), g(x))) -- (x, max(f(x),g(x)))
enddef;
vardef area_between_functions (suffix f, g)(expr a, b, xsep) =
buildcycle(graph_of_function(f, a, b, xsep), vline(f, g, b),
reverse graph_of_function(g, a, b, xsep), reverse vline(f, g, a))
enddef;
xmin :=-pi/2; xmax := 3*pi/2;
ymin :=-1.5; ymax := 5;
vardef f(expr x)= exp(-x)*(-cos(x)+sin(x)+1) enddef;
vardef g(expr x)=-exp(-x)*cos(x) enddef;
path C_f, C_g;
C_f = graph_of_function(f,xmin,xmax,0.01);
C_g = graph_of_function(g,xmin,xmax,0.01);
a = xpart(C_f intersectionpoint C_g);
b = xpart(reverse C_f intersectionpoint reverse C_g);
fill (area_between_functions(f, g, a, b, 0.1)) scaled u withcolor 0.4[white, blue];
draw C_f scaled u withcolor blue;
draw C_g scaled u withcolor blue;
endfig;
Aquí está la salida de la consola.
MPtoPDF 1.4.1 : running 'mpost --mem=mpost logo.mp'
This is MetaPost, version 2.10 (TeX Live 2024) (kpathsea version 6.4.0)
(/home/fabrice/texlive/2024/texmf-dist/metapost/base/mpost.mp
(/home/fabrice/texlive/2024/texmf-dist/metapost/base/plain.mp
Preloading the plain mem file, version 1.005) ) (./logo.mp
>> exp
! Isolated expression.
<to be read again>
(
f->begingroup.exp(
-(EXPR2))*(-cos((EXPR2))+sin((EXPR2))+1)endgroup
<for(-1.5708)> ((EXPR0),f((EXPR0))
).. ENDFOR
graph_of_function->...R4):(x,(SUFFIX2)(x))..endfor
((EXPR4),(SUFFIX2)((EXPR4)...
l.33 C_f = graph_of_function(f,xmin,xmax,0.01)
;
[...]
Transcript written on logo.log.
MPtoPDF 1.4.1 : error while processing mp file
Respuesta1
Enlace a las fuentes de código que está utilizando.Un nombre es bueno, pero habría sido mucho más fácil responder si hubiera incluido un enlace. Ahora también podría darte una mejor explicación, porque podría señalar específicamente el contexto que te falta.
En ausencia de dicha información, simplemente compílela con
mpost --mem=metafun --numbersystem=double <filename>.mp
Publicaría una imagen, pero el último Okular-on-X produce resultados que alejarían a los lectores de MetaPost permanentemente y eso sería de lo más injusto.
solíaLa respuesta de Franck Pastorpero no tengo idea si eso es lo que usó el OP. Supongo metafun
que está haciendo el trabajo aquí. double
simplemente duplica la precisión.