Welcome to our community

Be a part of something great, join today!

TiKZ tanx = 1/x

dwsmith

Well-known member
Feb 1, 2012
1,673
How can I get Tikz to produce this, tanx = 1/x, graph from [0,10\pi]?
 

Evgeny.Makarov

Well-known member
MHB Math Scholar
Jan 30, 2012
2,492
What do you mean by a graph of an equation? Do you want to draw the graphs of tan(x) and 1/x on that interval? See section 19.5 of the manual for v. 2.10. I am not sure how tan(x) would behave across the vertical asymptotes. It may be necessary to draw it on each interval $(-\pi/2+k\pi,\pi/2+k\pi)$ separately using the foreach command. You may need to reduce each interval or use the clip command to limit the graph vertically
 

dwsmith

Well-known member
Feb 1, 2012
1,673
What do you mean by a graph of an equation? Do you want to draw the graphs of tan(x) and 1/x on that interval? See section 19.5 of the manual for v. 2.10. I am not sure how tan(x) would behave across the vertical asymptotes. It may be necessary to draw it on each interval $(-\pi/2+k\pi,\pi/2+k\pi)$ separately using the foreach command. You may need to reduce each interval or use the clip command to limit the graph vertically
Thanks. I tried but I couldn't get it to work.
 

Opalg

MHB Oldtimer
Staff member
Feb 7, 2012
2,703

dwsmith

Well-known member
Feb 1, 2012
1,673
Use Desmos! (Click on the graph to enlarge it.)

[graph]hsieolxfjp[/graph]
I made one in Mathematica but I looking to make it for a LaTex document. If I can make it with Tikz, it will look nicer than
\includegraphics in LaTex.
 

Evgeny.Makarov

Well-known member
MHB Math Scholar
Jan 30, 2012
2,492
Code:
 \usetikzlibrary{arrows}
  \begin{tikzpicture}[>=stealth',x=.5cm,y=.5cm]
 \def\npi{3.1416}
 \def\periods{4}
 \draw[->] (-\npi/2,0) -- ({(\periods+.5)*\npi},0) node[below] {$x$};
 \draw[->] (0,-10) -- (0,10) node[left] {$y$};
 \clip (-\npi/2,-9.8) rectangle ({(\periods+.5)*\npi},9.8);
 \draw[thick,domain=0.05:{(\periods+.4)*\npi},samples=300,smooth] plot (\x,1/\x);
 \foreach \n in {0,...,4}
 \draw[thick,shift={(\npi*\n,0)},domain=-\npi/2+.1:\npi/2-.1,samples=100,smooth] plot (\x,{tan(\x r)});
 \end{tikzpicture}
gives

tan1.png

For a better quality, it may make sense to use gnuplot to compute the coordinates as described in the TikZ manual.
 

dwsmith

Well-known member
Feb 1, 2012
1,673
Code:
 \usetikzlibrary{arrows}
  \begin{tikzpicture}[>=stealth',x=.5cm,y=.5cm]
 \def\npi{3.1416}
 \def\periods{4}
 \draw[->] (-\npi/2,0) -- ({(\periods+.5)*\npi},0) node[below] {$x$};
 \draw[->] (0,-10) -- (0,10) node[left] {$y$};
 \clip (-\npi/2,-9.8) rectangle ({(\periods+.5)*\npi},9.8);
 \draw[thick,domain=0.05:{(\periods+.4)*\npi},samples=300,smooth] plot (\x,1/\x);
 \foreach \n in {0,...,4}
 \draw[thick,shift={(\npi*\n,0)},domain=-\npi/2+.1:\npi/2-.1,samples=100,smooth] plot (\x,{tan(\x r)});
 \end{tikzpicture}
gives

View attachment 355

For a better quality, it may make sense to use gnuplot to compute the coordinates as described in the TikZ manual.

Is there a command to tell it to label every pi/2 on the graph?
 

Evgeny.Makarov

Well-known member
MHB Math Scholar
Jan 30, 2012
2,492
Is there a command to tell it to label every pi/2 on the graph?
No, you'll need to do this using the \foreach command. I believe this was discussed in a recent thread.
 

dwsmith

Well-known member
Feb 1, 2012
1,673
Code:
\foreach \x in {0,\pi/2,...,5\pi}
\draw (\x,0) n\pi/2 (0.5cm);
Is this correct? Nope. This didn't work.
Isn't that saying from 0 to 5\pi increment by \pi/2 and at the location (x,0) draw n\pi/2 the size of .5cm?
 
Last edited:

Evgeny.Makarov

Well-known member
MHB Math Scholar
Jan 30, 2012
2,492
I have not tested this code.

Code:
%draw the ticks
\foreach \x in {1,...,10} \draw (\x*\npi/2,2pt) -- (\x*\npi/2,-2pt);
%draw labels n\pi/2 for odd n >= 3
\foreach \x in {3,5,...,9} \node[below] at (\x*\npi/2,0) {$\frac{\x\pi}{2}$};
%draw labels n\pi for n >= 2
\foreach \x in {2,...,5} \node[below] at (\x*\npi,0) {$\x\pi$};
\node[below] at (\npi/2,0) {$\frac{\pi}{2}$};
\node[below] at (\npi,0) {$\pi$};
It is also possible to use one \foreach, but since the labels are slightly different, I am not sure about ellipsis. All labels may need to be given explicitly.


Code:
\foreach \x/\xtext in {1/\frac{\pi}{2},2/\pi,3/\frac{3\pi}{2},4/2\pi} {
  \draw (\x*\npi/2,2pt) -- (\x*\npi/2,-2pt);
  \node at (\x*\npi/2,0) {$\xtext$};
}
 

dwsmith

Well-known member
Feb 1, 2012
1,673
I have not tested this code.

Code:
%draw the ticks
\foreach \x in {1,...,10} \draw (\x*\npi/2,2pt) -- (\x*\npi/2,-2pt);
%draw labels n\pi/2 for odd n >= 3
\foreach \x in {3,5,...,9} \node[below] at (\x*\npi/2,0) {$\frac{\x\pi}{2}$};
%draw labels n\pi for n >= 2
\foreach \x in {2,...,5} \node[below] at (\x*\npi,0) {$\x\pi$};
\node[below] at (\npi/2,0) {$\frac{\pi}{2}$};
\node[below] at (\npi,0) {$\pi$};
It is also possible to use one \foreach, but since the labels are slightly different, I am not sure about ellipses. All labels may need to be given explicitly.


Code:
\foreach \x/\xtext in {1/\frac{\pi}{2},2/\pi,3/\frac{3\pi}{2},4/2\pi} {
  \draw (\x*\npi/2,2pt) -- (\x*\npi/2,-2pt);
  \node at (\x*\npi/2,0) {$\xtext$};
}
If I add (0.25cm), will it adjust the text size?
 

dwsmith

Well-known member
Feb 1, 2012
1,673

Evgeny.Makarov

Well-known member
MHB Math Scholar
Jan 30, 2012
2,492
Code:
\foreach \x in {0,\pi/2,...,5\pi}
First, \pi is a predefined command in TeX. Second, the \foreach command is both powerful and fickle. I am not sure it can recognize the pattern in 0,\pi/2,...,5\pi. The safest way is to (1) give all variants explicitly, separated by commas, (2) iterate over natural numbers, as in \foreach \x in {1, ..., 10} or (3) iterate over natural numbers with a given step, as in \foreach \x in {1,3, ..., 9}. Then you can use \x in an arithmetic expression inside a coordinate. For more information, see the section about \foreach (I believe it is in the chapter about utilities).

Code:
\draw (\x,0) n\pi/2 (0.5cm);
To print text, use either

\draw (1,1) node {$x$};

or

\node at (1,1) {$x$};