
У меня есть два графических решения неравенства (и одно алгебраическое решение). Одно решение должно быть отображено на числовой прямой, а другое — на декартовой плоскости. Я хочу, чтобы числовая прямая и ось x в декартовой плоскости были выровнены по вертикали.
Неравенство имеет вид
\begin{equation*} \frac{6}{x - 5} \geq x \end{equation*}
и набор решений — $(-\infty,-1) \cup (5,6]$. Итак, на первом графике я хочу сделать отметки и подписи для -1
, 5
, и 6
и провести толстую линию слева от -1
и между 5
и 6
. С помощью TikZ
я использовал следующие команды.
\draw[line width=2pt, -latex] ($(-1,0) +(-3pt,0pt)$) -- (-2.9,0);
\draw[fill] (-1,0) circle (3pt);
\draw (5,0) circle (3pt);
\draw[fill] (6,0) circle (3pt);
\draw[line width=2pt] ($(5,0) +(3pt,0pt)$) -- ($(6,0) +(-3pt,0pt)$);
Я не уверен, какие команды здесь pgfplots
будут уместны.
Код для числовой строки не компилировался. Я поместил строки комментариев перед большинством команд для числовой строки.
Кстати, я бы хотел, чтобы точки (-1,-1)
и (6,6)
были отмечены черным кружком или синим кружком. Почему точка (-1,-1)
отмечена синим ромбом, а точка (6,6)
отмечена красным кружком?
\documentclass{amsart}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{tikz}
\usetikzlibrary{calc,positioning,intersections}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}
\begin{document}
\noindent {\textbf{1.) }}Determine the solution set to
\begin{equation*}
\frac{6}{x - 5} \geq x .
\end{equation*}
Graph the solution set on the real number line.
\vskip0.2in
\noindent {\bf Solution} \vskip1.25mm
\noindent $q(x) = 6/(x - 5)$ is a rational function defined on ${\mathbb{R}}\setminus\{5\}$. On the interval $(5, \, \infty)$, $q(x) \geq x$ if, and only if,
\begin{equation*}
(x - 6)(x + 1) = x^{2} - 5x - 6 \leq 0 ,
\end{equation*}
or equivalently, $5 < x \leq 6$. Likewise, on the interval $(-\infty, \, 5)$, $q(x) \geq x$ if, and only if, $x \leq -1$. \rule{1.5ex}{1.5ex}
\vskip0.2in
\noindent \hspace*{\fill}
\begin{tikzpicture}
\begin{axis}[name=plot1, %height=0.5in, width=5in, clip=false,
% xmin=-10,xmax=16,
% xlabel=$x$,
% axis line style={latex-latex},
% xtick={},
% extra x ticks={-1,5,6},
% extra x tick labels={$-1$,5,6},
% extra x tick style={xticklabel style={below}},
% xlabel style={at={(ticklabel* cs:1)},anchor=north west}
]
\end{axis}
\begin{axis}[name=plot2, at={($(plot1.south)+(0,-0.75cm)$)}, anchor=north, height=5in, width=5in,
axis lines=middle, clip=false,
xmin=-10,xmax=16,
ymin=-10,ymax=16,
restrict y to domain=-10:16,
xtick={\empty},ytick={\empty},
ticklabel style={font=\tiny,fill=white},
extra x ticks={-1,6},
extra x tick labels={$-1$,6},
axis line style={latex-latex},
xlabel=$x$,ylabel=$y$,
enlargelimits={abs=0.25cm},
xlabel style={at={(ticklabel* cs:1)},anchor=north west},
ylabel style={at={(ticklabel* cs:1)},anchor=south west}
]
\addplot[samples=501,domain=-10:4.4, blue] {6/(x - 5)};
\addplot[samples=501,domain=5.4:16, blue] {6/(x - 5)} node[above,pos=0.9,font=\footnotesize]{$y=\dfrac{6}{x-5}$};
\addplot[latex-latex, samples=2, domain=-10:15] {x} node[anchor=west, pos=1, font=\footnotesize]{$y=x$};
\addplot[dashed, latex-latex, samples=2, domain=-10:16] (5,x) node [pos=0.05, anchor=north, font=\footnotesize, sloped] {$x=5$};
\addplot coordinates{(-1,-1)};
\addplot coordinates{(6,6)} node[anchor=west,font=\footnotesize]{$(6,6)$};
\end{axis}
\end{tikzpicture}
\end{document}
решение1
PGFplots позволяет использовать все обычные функции TiкZ в его {axis}
окружении. У вас есть доступ к системе координат через axis cs
так, что \node at (axis cs: 3, 4) {};
размещает узел вИкс-уКоордината (3, 4)
. В версии 1.11 axis cs
стала системой координат по умолчанию, используемой TiкZ в {axis}
средах, поэтому вам не нужно указывать его axis cs
каждый раз, а вместо этого можно просто ввести \node at (3, 4) {};
.
Ниже я привожу два очень похожих способа рисования (того, что я думаю) того, что вам нужно. Оба они рисуют две соответствующие кривые ( x
и 6 / (5 - x)
), но первый также используетИкс-ось как числовая прямая, тогда как второй вариант помещает числовую прямую над графиком.
Версия 1: Все в одном
В этом решении используется один набор осей как для отображения соответствующих уравнений неравенства, так и для обозначения части числовой прямой, для которой неравенство выполняется:
\documentclass{amsart}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amsthm}
\usepackage{thmtools}
\declaretheoremstyle[
headfont=\normalfont\bfseries,
numbered=unless unique,
bodyfont=\normalfont,
spaceabove=1em plus 0.75em minus 0.25em,
spacebelow=1em plus 0.75em minus 0.25em,
qed={\rule{1.5ex}{1.5ex}},
]{solstyle}
\declaretheorem[
style=solstyle,
title=Solution,
refname={solution,solutions},
Refname={Solution,Solutions}
]{solution}
\usepackage{enumitem}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\begin{document}
\begin{enumerate}[label=\bfseries\arabic*)]
\item Determine the solution set to
\begin{equation*}
\frac{6}{x - 5} \geq x .
\end{equation*}
Graph the solution set on the real number line.
\begin{solution}
We first observe that there is a singularity at \(x = 5\) as we consider the
region above and below \(5\) separately:
\begin{description}
\item[\(\boldsymbol{x > 5}\)] Over this interval, the denominator is always
greater than zero. As a result, multiplying both sides by \(x-5\) we
obtain:
\begin{align*}
& 6 \geq x^{2} - 5x \\
\Leftrightarrow & 0 \geq x^{2} - 5x - 6 = (x-6)(x+1)
\end{align*}
Over the given domain, \(x+1\) is always positive; therefore, we must have
that \(x-6 \leq 0\) and conclude that the inequality is satisfied only for
\(5 < x \leq 6\).
\item[\(\boldsymbol{x < 5}\)] Over this internal, the denominator is always
less than zero. As a result, multiplying both sides by \(x-5\) flips the
inequality and we obtain:
\begin{align*}
& 6 \leq x^{2} - 5x \\
\Leftrightarrow & 0 \leq x^{2} - 5x - 6 = (x-6)(x+1)
\end{align*}
Over the given domain, \(x-6\) is always negative; therefore, we must have
that \(x+1 \leq 0\) and conclude that the inequality is satisfied only for
\(x \leq -1\).
\end{description}
The two relevant curves for this inequality are plotted below with the
appropriate domain marked in red along the \(x\)-axis:
\begin{center}
\begin{tikzpicture}
\begin{axis}[
width=\linewidth,
height=0.7\linewidth,
axis lines=middle,
xlabel=\(x\),
ylabel=\(y\),
xlabel style={at={(ticklabel* cs:1)},anchor=west},
ylabel style={at={(ticklabel* cs:1)},anchor=south},
clip=false,
domain=-5:10,
samples=501,
restrict y to domain=-10:16,
clip=false,
]
\addplot [blue] {6/(x - 5)}
node [above, pos=0.95, font=\footnotesize] {\(y=\dfrac{6}{x-5}\)};
\addplot [latex-latex] {x}
node[anchor=west, pos=1, font=\footnotesize]{\(y=x\)};
\draw [dashed, latex-latex]
(5,\pgfkeysvalueof{/pgfplots/ymin}) -- (5, \pgfkeysvalueof{/pgfplots/ymax})
node [pos=0.05, below, sloped, font=\footnotesize] {\(x=5\)};
\fill [blue] (-1, -1) circle [radius=2pt]
node [anchor=north, font=\footnotesize] {\((-1, -1)\)};
\fill [blue] (6, 6) circle [radius=2pt]
node [anchor=west, font=\footnotesize] {\((6, 6)\)};
\draw [-latex, red, very thick] (-1, 0) -- (\pgfkeysvalueof{/pgfplots/xmin}, 0);
\draw [red, very thick] (5, 0) -- (6, 0);
\fill [black] (-1, 0) circle [radius=2pt];
\draw [draw=black, fill=white] (5, 0) circle [radius=2pt];
\fill [black] (6, 0) circle [radius=2pt];
\end{axis}
\end{tikzpicture}
\end{center}
\end{solution}
\end{enumerate}
\end{document}
Версия 2: Числовая прямая сверху
Если вы хотите, чтобы числовая прямая была отделена от оси (как вы намеревались сделать в исходном вопросе), то в принципе все правильно:
\begin{center}
\begin{tikzpicture}
\begin{axis}[
name=plot1,
width=\linewidth,
height=11em,
axis x line=middle,
axis y line=none,
clip=false,
domain=-5:10,
axis line style={latex-latex},
]
\addplot [draw=none] {0};
\draw [-latex, red, very thick] (-1, 0) -- (\pgfkeysvalueof{/pgfplots/xmin}, 0);
\draw [red, very thick] (5, 0) -- (6, 0)
node [above, pos=0] {\(5\)}
node [above, pos=1] {\(6\)};
\fill [black] (-1, 0) circle [radius=2pt]
node [red, above] {\(-1\)};
\draw [draw=black, fill=white] (5, 0) circle [radius=2pt];
\fill [black] (6, 0) circle [radius=2pt];
\end{axis}
\begin{axis}[
at=(plot1.south),
anchor=north,
width=\linewidth,
height=0.7\linewidth,
axis lines=middle,
xlabel=\(x\),
ylabel=\(y\),
xlabel style={at={(ticklabel* cs:1)},anchor=west},
ylabel style={at={(ticklabel* cs:1)},anchor=south},
clip=false,
domain=-5:10,
samples=501,
restrict y to domain=-10:16,
clip=false,
]
\addplot [blue] {6/(x - 5)}
node [above, pos=0.95, font=\footnotesize] {\(y=\dfrac{6}{x-5}\)};
\addplot [latex-latex] {x}
node[anchor=west, pos=1, font=\footnotesize]{\(y=x\)};
\draw [dashed, latex-latex]
(5,\pgfkeysvalueof{/pgfplots/ymin}) -- (5, \pgfkeysvalueof{/pgfplots/ymax})
node [pos=0.05, below, sloped, font=\footnotesize] {\(x=5\)};
\fill [blue] (-1, -1) circle [radius=2pt]
node [anchor=north, font=\footnotesize] {\((-1, -1)\)};
\fill [blue] (6, 6) circle [radius=2pt]
node [anchor=west, font=\footnotesize] {\((6, 6)\)};
\end{axis}
\end{tikzpicture}
\end{center}
Дополнительные примечания
Во-первых, я взял на себя смелость очистить ваш пример и использовать такие среды, как enumerate
, description
и создал solution
среду, которая автоматически позаботится о форматировании для вас. Хотя наличие \texbf{1) }
и \vskip1em
делает работу, это не лучший способ использовать LaTeX. Вы должны писать то, что выиметь в видувместо того, чтобы писать то, что вы хотитевидеть. То есть вместо \textbf{1) }
, \textbf{2) }
, иметь пронумерованный список; и вместо \textbf{Solution: } ... \rule{1.5ex}{1.5ex}
, иметь {solution}
среду.
Преимущество написания того, что выиметь в видузаключается в том, что если вы хотите изменить внешний вид решений, вы можете сделать это в одном месте, вместо того чтобы просматривать весь документ и изменять каждый экземпляр.
Еще несколько мелочей:
- По какой-то причине
{axis}
среда, похоже, требует наличия хотя бы одной\addplot
команды. Я подозреваю, что это потому, что она нужна для вычисления диапазона обеих осей, даже если указаныxmin
,xmax,
ymin
и . Поскольку я не хочу ничего строить для числовой прямой, я использовал . Я не могу найти никаких упоминаний об этом требовании в документации PGFplots.ymax
\addplot [draw=none] {0};
- Когда PGFplots вычисляет положение всех меток, кажется, требуется минимальная высота. При рисовании числовой прямой я изначально использовал
height=0pt
, но это привело к ошибкам, поэтому вместо этого я использовалheight=11em
. Это имеет дополнительное преимущество, так как мне больше не нужно настраивать координаты,plot1.south
так как вертикальной высоты базовой линии достаточно. - Вместо того, чтобы объявлять
samples
иdomain
при каждом\addplot
вызове, я объявляю эти свойства для всей оси. Это делает код немного чище, а также гарантирует, что все графики будут нарисованы по всей области (например, я бы предпочел, чтобы линия неy=x
останавливалась на полпути). Однако, если это предполагаемое поведение, having\addplot [domain=-5:0] {x};
переопределит axis-widedomain
. - Подобно предыдущему примечанию, наличие
restrict y to domain
в{axis}
параметрах делает это изменение работающим для каждой\addplot
команды в этой среде. Кроме того,restrict y to domain
отбрасывает точки, которые находятся за пределами указанного домена. Вам не нужно строить график6 / (5-x)
в двух отдельных\addplot
вызовах, потому что любое значение, которое оказывается за пределами указанногоудомен автоматически отбрасывается. - Что касается двух предыдущих пунктов, думайте о
domain
иrestrict y to domain
как о настройках общего окна просмотра для всего графика, а PGFplots затем сам разберется, что рисовать. - Я использую
\pgfkeysvalueof{/pgfplots/xmin}
(и аналогичный) для того, чтобы получить значениеxmin
,ymin
иymax
вместо того, чтобы жестко кодировать их. Это означает, что если я хочу изменить, гдеу-ось запускается и останавливается, линия асимптоты автоматически корректируется. - Вместо того, чтобы использовать
\addplot
для рисования линииx=5
, я использую явные координаты. Это в основном потому, что я обнаружил, что поведение PGFplots иногда немного непоследовательно. - Вместо того,
\addplot coordinates{-1,-1};
чтобы рисовать одну точку, я использовал один из основных TiкКоманды Z. Во-первых, мы на самом деле не строим еще одну кривую, а вместо этого аннотируем ее, так что это\addplot
уже не кажется тем, что нам нужно. Кроме того, наличие дополнительной\addplot
команды будет мешать записям легенды и циклу стиля графика, поэтому ваш первоначальный график имел различные формы и цвета, хотя вы их не указывали. - Я выбрал
width=\linewidth
так, чтобы график заполнял ширину текущей строки. Что касаетсяheight=0.7\linewidth
, это произвольно (я мог бы использоватьheight=5cm
), но обоснование использования\linewidth
заключается в том, что если я изменю форматирование документа, соотношение ширины и высоты графика останется прежним, и он всегда гарантированно займет ширину строки. Что касается0.7
в частности , я обычно использую ,0.62
потому что это гарантирует, что график следуетЗолотое сечение, но в конкретном случае этого графика я посчитал, что он выглядит слишком сплющенным, поэтому вместо этого я использовал0.7
.