Esta inquietud se puede solucionar de diversas formas, pero en este caso te enseñamos la que en nuestra opinión es la resolución más completa.
Solución:
Hay (al menos) tres posibilidades:
-
Construye un polinomio con las propiedades que quieras, como puntos que tiene que pasar, pendientes, mínimos, máximos, etc. Requiere una pequeña cantidad de matemáticas. Ver mi otra respuesta.
-
Hay una respuesta de Andrew usando las instalaciones de TikZ.
-
Para una curva falsa, elija los puntos que la curva tiene que pasar como el comienzo o el final de
draw
comandos, no como los controles. Además, utilice coordenadas relativas (precedidas por+
) como controles. Estos corresponderán a la tangente en este punto. Asegúrese de que los vectores de control en un punto apunten en direcciones opuestas. Pueden tener una longitud diferente, pero deben tener el mismo ángulo, de lo contrario, habrá una curva en este punto.
Ejemplo:k^*
es el punto final de la primera draw
y el punto de partida de la segunda, por lo que la curva pasará por k^*
. Los controles relacionados con k^*
son +(-1,2)
y +(0.5,-1)
. Tenga en cuenta que apuntan en direcciones opuestas. Cuanto más largo sea un vector de control, más tiempo intentará la curva seguir esta dirección.
documentclassminimal
usepackagetikz
usetikzlibrarycalc,arrows
begindocument
begintikzpicture[
scale=1.5,
axis/.style=very thick, ->, >=stealth',
important line/.style=thick,
dashed line/.style=dashed, thick,
every node/.style=color=black,
]
draw[axis] (0,0) -- (6,0) node(xline)[right] $k$;
draw[axis] (0,-2) -- (0,2) node(yline)[above] $dotk$;
draw (0,0) .. controls +(1.5,3) and +(-1,2) .. (4,0);
draw (4,0) .. controls +(0.5,-1) and +(-0.8,0.5) .. (6,-2);
fill[black] (4,0) circle (1pt) node[above right] $k^*$;
% just for the explanation
beginscope[->,blue,every node/.style=blue,sloped]
draw (0,0) -- node[yshift=1.5ex]$(1.5,3)$ ($(0,0)+(1.5,3)$);
draw (4,0) -- node[yshift=1.5ex]$(-1,2)$ ($(4,0)+(-1,2)$);
draw (4,0) -- node[yshift=-1.5ex]$(0.5,-1)$ ($(4,0)+(0.5,-1)$);
draw (6,-2) -- node[yshift=-1.5ex]$(-0.8,0.5)$ ($(6,-2)+(-0.8,0.5)$);
endscope
endtikzpicture
enddocument
Él hobby
está diseñado para facilitar la producción de una curva que pasa por puntos específicos. Se diseñó con curvas 2D en mente y necesita un poco de persuasión para dibujar gráficos honestos, pero aun así produce una curva razonable en esta situación.
documentclassarticle
%urlhttps://tex.stackexchange.com/q/582112/86
usepackagetikz
usetikzlibrarycalc,arrows,hobby
begindocument
begintikzpicture[
scale=1.5,
axis/.style=very thick, ->, >=stealth',
important line/.style=thick,
dashed line/.style=dashed, thick,
every node/.style=color=black,,
use Hobby shortcut
]
draw[axis] (0,0) -- (6,0) node(xline)[right] $k$;
draw[axis] (0,-2) -- (0,2) node(yline)[above] $dotk$;
draw (0,0) .. controls (0,2) and (2,2) .. (2,2);
draw (2,2) .. controls (4,2) and (4,0) .. (6,-2);
fill[black] (4,0) circle (1pt) node[above right] $k^*$;
draw[orange, ultra thick] ([out angle=70]0,0) .. (2,2) .. (4,0) .. (6,-2);
endtikzpicture
enddocument
Aquí hay una solución donde primero determinamos un polinomio que luego trazamos. La complejidad (grado) del polinomio depende del número de restricciones que queramos imponer. Suponemos que la función debe pasar por los puntos (0,0)
, (2,2)
y (4,0)
y opcionalmente también debe pasar por (6,-2)
. Esto significa que buscamos un polinomio cuadrático o cúbico (tres o cuatro grados de libertad).
Polinomio cuadrático:
p(x) = a + bx + cx^2
constraints: p(0)=0, p(2)=2, p(4)=0
solution: a=0, b=2, c=-1/2
I.e.: p(x) = 2x + x^2/2
Polinomio cúbico:
p(x) = a + bx + cx^2 + dx^3
constraints: p(0)=0, p(2)=2, p(4)=0, p(6)=-2
solution: a=0, b=8/3, c=-1, d=1/12
I.e.: p(x) = 8x/3 - x^2 + x^3/12
documentclassminimal
usepackagetikz
usetikzlibrarycalc,arrows
begindocument
begintikzpicture[
scale=1.5,
axis/.style=very thick, ->, >=stealth',
important line/.style=thick,
dashed line/.style=dashed, thick,
every node/.style=color=black,
]
draw[axis] (0,0) -- (6,0) node(xline)[right] $k$;
draw[axis] (0,-2) -- (0,2) node(yline)[above] $dotk$;
fill[black] (4,0) circle (1pt) node[above right] $k^*$;
draw[domain=0:6,blue,smooth] plot (x,2*x-x^2/2);
draw[domain=0:6,red,smooth] plot (x,8*x/3-x^2+x^3/12);
endtikzpicture
enddocument
Aquí tienes las comentarios y valoraciones
Te invitamos a amparar nuestra tarea poniendo un comentario y dejando una puntuación te estamos agradecidos.