![为什么 pgf 计算反正弦值会错误(很多)?](https://linux22.com/image/404580/%E4%B8%BA%E4%BB%80%E4%B9%88%20pgf%20%E8%AE%A1%E7%AE%97%E5%8F%8D%E6%AD%A3%E5%BC%A6%E5%80%BC%E4%BC%9A%E9%94%99%E8%AF%AF%EF%BC%88%E5%BE%88%E5%A4%9A%EF%BC%89%EF%BC%9F.png)
合理的不精确是可以接受的,但与计算器的偏差整整 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)
^-1
sin
^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}