Problemas con pgfmath

Problemas con pgfmath

Dibujé un gráfico de parábola y = 0.5 - a x^2que cruza el eje x en los puntos de "raíces" 0.75y -0.75tiene una curva en la coordenada (0, 0.5). Y quiero marcar un punto en la parábola, que tiene una coordenada 0.33 * \rootPositionen el eje x. (Aquí \rootPositionhay un número 0.75). Escribí el siguiente código

\documentclass[tikz]{standalone}
\usepackage{tikz, pgfmath} 

\begin{document}
\begin{tikzpicture} [scale=3, >=stealth]

\def\bendPosition{0.5};
\def\rootPosition{0.75};
\def\coeffA{\pgfmathdivide{\bendPosition}{\pgfmathpow{\rootPosition}{2}}};

\draw[thick] (-\rootPosition,0) parabola bend (0, \bendPosition) (\rootPosition, 0);

\def\arbitraryPosition{0.33 * \rootPosition};

\coordinate (arbitrary_point) at (\arbitraryPosition, \bendPosition - \coeffA* \pgfmathpow{\arbitraryPosition}{2}));

\filldraw[black] (arbitrary_point) circle(0.4pt);       
\end{tikzpicture}
\end{document}

Pero cuando compilo este código, aparece el error ! Incomplete \iffalse; all the text ignored after line 14, donde la línea 14 comienza con\coordinate (arbitrary_point)..

¿Qué ocurre?

Respuesta1

No debes utilizar el carácter de subrayado en los nombres de las macros, aunque TikZ lo maneja suficientemente bien en la mayoría de los casos. El carácter de subrayado es un comando de subíndice del modo matemático y puede evitarlo de forma segura con otros tipos.

El principal problema es que las operaciones matemáticas no se expanden a un resultado cuando se encuentran en la ruta. Guardan el resultado en una macro llamada \pgfmathresulty el analizador tiene que verla pero no los operadores matemáticos.

\begin{tikzpicture} [scale=3, >=stealth]
\def\bendPosition{0.5};
\def\rootPosition{0.75};
\pgfmathsetmacro\coeffA{\bendPosition/(\rootPosition)^2}
\draw[thick] (-\rootPosition,0) parabola bend (0, \bendPosition) (\rootPosition, 0);
\pgfmathsetmacro\arbitraryPosition{0.33 * \rootPosition}
\coordinate (arbitrary_point) at (\arbitraryPosition, {\bendPosition - \coeffA* (\arbitraryPosition)^2});
\filldraw[black] (arbitrary_point) circle(0.4pt);       
\end{tikzpicture}

ingrese la descripción de la imagen aquí

información relacionada