我希望大家都一切安好。
我一直在做一个项目,其中一部分需要我绘制一个相当复杂的复合函数(两个或多个函数合二为一)。代码如下:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{setspace}
\usepackage{graphicx}
\usepackage[bottom]{footmisc}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{pgf,tikz,pgfplots}
\pgfplotsset{compat=1.8}
\usepackage{mathrsfs}
\usetikzlibrary{arrows}
\onehalfspacing
\rmfamily
\setlength{\parindent}{0pt}
\usepackage{geometry}
\geometry{
paper=a4paper,
top=3cm,
bottom=4cm,
left=2.5cm,
right=2.5cm,
headheight=14pt,
footskip=1.2cm,
headsep=1.2cm,
}
\begin{document}
\begin{figure}[h!]
\centering
\caption{Graph showing the angular radius $\phi$ as a function of angle of the incidence $\theta_i$, for $n_2=1.33$, the general refractive index of water for light (Hecht, 2003):}
\vspace{2mm}
\centering
\begin{tikzpicture}
\begin{axis}[
grid=both,
grid style={line width=.1pt, draw=gray!10},
xmin = 0,
xmax = 2,
ymin = 0,
ymax = 1,
axis lines = middle,
enlargelimits = true,
restrict y to domain=0:2
samples=400
]
\addplot[color = red,domain=0:1.570796327] {(4*asin(0.75187969924 * sin(x))) - 2*sin(x)};
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}
这里的关键代码是传递给 addplot 运算符的内容:(4*asin(0.75187969924 * sin(x)))
- 2*sin(x),这就是我遇到的问题。它只是产生了错误的形状。这是它应该产生的结果,如 desmos 上所示:
这是它在 LaTeX 上产生的结果:
我在 TeXMaker 上使用最新版本的 LaTeX。
我已经尝试解决这个问题好几个小时了。我尝试过使用deg()
和rad()
什么都没有,但都不起作用。任何能为我指明正确方向的帮助都将不胜感激!
答案1
您可以设置 pgfplots 以在三角函数中使用辐射点。
尝试
\pgfplotsset{trig format plots=rad}
在你的序言中。(例如之后\pgfplotsset{compat=1.8}
)
编辑(完整工作示例):
\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{pgf,tikz,pgfplots}
\pgfplotsset{compat=1.8}
\pgfplotsset{trig format plots=rad}
\usepackage{mathrsfs}
\usetikzlibrary{arrows}
\begin{document}
\begin{figure}[h!]
\centering
\caption{Graph showing the angular radius $\phi$ as a function of angle of the incidence $\theta_i$, for $n_2=1.33$, the general refractive index of water for light (Hecht, 2003):}
\vspace{2mm}
\centering
\begin{tikzpicture}
\begin{axis}[
grid=both,
grid style={line width=.1pt, draw=gray!10},
xmin = -1,
xmax = 3,
ymin = -1,
ymax = 2,
axis lines = middle,
enlargelimits = true,
% restrict y to domain=0:2
samples=400
]
\addplot[color = red,domain=0:3] {(4*asin(0.75187969924 * sin(x))) - 2*x};
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}
生成: