为什么 pgf 计算反正弦值会错误(很多)?

为什么 pgf 计算反正弦值会错误(很多)?

合理的不精确是可以接受的,但与计算器的偏差整整 10 度是不可接受的。

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{math}
\tikzmath
  { \angle=sin(9.00000/9.48683)^-1;
  } % should be 71.56445
\begin{document}
  \angle % 60.38649
\end{document}

答案1

计算器通常表示反正弦功能为(可能是因为写在按钮上更紧凑),因为sin-1反正弦(也就是说,一个根据正弦值计算角度,另一个根据角度计算正弦值)。

然而反正弦(x)不是等于罪(x)-1。如果从更极端的角度来看,就很容易看出这一点。反正弦(0)为零(请注意,WolframAlpha 将输入转录arcsin(0)为,不要与 混淆),但是sin-1(0)sin(0)-1罪(0) -1给出稍微大一点的结果;-)

sin-1(x)表示正弦X,其中上标-1不是指数。而sin(x)-1互惠的罪(x),在这种情况下-1是指数,这意味着1/sin(x)(参见此主题以及 Crowley 对此答案的评论)。然而,很少有系统能够理解这种符号(可能是 Wolfram 和其他一两个系统),因为很难教会解析器在同一个位置后面的a 和 a 具有完全不同的含义。再加上 TeX 编程的通常难度,您就会明白为什么这种方法行不通。sin-1(x)^-1sin^2

如果使用正确的符号,pgfmath则可以正确计算:

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{math}
\tikzmath { \anglea=sin(9.00000/9.48683)^-1; }
\tikzmath { \angleb=asin(9.00000/9.48683); }
\begin{document}
  \anglea % 60.38649
  \space
  \angleb % 71.56462
\end{document}

也是xfp;-)

\documentclass[border=5mm]{standalone}
\usepackage{xfp}
\begin{document}
  \fpeval{sind(9.00000/9.48683)^-1} % 60.39779524788624
  \space
  \fpeval{asind(9.00000/9.48683)} % 71.56510517950239
\end{document}

相关内容