函数的不完全迹

函数的不完全迹

为什么曲线没有画到点 x1 ?

 \starttext
 \startMPcode
  xmin := -1; xmax := 5; ymax :=4 ;ymin:=-4; u := 1cm;
  pickup pencircle scaled 1pt ;
  a:=2-sqrt(3);
  b:=2+sqrt(3);
  def compute_curve(suffix f)(expr xmin, xmax, xinc) =
  ((xmin,f(xmin))
  for x=xmin+xinc step xinc until xmax:
  .. (x,f(x))
 endfor )
enddef;
vardef f(expr x) = x*x-4*x+1 enddef;
path pts_f;
pts_f := compute_curve(f, a, b, .1) scaled u;
path axe_x,axe_y;
path screen;
screen=(xmin,ymin)*u--(xmax,ymin)*u--(xmax,ymax)*u--(xmin,ymax)*u--cycle;
axe_x = (xmin,0)*u -- (xmax,0)*u;
axe_y = (0,ymin)*u -- (0,ymax)*u;
drawarrow axe_x; 
drawarrow axe_y;
draw pts_f withcolor blue withpen pencircle scaled 1pt;
label.lrt(btex $x_1$ etex,(a,0)*u);
label.lrt(btex $x_2$ etex,(b,0)*u);
draw (a,0)*u withpen pencircle scaled 3bp;
draw (b,0)*u withpen pencircle scaled 3bp;
clip currentpicture to screen;
\stopMPcode 
\stoptext

在此处输入图片描述

答案1

您有a=0.26794b=3.73206,因此增加0.1会导致最终点为x=3.66815,因为3.66815+0.1>b(也考虑舍入误差)。

你应该打电话

pts_f := compute_curve(f, a, b, (b-a)/50) scaled u;

可得50分(可自行决定抽样数量)。

在此处输入图片描述

在此处输入图片描述

使用mpost -numbersystem=double可能更加精确(我不知道如何在 ConTeXt 中启用它):我们会

a=0.26794919243112281
b=3.7320508075688772
(b-a)/50=0.069282032302755092

最后使用的点有

x=3.7320508075688732

使用默认数字系统,我们有

a=0.26794
b=3.73206
(b-a)/50=0.06927

最后使用的点有

x=3.73169

相关内容