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

  • Thread starter Thread starter Dustinsfl
  • Start date Start date
  • Tags Tags
    Drawing Graph
AI Thread Summary
The discussion focuses on creating a graph of the equation tan(x) = 1/x using TikZ from the interval [0, 10π]. Participants suggest drawing the graphs of tan(x) and 1/x separately due to tan(x)'s vertical asymptotes, recommending the use of the foreach command for managing intervals. There are also suggestions to use gnuplot for better quality and to label points on the graph using the foreach command. Some users share code snippets for drawing ticks and labels, while others discuss the limitations of the foreach command in recognizing patterns. The conversation emphasizes the importance of precise coding in TikZ for accurate graph representation.
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: 76
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
Views
3K
  • Poll Poll
Replies
11
Views
3K
Replies
5
Views
2K
Replies
8
Views
6K
Replies
4
Views
2K
Replies
2
Views
1K
Replies
1
Views
2K
Back
Top