如何通过其参数/图像列表定义 pgf 函数

如何通过其参数/图像列表定义 pgf 函数

我想pgf通过其参数/图像列表来定义一个函数。

让我举个例子。设$E=\{1,2,3,4,5,6,7,9\}$ (在我感兴趣的例子中,它总是第一个整数)并设定义 $f: E \to F$如下

\[(f(i))_{1\leq i\leq n}=(3,7,9,-44,135,6,7645,4,9) \]

(这里$F=\{-44,3,7,9,135,7645\}$

我想定义$f$\myfunction以便pgf可以执行以下代码

\pgfmathrandominteger{\a}{1}{9}
\pgfmathsetmacro{\fa}{int(\myfunction{\a})}. 
The image of $\a$ by $f$ is $\fa$. 

(我用它来生成考试的随机题目)

我在文档中找不到有关如何操作的内容,我不确定这是否可行。任何帮助都将不胜感激。

答案1

这是一个解决方案:

\documentclass{article}
\usepackage{tikz}
\pgfmathsetseed{\number\pdfrandomseed}

\foreach[count=\c] \value in {3,7,9,-44,135,6,7645,4,9}{
  \expandafter\xdef\csname myfunction\c\endcsname{\value}
}
\def\myfunction#1{\csname myfunction#1\endcsname}

\tikzset{
  declare function={
    myfunction(\a) = \myfunction{\a};
  },
}

\begin{document}
\pgfmathrandominteger{\a}{1}{9}
\pgfmathsetmacro{\fa}{int(myfunction(\a))}. 
The image of $\a$ by $f$ is $\fa$. 
\end{document}

答案2

一个可能更容易理解的替代方法:只需将图像存储在一个数组中并读出它们。(pgf从 0 开始计数,所以我在第 0 个位置添加了一个条目。)

\documentclass{article}
\usepackage{pgf,pgffor}
\begin{document}
\def\myimg{{0,3,7,9,-44,135,6,7645,4,9}} % zeroth entry because pgf starts counting at 0
\foreach \X in {1,...,12}
{\pgfmathrandominteger{\a}{1}{9}\pgfmathtruncatemacro{\imga}{\myimg[\a]}
The image of $\a$ under $f$ is $f(\a)=\imga$. \par}
\end{document}

在此处输入图片描述

相关内容