\documentclass{article}
%  Author:  Brian S. Marks
%  Title:  scr.tex
%  This latex file should be paired with the Matlab script scr.m, which 
%  creates the included yl.tex file.  The Matlab script creates a set of 
%  TikZ lines that create the figure of a circle circumscribed by a 
%  regular triangle, circumscribed by a circle, circumscribed by a 
%  square, etc.  

\usepackage{tikz}
\usepackage{verbatim}

\begin{comment}
:Title: Circumscribed triangles and circles


The figure is a unit circle, circumscribed by an equilateral triangle, 
circumscribed by another circle, circumscribed by a square, circumscribed 
by a circle, etc.  (Interestingly enough, the radius of the circle sequence
converges, so it makes for a pretty picture.)  A Matlab script computes the 
circle radii and the polygons' vertices and creates a set of TikZ lines in 
a separate file for the rendering of the image.  Then a separate tex file is 
used to include the created TikZ file.

The Matlab script `src.m`_ used to generate the figure is:

.. sourcecode:: matlab

	%  This Matlab script creates a set of LaTeX lines to generate a picture in
	%  TikZ.  The picture is a unit circle, circumscribed by an equilateral
	%  triangle, circumscribed by a circle, circumscribed by a square, 
	%  circumscribed by a circle, etc.  Here Matlab is used to generate the 
	%  sizes of the figures and the locations of the vertices of the polygons,
	%  while TikZ is used to render a beautiful image.  
	
	fo = fopen('yl.tikz','w');
	
	%  The initial circle's radius:
	r1 = 1;
	
	%  These commands are used to render a plot in Matlab, just to check that
	%  things are working correctly.  Uncomment if desired:
	%
	% t = linspace(0,2*pi,100);
	% x1 = r1*cos(t); y1 = r1*sin(t);
	% plot(x1,y1,'linewidth',1.5);
	% hold on
	% axis square; axis equal;
	
	fprintf(fo,'\\begin{tikzpicture}[scale=0.5]\n');
	fprintf(fo,'\\draw (0,0) circle (1pt);\n');
	fprintf(fo,'\\draw[blue] (0,0) circle (1);\n');
	
	
	for n = 3:50
	    %  Radius of the next circle:
	    r2 = r1*sec(pi/n);
	
	    %  Angle between successive vertices of the polygon:
	    dtheta1 = 2*pi/n;
	
	    %  (x,y) coordinates of the vertices of the polygon:
	    px2 = r2*cos((0:n)*dtheta1);
	    py2 = r2*sin((0:n)*dtheta1);
	    
	    %  Issue the plotting commands in TikZ:
	    fprintf(fo,'\\draw[red] ');
	    for j = 1:n
	        fprintf(fo,'(%f,%f) -- ',px2(j),py2(j));
	    end
	    fprintf(fo,'cycle;\n');
	
	    %  More Matlab plotting commands, if desired:
	    %    x1 = r2*cos(t); y1 = r2*sin(t);
	    %    plot(x1,y1,'linewidth',1.5);
	    
	    %  Draw the next circle, and then iterate to the next polygon:
	    fprintf(fo,'\\draw[blue] (0,0) circle (%f);\n',r2);
	    r1 = r2;
	end
	
	fprintf(fo,'\\end{tikzpicture}\n');
	
	fclose(fo);

To compile the example you will need the files:

- `yl.tikz`_
- `src.m`_

.. _yl.tikz: yl.tikz
.. _src.m: scr.m

\end{comment}

\begin{document}

\begin{center}
	\input{yl.tikz}
\end{center}

The radius of the innermost circle is 1.  It is circumscribed by an 
equilateral triangle, which is circumscribed by a circle, and so forth.  
The radius of the circle as the number of figures approaches $\infty$ is 
\[
  \prod_{n=3}^\infty \sec\left(\frac{\pi}{n}\right) \approx 8.7
\]


\end{document}

