Tikz 上的勒贝格积分

Tikz 上的勒贝格积分

我最近发现了 tikz 包,我对此完全陌生。我开始阅读手册并设法做了一些非常简单的事情,但我仍然对这门语言有很多困难。

我正在写一些关于勒贝格积分的笔记,我想把图形放在下面,但我不知道如何绘制它们。在此处输入图片描述

答案1

我不知道如何使用 tikz 来实现这一点,但由于您到目前为止还没有得到答案,我向您介绍了如何在 MetaFun 中实现类似功能。这可能会让您了解如何使用 tikz。路径fun是您的函数,N是颜色的数量。

\startMPpage[offset=1dk]
numeric u ; u := 1cm ;
path fun ; fun := ((0.2,-0.2){right} .. 
                   (3.5,5.5){right} .. 
                   (6,2.3){right} .. 
                   (9,3.1){right} .. 
          {dir -30}(12,-0.25)) ;
numeric miny ; miny := 0 ;
numeric maxy ; maxy := ypart urcorner boundingbox fun ;
numeric N ; N := 8 ;
numeric level[] ;
rgbcolor levelcolor[] ;
path ip[] ;
path tmppath ;

for i = 1 upto N :
    level[i] := miny + (maxy - miny)*i/N ;
    message(level[i]) ;
    % levelcolor[i] := (i/N)[red,yellow] ;
    levelcolor[i] := ( uniformdeviate(1), uniformdeviate(1), uniformdeviate(1) ) ;
    ip[i] := fun firstintersectionpath ((-infinity,level[i]) -- (infinity,level[i])) ;
endfor

for i = 1 upto N :
    for j = 0 step 2 until (length(ip[i]) - 1) :
        tmppath := ( (point j of ip[i]) -- 
                     (point (j + 1) of ip[i]) -- 
                     (xpart point (j + 1) of ip[i], 0) -- 
                     (xpart point j of ip[i], 0) -- 
                     cycle ) ;
        % unfill tmppath ; % no gain
        fill tmppath scaled u withcolor levelcolor[i] ;
    endfor
    if i < N :
        draw ((0,level[i]) -- (0, level[i+1])) scaled u withpen pencircle scaled 2 withlinecap butt withcolor levelcolor[i] ;
    fi
endfor ;

draw fun scaled u ;
drawdoublearrow ( (0,6) -- origin -- (13,0) ) scaled u ;
\stopMPpage

将文件另存为lebesgue.tex并运行以context lebesgue.tex获取lebesgue.pdf。使用N = 8我们得到

勒贝格积分

颜色是随机的。N = 25我们得到

更精确的勒贝格积分

最后,通过改变的定义levelcolor[i],我们得到

相同但颜色不同

相关内容