
Usando pgfplots dibujo el isocontorno de una función f(x,y): líneas como f(x,y)=C con C como número elegido.
Vea el siguiente ejemplo con:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{center}
\begin{tikzpicture}[scale=0.85]
\begin{axis}[ xmin=-4,xmax=12, ymin=-4,ymax=4,x=1cm,y=1cm,at={(-4cm,-4cm)}]]
\addplot +[no markers,
raw gnuplot,
thick,dashed,
empty line = jump, % not strictly necessary, as this is the default behaviour in the development version of PGFPlots
] gnuplot {
set contour base;
set cntrparam levels discrete -2,-1.1,-1.4;
unset surface;
set view map;
set isosamples 500;
set samples 500;
splot -2/sqrt((x-7.5)^2+y^2)-3/sqrt((x-0.5)^2+y^2);
};
\end{axis}
\end{tikzpicture}
\end{center}
\end{document}
Puedo dibujar los vectores de gradiente en cualquier punto dado, pero no sé cómo colocarlos en diferentes ubicaciones de la curva de isocontorno.
¿Cómo podría obtener las posiciones de varios puntos en esa curva azul discontinua?
Respuesta1
Puede utilizar el hecho de que puede acceder a las coordenadas de los trazados de contorno. Dado que se trata de varios segmentos desconectados, pos
no basta con especificarlos. Más bien, también debe utilizar pos segment
, que se explica en la p. 358 del manual de pgfplots v1.16. Sin embargo, a priori no está claro qué segmento tiene qué índice. Para simplificar las cosas, agregué un estilo que agrega la flecha de degradado, que es ortogonal a la tangente del contorno en este punto.
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{center}
\begin{tikzpicture}[gradient arrow/.style={
insert path={coordinate[pos=#1,sloped,
above=\pgfkeysvalueof{/tikz/ga/above}] (aux-1)
coordinate[pos=#1,sloped,
above=\pgfkeysvalueof{/tikz/ga/above}+\pgfkeysvalueof{/tikz/ga/length}] (aux-2)
(aux-1) edge[/tikz/ga/arrow]
(aux-2)}},ga/.cd,
above/.initial=3pt,
length/.initial=12pt,
arrow/.style={-stealth,black,solid,thick}]
\begin{axis}[scale=0.85,xmin=-4,xmax=12, ymin=-4,ymax=4,x=1cm,y=1cm,at={(-4cm,-4cm)}]]
\addplot +[no markers,name=contour,
raw gnuplot,
thick,dashed,
empty line = jump, % not strictly necessary, as this is the default behaviour in the development version of PGFPlots
] gnuplot {
set contour base;
set cntrparam levels discrete -2,-1.1,-1.4;
unset surface;
set view map;
set isosamples 500;
set samples 500;
splot -2/sqrt((x-7.5)^2+y^2)-3/sqrt((x-0.5)^2+y^2);
}
[pos segment=1]
[gradient arrow/.list={0.2,0.8}]
[pos segment=3,/tikz/ga/arrow/.append style={red},/tikz/ga/length=10pt]
[gradient arrow/.list={0.2,0.8}];
\end{axis}
\end{tikzpicture}
\end{center}
\end{document}