Ciao,
ci sarebbe una soluzione tutta interna al mondo TeX, utlilizzando LuaLaTeX. Ecco il codice:
`% !TEX program = lualatex
\documentclass{standalone}
\usepackage{pgfplots}
\def\plotfx{%
\directlua{
local function f(x)
return 1-math.exp(-x)
end
tex.print(“\string\\addplot [thick,color=magenta] coordinates {“)
local frmt = “(\%0.5f, \%0.5f)”
local step = 0.05
for x=0,10,step do
local s = string.format(frmt, x,f(x))
tex.print(s)
end
tex.print(“};”)
}}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=0,
xmax=10,
ymin=0,
ymax=1.5,
xlabel=$N$,ylabel=$\dot{N}$,
width=7cm,height=7cm]
\plotfx
\end{axis}
\end{tikzpicture}
\end{document}`
Invece di eseguire i calcoli con la libreria matematica di pgf, chiamata in causa perché passi al comando \addplot una funzione come espressione analitica, si utilizza la libreria matematica di Lua per inserire nell’ambinete axis un comando \addplot per coordinate.
Non occorre in questo caso fornire l’opzione sample, perché i punti sono decisi dal valore assegnato alla variabile step.
Mentre per compilare il sorgente occorre utilizzare LuaLaTeX.
Probabilmente il meccanismo ti risulta poco chiaro, perché non conosci a fondo cosa è LuaTeX e cosa è LuaLaTeX, allo stesso modo di cosa
è TeX e cosa è LaTeX. Concentrati però solo sul codice Lua che viene chiamato all’interno della nuova macro \plotfx: con la funzione tex.print() non faccio altro che inserire istruzioni per pgfplots, come se le digitassi a mano.
Prima quindi, inserisco il comando \addplot con la direttiva coordinates,
poi “stampo” la sequenza di coordinate con un ciclo for
ed infine chiudo il comando \addplot con la necessaria parentesi e punto e virgola.
Concettualmente non c’è differenza nello scrivere un file di testo con le coordinate e richiamarlo poi in un comando addplot con la direttiva file, solo che il sorgente rimane uno solo ed è un po’ più comodo.
Ecco l’immagine del grafico:
[attachment=401]plotfx.png[/attachment]
Naturalmente rimane a tua scelta il motore matematico reale da usare per produrre i grafici che ti interessano, e che dipende da quanta capacità numerica è necessaria, ma sono d’accordissimo nell’usare pgfplots 😉
R.