[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}