Drawing tanx=1/x Graph with Tikz from 0 to 10pi

  • Context: MHB 
  • Thread starter Thread starter Dustinsfl
  • Start date Start date
  • Tags Tags
    Drawing Graph
Click For Summary
SUMMARY

The forum discussion focuses on generating the graph of the equation tan(x) = 1/x using TikZ in LaTeX, specifically for the interval [0, 10π]. Users suggest utilizing the foreach command to handle vertical asymptotes of tan(x) and recommend clipping the graph for better visibility. The discussion also highlights the importance of using the TikZ manual (version 2.10) for guidance and mentions alternative tools like Desmos and Mathematica for graphing. Additionally, participants discuss labeling techniques for the graph using the foreach command to display π/2 increments.

PREREQUISITES
  • Familiarity with TikZ version 2.10 for LaTeX
  • Understanding of trigonometric functions, specifically tan(x) and 1/x
  • Knowledge of LaTeX syntax for drawing and plotting
  • Experience with the foreach command in TikZ
NEXT STEPS
  • Research TikZ manual section 19.5 for advanced graphing techniques
  • Learn how to use the clip command in TikZ for better graph visibility
  • Explore labeling techniques in TikZ using the foreach command
  • Investigate using gnuplot to compute coordinates for TikZ graphs
USEFUL FOR

Mathematicians, LaTeX users, and educators looking to create high-quality graphs of trigonometric functions in their documents.

Dustinsfl
Messages
2,217
Reaction score
5
How can I get Tikz to produce this, tanx = 1/x, graph from [0,10\pi]?
 
Physics news on Phys.org
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
 
Evgeny.Makarov said:
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.
 
dwsmith said:
How can I get Tikz to produce this, tanx = 1/x, graph from [0,10\pi]?
Use Desmos! (Click on the graph to enlarge it.)

[graph]hsieolxfjp[/graph]
 
Opalg said:
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.
 
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.
 

Attachments

  • tan1.png
    tan1.png
    4.3 KB · Views: 87
Evgeny.Makarov said:
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?
 
dwsmith said:
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.
 
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:
  • #10
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$};
}
 
  • #11
Evgeny.Makarov said:
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?
 
  • #12
dwsmith said:
If I add (0.25cm), will it adjust the text size?

I made some adjustments and got it.
 
  • #13
dwsmith said:
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).

dwsmith said:
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$};
 

Similar threads

  • · Replies 3 ·
Replies
3
Views
3K
Replies
6
Views
2K
  • Poll Poll
  • · Replies 11 ·
Replies
11
Views
3K
Replies
5
Views
3K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 2 ·
Replies
2
Views
1K
  • · Replies 8 ·
Replies
8
Views
7K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 2 ·
Replies
2
Views
1K