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

Discussion Overview

The discussion revolves around creating a graph of the equation tan(x) = 1/x using TikZ from the interval [0, 10π]. Participants explore various methods for plotting the functions tan(x) and 1/x, addressing challenges related to vertical asymptotes and graphing techniques.

Discussion Character

  • Technical explanation
  • Mathematical reasoning
  • Debate/contested

Main Points Raised

  • Some participants inquire about the specifics of graphing the equation, questioning whether to plot both tan(x) and 1/x on the specified interval.
  • There are suggestions to use the foreach command to handle the vertical asymptotes of tan(x) by plotting it in separate intervals.
  • One participant proposes using Desmos as an alternative to TikZ for graphing, while others express a preference for TikZ for aesthetic reasons in LaTeX documents.
  • Multiple code snippets are shared, demonstrating different approaches to plotting the functions, including the use of gnuplot for better quality graphs.
  • Participants discuss labeling the graph, with suggestions to use the foreach command for placing labels at specific intervals, though there is uncertainty about the correct syntax and implementation.
  • There is a mention of potential issues with the predefined command for π in TeX and the complexities of the foreach command when iterating through specific values.

Areas of Agreement / Disagreement

Participants express differing views on the best methods to graph the functions and label the axes, indicating that no consensus has been reached on the optimal approach.

Contextual Notes

Some code snippets provided have not been tested, and there are discussions about the limitations of the foreach command in recognizing certain patterns. Participants also note the need for explicit definitions in some cases.

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: 88
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
4K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 2 ·
Replies
2
Views
1K