在 tikz 图中创建随机数以用于公式

在 tikz 图中创建随机数以用于公式

我想创建一个类似这样的工作表https://pastebin.com/fSuS4C9f但对于圆的周长,目前不必担心答案部分,但我甚至无法获得要创建的随机数。

 \documentclass[border=1cm]{standalone}

 \usepackage{tikz}

 \pgfmathsetseed{\number\pdfrandomseed}
     \newcommand{\Circ}{%
     \pgfmathsetmacro{\r}{random(1,10)}}
     \pgfmathsetmacro{\pi}{3.14}

 \begin{document}
     \begin{tikzpicture} 

 
            \draw[fill=none](0,0) circle (1.0) node [black,yshift=-1.5cm] {};
            \draw[fill=black](0,0) circle (1 pt) node [above] {\tiny o};
            \draw[](0,0) -- (1,0) node [midway,above] {\Circ};

         \end{tikzpicture}

      Circumference = 2  \times \r  \times  \pi

 \end{document}

我真的只是希望它能起作用,稍后我会尝试将它放入其他代码中。

答案1

LaTeX 是一款功能强大的排版程序,但它并非为数学而设计的。而且 LaTeX 编程也有点过时了。如果您能使用 CAS(计算机代数系统)进行数学运算和使用更强大的编程语言,您的生活将变得更轻松。

幸运的是,你可以使用鼠尾草包。它为您提供智者它是与 Mathematica 类似的开源 CAS,只不过是免费的。因此,虽然人们喜欢使用 Lua 进行更精确的计算,但 Sage 不仅能提供导数、积分、矩阵、图论等功能,还能提供更多功能。您还可以使用 Python 编程语言,它不仅更易于阅读/理解,而且很容易找到可以解决问题的代码。

我注意到你之前有一个关于自动计算二次方程。答案涉及大量编程以及一些警告。使用 Sage,求解二次公式是内置这将使您能够快速获得更准确的答案——这只是一个习惯如何将 Sage 答案放入 LaTeX 文档的问题。对于您上面提出的问题,请尝试以下代码:

\documentclass[border=1cm]{article}
\usepackage{sagetex,tikz}
\begin{document}
\begin{sagesilent}
p = 3.14
r = randint(1,10)
output = r""
output += r"\begin{tikzpicture}"
output += r"\draw[fill=none](0,0) circle (1.0) node [black,yshift=-1.5cm] {};"
output += r"\draw[fill=black](0,0) circle (1 pt) node [above] {\tiny o};"
output += r"\draw[](0,0) -- (1,0) node [midway,above] {%s};"%(r)
output += r"\end{tikzpicture}"
\end{sagesilent}
\sagestr{output}

\noindent Circumference = $2\times \pi \times r = 2\pi(\sage{r})$.
Using the approximation of $\pi \approx \sage{p.n(digits=3)}$ we get a decimal answer 
of $\sage{(2*p*r).n(digits=4)}$ units.
\end{document}

在Cocalc中运行的结果是: 在此处输入图片描述

了解正在发生的事情的一些基本信息:首先,有一个 3 步编译过程。首先,LaTeX 必须无错误运行,然后运行 ​​Sage 进行计算,然后运行最终文档上的 LaTeX(包括 LaTeX 和 Sage 计算)。因此,tikz依赖于 Sage 计算的代码不能存在于第一个 LaTeX 编译中。它将在编译的第二步(在 Sage 中)创建,并放入最终文档中,作为该过程的第 3 步。这与圆周的计算不同。通过放入\sage{}LaTeX 文档,LaTeX 将在 Sage 运行后填写未知内容。这可以(并且确实)存在于第一个编译中。其次,r"" 是一个,raw string它允许它处理有问题的内容,例如\。第三,sagesilent环境是完成“草稿”的地方。在r为半径创建一个随机整数后,我们将它放入以下行中的代码中:output += r"\draw[](0,0) -- (1,0) node [midway,above] {%s};"%(r)。%s 用于字符串数据。告诉%()我们填充的内容,即r。原始字符串(您的tikzpicture代码)被放入 LaTeX 文档中,并带有sagestr{}sagesilent结束之后)。最后请注意,Sage 可以帮助您进行计算。这些数值数据应在您处于数学模式时插入。代码\sage{p.n(digits=3)}设置有效数字。请参阅这里在 Sage 文档中。

LaTeX、Python 和 CAS 是创建文档的 3 个非常强大的工具。缺点是 Sage 不是 LaTex 发行版的一部分。您可以 1. 打开一个免费的可钙帐户(每当我的文档需要 Sage/Python 时我都会使用我的帐户)或 2。下载将 Sage 导入到您的计算机并使其与您的 LaTeX 发行版配合使用。这可能会有问题,具体取决于您的计算机和计算机技能。

使用 Sage 可以让你接触到大量复杂的数学知识,从而避免你重新发明轮子。它有一定的学习难度,但这个网站上有很多例子来说明它的强大和实用性。例如,这里这里这里这里这里这里

编辑:(回答下面评论中的问题)混淆通常在于 3 步流程。在 Cocalc 中,一切都已自动化,以方便使用。在 LaTex 中,除非您设置系统以使事情同样轻松运行,否则情况并非如此。您表明您已在 Cocalc 中成功运行代码。参见下图。 在此处输入图片描述

按下顶部显示的“构建”按钮,将使用 LaTeX 处理您的代码(显示在右下角的矩形中),然后使用 Sage 进行处理,最后再次使用 LaTeX 进行处理。这就是为什么速度比您预期的要慢的原因;按下“构建”按钮即可完成所有 3 个步骤。您可能没有注意到您现在拥有的所有文件。单击显示的文件按钮(左上角)并查看您拥有的内容: 在此处输入图片描述

您将看到您熟悉的 LaTex 文件,例如日志文件以及奇怪的文件,例如.sagetex.sage文件(来自 Sage 处理)。请注意,如果您对输出结果满意,您可以选择带有 .pdf 文件的框并将其下载到您的计算机,这样就大功告成了。

您说“但我似乎无法让 Tex 运行它”,这表明您想在sagetex不使用 Cocalc 的情况下在计算机上运行它。在这种情况下,您必须先下载 Sage 并将其安装到您的计算机上。如果您在 .tex 文件上运行 LaTeX,那么您只执行了 3 个必需步骤中的第一步。它将创建 .sagetex.sage 文件,您现在必须使用 Sage 来处理它。我已经解释过了这里;它涉及打开终端,切换到包含 .tex 文件的目录,然后加载 .sagetex.sage 文件。第二步就完成了。现在您必须再次处理 LaTeX 文件(第 3 步)。它现在拥有 Sage 的结果并将它们放入您的文档中。除非您将 IDE 配置为只需单击一下即可完成这些操作(就像 Cocalc 所做的那样),否则这听起来很乏味。例如,我解释这里如何配置 TeXmaker 将命令链接在一起,以便单击一次按钮即可完成。

通过不使用 Cocalc,您必须确保随着 LaTeX 和 Sage 版本的演变,它们能够正常通信。这一页解释了一些问题。

我以前在电脑上本地运行,sagetex但多年来,通信中断了,你必须找出原因。因此,现在我只在想sagetex在文档中使用时才使用 Cocalc。麻烦少了。

相关内容