![在 mathparse 微积分中指定精度](https://linux22.com/image/422623/%E5%9C%A8%20mathparse%20%E5%BE%AE%E7%A7%AF%E5%88%86%E4%B8%AD%E6%8C%87%E5%AE%9A%E7%B2%BE%E5%BA%A6.png)
我已经定义了函数 f(x) = (sqrt(x)-1)/(x-1),我需要计算 f(x) 的几个值。我编写了以下代码,但是,我无法指定 f(x) 的精度,例如,5 位小数。有人能帮我吗?
\documentclass[tikz, border=.5cm]{standalone}
\usepackage[portuguese]{babel}
\usepackage[utf8]{inputenc}
\usepackage{tkz-fct}
\usepackage{multido}
\usetikzlibrary{calc,math}
\usepackage{float}
\usepackage{amsmath}
\newcommand\f[1]{ \pgfmathparse{((#1)^0.5 - 1)/(#1 -1)} \pgfmathresult }
\begin{document}
\foreach \x in {2,1.5,1.2,1.19,1.189,...,1.001}{
\begin{tikzpicture}[scale=0.8]
\clip (-3.5,-2) rectangle (4,2);
\node[above] (2) at (0,0) {Vamos avaliar o limite $\displaystyle\lim_{x \to 1} \frac{\sqrt{x}-1}{x-1}$:};
\node[below] (2) at (0,0) {O valor da função em $\pgfmathprintnumber{\x}$ é \boxed{$\f{\x}$}};
\end{tikzpicture}
}
\end{document}
答案1
我担心 Ti 中的标准浮点引擎钾Z/PGF 不适合这项任务。
使用 引擎,您可以获得更好的结果expl3
。
\documentclass{article}
\usepackage[portuguese]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{xfp}
\newcommand\f[1]{%
\fpeval{round((sqrt(#1)-1)/(#1-1),5)}%
}
\ExplSyntaxOn
\NewDocumentCommand{\fpforeach}{o mmm +m}
{
\IfValueT{#1}
{
\clist_map_inline:nn { #1 } { #5 }
}
\fp_step_inline:nnnn { #2 } { #3 } { #4 } { #5 }
}
\ExplSyntaxOff
\begin{document}
\fpforeach[2,1.5,1.2]{1.19}{-0.001}{1.001}{%
O valor da função em $#1$ é \boxed{$\f{#1}$}\par
}
\end{document}
该命令\f
定义函数,四舍五入到小数点后五位。
我添加了一个“for each”循环,其中可选参数是要首先评估的“异常值”列表,然后您可以指定起点、步骤和终点。最后一个参数是循环中每个值传递到的对象,用于#1
表示当前值。
以下是结果的第一行。
最后几行。
我个人反对用这种方式来表达限制,因为不是很好地解释了极限是如何工作的(因为必须向后计算,而不是向前计算)。无论如何,我承认很多书都用到了这一点。不幸的是。;-)