
Tenho duas soluções gráficas para uma inequação (e uma solução algébrica para ela). Uma solução deve ser exibida na reta numérica e a outra solução deve ser exibida no plano cartesiano. Quero que a reta numérica e o eixo x no plano cartesiano estejam alinhados verticalmente.
A desigualdade é
\begin{equação*} \frac{6}{x - 5} \geq x \end{equação*}
e o conjunto de soluções é $(-\infty,-1) \cup (5,6]$. Portanto, no primeiro gráfico, quero marcas de escala e rótulos para -1
, 5
e 6
e uma linha grossa desenhada à esquerda de -1
e entre 5
e 6
. Com TikZ
, usei os seguintes comandos.
\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)$);
Não tenho certeza de quais pgfplots
seriam os comandos apropriados.
O código da reta numérica não seria compilado. Coloquei linhas de comentários antes da maioria dos comandos da reta numérica.
A propósito, gostaria que os pontos (-1,-1)
fossem (6,6)
marcados com um círculo preto ou um círculo azul. Por que o ponto está (-1,-1)
marcado com um losango azul e o ponto (6,6)
marcado com um círculo vermelho?
\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}
Responder1
PGFplots permite que você use todas as funções usuais do TikZ dentro de seu {axis}
ambiente. Você tem acesso ao sistema de coordenadas através axis cs
do qual \node at (axis cs: 3, 4) {};
coloca um nó nox-simcoordenar (3, 4)
. Na versão 1.11, axis cs
tornou-se o sistema de coordenadas padrão usado pelo TikZ dentro dos {axis}
ambientes, então você não precisa especificar axis cs
todas as vezes e, em vez disso, pode apenas digitar \node at (3, 4) {};
.
Apresento abaixo duas formas bem parecidas de desenhar (o que eu acho) que você deseja. Ambos traçam as duas curvas relevantes ( x
e 6 / (5 - x)
), mas o primeiro também usa ox-axis como a reta numérica, enquanto o segundo coloca a reta numérica acima do gráfico.
Versão 1: tudo em um
Esta solução usa um conjunto de eixos para exibir as equações apropriadas para a desigualdade e rotular a parte da reta numérica para a qual a desigualdade é verdadeira:
\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}
Versão 2: linha numérica no topo
Se você deseja separar a reta numérica do eixo (como pretende na pergunta original), basicamente acertou:
\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}
Notas extras
Primeiramente tomei a liberdade de limpar seu exemplo e utilizar ambientes como o enumerate
, description
e criei um solution
ambiente para cuidar da formatação para você automaticamente. Embora tenha \texbf{1) }
e \vskip1em
trabalhe, não é realmente a melhor maneira de usar o LaTeX. Você deve escrever o que vocêsignificarem vez de escrever o que você querver. Ou seja, em vez de \textbf{1) }
, \textbf{2) }
, tenha uma lista enumerada; e em vez de \textbf{Solution: } ... \rule{1.5ex}{1.5ex}
, tenha um {solution}
ambiente.
A vantagem de escrever o que vocêsignificaré que se você quiser mudar a aparência das soluções, poderá fazê-lo em um só lugar, em vez de ter que percorrer todo o documento e alterar cada instância.
Algumas outras pequenas coisas:
- Por alguma razão, o
{axis}
ambiente parece exigir pelo menos um\addplot
comando. Suspeito que seja porque é necessário calcular o intervalo de ambos os eixos, mesmo quexmin
,xmax,
ymin
eymax
estejam todos especificados. Como não quero traçar nada para a reta numérica, usei\addplot [draw=none] {0};
. Não consigo encontrar nenhuma menção a esse requisito na documentação do PGFplots. - Quando o PGFplots calcula o posicionamento de todos os rótulos, parece exigir uma altura mínima. Ao desenhar a reta numérica, inicialmente usei a
height=0pt
, mas isso resultou em erros, então useiheight=11em
. Isso tem o benefício adicional de não precisar mais ajustar aplot1.south
coordenada, pois a altura vertical da linha de base é suficiente. - Em vez de declarar
samples
edomain
a cada\addplot
chamada, declaro essas propriedades para todo o eixo. Isso torna o código um pouco mais limpo e também garante que todos os gráficos sejam desenhados em todo o domínio (por exemplo, prefiro que a linha nãoy=x
pare no meio). Se esse for o comportamento pretendido, o have\addplot [domain=-5:0] {x};
substituirá o axis-widedomain
. - Semelhante à nota anterior, ter
restrict y to domain
nas{axis}
opções faz com que essa alteração funcione para todos os\addplot
comandos naquele ambiente. Além disso,restrict y to domain
descarta pontos que estão fora do domínio especificado. Você não precisa plotar6 / (5-x)
em duas\addplot
chamadas separadas porque qualquer valor que fique fora do especificadosimdomínio são automaticamente descartados. - Com relação aos dois pontos anteriores, pense
domain
nasrestrict y to domain
configurações da porta de visualização geral para todo o gráfico, e o PGFplots descobrirá o que desenhar. - Eu uso
\pgfkeysvalueof{/pgfplots/xmin}
(e análogo) para obter o valor dexmin
eymin
emymax
vez de codificá-los. Isso significa que se eu quiser mudar onde osim-axis inicia e para, a linha assíntota será ajustada automaticamente. - Em vez de usar
\addplot
para desenhar a linhax=5
, uso coordenadas explícitas. Isso ocorre principalmente porque achei o comportamento do PGFplots um pouco inconsistente às vezes. - Em vez de usar
\addplot coordinates{-1,-1};
para desenhar um único ponto, usei um dos Ti básicoskComandos Z. Em primeiro lugar, não estamos realmente traçando outra curva, mas sim anotando-a, então\addplot
já não parece o que precisamos. Além disso, ter o comando extra\addplot
irá atrapalhar as entradas da legenda e o ciclo de estilo de plotagem, por isso seu plot inicial tinha várias formas e cores, apesar de você não especificá-las. - Escolhi
width=\linewidth
para que o gráfico preencha a largura da linha atual. Quanto aheight=0.7\linewidth
, é arbitrário (eu poderia ter usadoheight=5cm
), mas a justificativa para usar\linewidth
é que se eu alterar a formatação do documento, a proporção da largura e altura do gráfico permanece a mesma e é sempre garantido que ocupará a largura da linha. Quanto ao0.7
em particular, eu normalmente uso0.62
porque garante que o enredo siga oproporção áurea, mas no caso particular deste gráfico achei que parecia um pouco achatado, então usei0.7
.