[LaTeX] Plottare funzioni defn. a tratti
In questi giorni sto scrivendo degli appunti in LaTeX di analisidue e mi e' capitato di voler disegnare una funzione definita a tratti ma di trovarmi spiazzato. Per esempio ...voglio disegnare il seguente cappello da strega:
Ho pensato di provare a far mangiare la funzione `plotting_witch_hat()` a GNUOctave via:
Domande: ci sono idee migliori? Il codice puo' essere scritto meglio? Per disegnare funzioni a tratti questa e' l'unica?
\begin{equation*} f_n(x) = \begin{cases} n^2x & 0 \le x \le 1/n \\ 2n - n^2x & 1/n < x \le 2/n \\ 0 & 2/n < x \le 2 \end{cases} \end{equation*}
Ho pensato di provare a far mangiare la funzione `plotting_witch_hat()` a GNUOctave via:
function [] = plotting_witch_hat(index_of_sequence) x = 0:0.01:2 y = [] for i = 1:length(x) if x(i) <= 1/index_of_sequence y = [y, (index_of_sequence)^2 * x(i)] continue end if 1/index_of_sequence < x(i) && x(i) <= 2/index_of_sequence y = [y, 2*index_of_sequence - (index_of_sequence)^2 * x(i)] continue end if 2/index_of_sequence < x(i) && x(i) <= 2 y = [y, 0] continue end end plot(x,y);
Domande: ci sono idee migliori? Il codice puo' essere scritto meglio? Per disegnare funzioni a tratti questa e' l'unica?
Risposte
Non mi sembra proprio un cappello, non manca un tratto orizzontale a sinistra? Comunque potresti usare PGFPlots, anche se per funzioni parametriche sembra un po' complicato da usare (o forse non sono abbastanza pratico io).
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage{tikz} \usepackage{pgfplots} \pgfplotsset{compat=newest} \begin{document} \foreach \n in {1.1, 2, 3, 10} {% \pgfmathsetmacro{\oneovern}{1/\n} % Can't parse 1/\n inside xtick="" and \pgfmathsetmacro{\twoovern}{2/\n} % can't use \pgfmathparse either. \begin{tikzpicture} \begin{axis}[ title={$f_{\n}(x)$}, xtick= { 0, \oneovern, \twoovern, 2}, xticklabels={$0$, $\frac{1}{n}$, $\frac{2}{n}$, $2$}, ytick= { 0, \n}, yticklabels={$0$, $n$}, ] \addplot[domain=0:\oneovern] expression {\n*\n*x}; \addplot[domain=\oneovern:2/\n] expression {2*\n - \n*\n*x}; \addplot[domain=\twoovern] expression {0}; \end{axis} \end{tikzpicture} } \end{document}