컴파일 오류: 격리된 표현식

컴파일 오류: 격리된 표현식

작동하지 않는 이 코드를 컴파일하여 생성된 오류를 이해하지 못합니다(Franck Pastor의 아이디어를 기반으로 함).두 곡선 사이의 면적

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;

콘솔 출력은 다음과 같습니다.

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

답변1

사용 중인 코드 소스에 대한 링크를 제공하세요.이름도 좋지만 링크를 포함했다면 답변하기가 훨씬 쉬웠을 것입니다. 나는 또한 당신이 놓치고 있는 맥락을 구체적으로 지적할 수 있기 때문에 이제 당신에게 더 나은 설명을 줄 수 있습니다.

그러한 정보가 없으면 다음과 같이 컴파일하십시오.

mpost --mem=metafun --numbersystem=double <filename>.mp

이미지를 게시하고 싶지만 최신 Okular-on-X는 독자가 MetaPost를 영구적으로 사용하지 못하게 하는 출력을 생성하며 이는 가장 불공평합니다.

나는 사용했다프랑크 목사의 답변하지만 그것이 OP가 사용한 것인지는 모르겠습니다. metafun여기서 일을 하고 있는 것 같아요 . double정밀도가 두 배로 늘어납니다.

여기에 이미지 설명을 입력하세요

관련 정보