Documentación / Formas / Expresión

Forma Expresión

La forma Expresión es el corazón matemático de todo modelo de Modellus. En ella defines las ecuaciones, los parámetros, las ecuaciones diferenciales, las recurrencias y las condiciones que hacen avanzar la simulación.

Forma Expresión en la pizarra con ecuaciones visibles

Visión general

Una forma Expresión contiene una o varias sentencias matemáticas escritas con una sintaxis parecida a LaTeX en un campo matemático de MathLive. Cada sentencia ocupa una línea. Todas las formas Expresión de un modelo comparten un único sistema de cálculo, así que los nombres de los términos deben ser únicos en todo el modelo, no solo en cada forma.

Usa varias formas Expresión pequeñas agrupadas por temas (parámetros, ecuaciones, magnitudes derivadas) para que tu modelo quede ordenado y se lea con facilidad.

Leer una expresión

Cuando una forma contiene dos o más ecuaciones, se muestran como un único bloque con los signos igual alineados en una misma columna: los primeros miembros se alinean a la derecha contra el signo igual, los segundos miembros a la izquierda a continuación de él, y el bloque queda centrado en la tarjeta. Solo se alinea el signo igual principal de cada línea; un signo igual dentro de una condición, una fracción o un paréntesis se queda donde está. Una forma con una sola ecuación se muestra como siempre. La alineación es solo de presentación: el modelo sigue guardando una línea simple por cada ecuación.

Tres formas Expresión con ecuaciones alineadas y colores según su significado

Cada parte de una expresión se colorea según lo que significa:

Cuando el modelo no puede leer una fila, la propia tarjeta te lo dice, sin esconderlo tras un aviso al pasar el ratón. La fila se escribe en rojo y lleva una banda que la cruza, la tarjeta se enmarca en rojo para que la distingas desde el otro lado de la pizarra y un panel al pie de la tarjeta explica el motivo, en el mismo idioma que el resto del editor. Donde a la fila le falta algo —un valor, un paréntesis—, se dibuja un hueco punteado en el lugar que le corresponde, igual que el hueco sin rellenar de una plantilla; si lo que falta está dentro de una fracción o de una raíz, se subraya esa fracción o esa raíz, porque no se puede señalar el lugar con más precisión que el símbolo que lo contiene. Un símbolo que no puede ir donde se ha escrito se subraya allí mismo. El panel se abre cada vez que te acercas a la tarjeta —con el puntero encima, con la tarjeta seleccionada o con el cursor dentro— y muestra solo los avisos, sin título encima y sin nombrar la fila delante de cada uno: al señalar un aviso se ilumina la fila a la que corresponde y, al hacer clic en él, el cursor se coloca allí. Las filas se comprueban a medida que escribes, no solo cuando sales, salvo la fila en la que está el cursor: una fila está a medio escribir mientras la estás escribiendo, así que no se revisa hasta que la dejas.

Los colores indican una familia, no un tono fijo. Cada uno se toma de los tokens del tema --math-* y después se ajusta a la tarjeta sobre la que se pinta: el tono se mantiene, la luminosidad cambia hasta que el texto destaca con claridad sobre el fondo y, a la vez, el color se intensifica. Una tarjeta blanca recibe colores profundos y saturados; una tarjeta negra o gris oscuro, colores brillantes; si cambias el color de la tarjeta, la expresión se vuelve a pintar al instante. Todos los colores mantienen al menos el contraste que piden las pautas de accesibilidad, y los operadores quedan un grado más discretos que las variables. El cursor y el resaltado de la selección siguen la misma regla, igual que el color del texto de la tarjeta, que es con el que se dibujan los paréntesis, las rayas de fracción y los signos de raíz: se deja exactamente como lo elegiste y solo se aclara cuando, si no, la tarjeta lo haría desaparecer. Nada de esto llega al modelo: una expresión guardada o copiada nunca lleva color.

Barra de herramientas

Barra de herramientas de la forma Expresión con el selector de color, el selector de atajos y el botón de eliminar

La barra de herramientas aparece al seleccionar una forma Expresión. Te ofrece:

Tipos de sentencia

Cada línea de una forma Expresión se interpreta como uno de estos tipos de sentencia:

Tipo Sintaxis Ejemplo Descripción
Parámetro name = value g = 9.8 Un valor constante. No depende de otros términos ni de la variable independiente.
Función name = expression E = ½·m·v² Un valor calculado que depende de otros términos o de la variable independiente.
Diferencial dx/dt = expression dx/dt = v Ecuación diferencial ordinaria de primer orden. Necesita un valor inicial en las propiedades de la forma.
Recurrencia x_{n} = expression x_{n} = x_{n-1} + v·Δt Definición paso a paso. El subíndice indica el desfase en pasos.
Condicional name = \begin{cases}...\end{cases} v = { 0 & t=0 \\ a·t & otherwise } Definición a trozos. Necesita al menos dos ramas.
Función con argumento f(t) = expression h(t) = v₀·t - ½·g·t² Notación con el argumento explícito (solo estética; se comporta igual que una Función).
Visualización expression F = ma Solo una etiqueta visual. La calculadora no la calcula.

Operadores aritméticos

Operador LaTeX Tecla Descripción
Suma++Suma de dos expresiones
Resta--Diferencia de dos expresiones
Multiplicación\cdot*Multiplicación explícita (símbolo ·)
Multiplicación implícita2x2xCoeficiente seguido de un nombre o un paréntesis
División en línea//Notación a/b en línea
Fracción\frac{a}{b}/ (en posición de numerador)Fracción vertical con calidad de presentación
Potencia^{n}^Potenciación
Factorialx!!Factorial en notación posfija para enteros no negativos
Raíz cuadrada\sqrt{x}\sqrtRaíz cuadrada
Cambio de signo-x-Opuesto (signo menos unario)

Nota sobre el factorial: el factorial usa notación posfija (n!) y está pensado para valores enteros no negativos.

Operadores de comparación

Se usan en las ramas de las condiciones (\begin{cases}):

Operador LaTeX Significado
==Igual a
>>Mayor que
<<Menor que
≥\ge o \geqMayor o igual que
≤\le o \leqMenor o igual que
≠\neqDistinto de

Las condiciones se pueden encadenar (por ejemplo, 0 < x < 1) o combinar con \lor (O) y \land (Y). La palabra clave \text{otherwise} hace de rama «en otro caso».

Funciones incorporadas

Categoría Función LaTeX Argumentos
TrigonométricasSeno\sin\left(x\right)1
Coseno\cos\left(x\right)1
Tangente\tan\left(x\right)1
Cotangente\cot\left(x\right)1
Secante\sec\left(x\right)1
Cosecante\csc\left(x\right)1
Trigonométricas inversasArcoseno\arcsin\left(x\right)1
Arcocoseno\arccos\left(x\right)1
Arcotangente\arctan\left(x\right)1
HiperbólicasSeno hiperbólico\sinh\left(x\right)1
Coseno hiperbólico\cosh\left(x\right)1
Tangente hiperbólica\tanh\left(x\right)1
LogarítmicasLogaritmo neperiano\ln\left(x\right)1
Logaritmo decimal\log\left(x\right)1
De dos argumentosMáximo\max\left(a, b\right)2
Mínimo\min\left(a, b\right)2
Resto (módulo)\mod\left(a, b\right)2
UtilidadesSignosign\left(x\right)1 — devuelve -1, 0 o 1
Aleatoriornd\left(x\right)1 — número decimal aleatorio en [0, x]
Entero aleatorioirnd\left(x\right)1 — número entero aleatorio en [0, x]
Parte enteraint\left(x\right)1 — trunca a un entero
Redondeoround\left(x\right)1 — redondea al entero más próximo
OtrasDeterminante\det\left(x\right)1
Todas las llamadas a funciones usan los delimitadores \left( y \right). Los paréntesis simples no son válidos en las llamadas a funciones. El campo matemático los inserta automáticamente.

Constantes

NombreLaTeXValor
Pi\pi3.14159…
Número ee o \E2.71828…
g no es una constante incorporada. Defínela como parámetro: g = 9.8.

Sintaxis especial

Diferencia finita (Δ)

SintaxisSignificado
\Delta xx(actual) − x(anterior). Para la variable independiente: el tamaño del paso.
\Delta\left(expr\right)Diferencia finita aplicada a una subexpresión.

Subíndices (referencias a pasos)

SintaxisSignificado
x_{n-1}Valor de x en la iteración anterior
x_{n}Iteración actual (primer miembro de una recurrencia)
x_0Valor inicial de x (dígito suelto, sin llaves)
x_{0}Valor inicial (forma con llaves)

Términos indexados (referencias a elementos)

Un término puede representar muchos valores a la vez —por ejemplo, los osciladores de una onda— si se define sobre un índice de elemento en lugar de sobre el tiempo. El índice queda ligado por la asignación, así que nunca se convierte en una variable del modelo:

y\left[i\right] = A\cdot\cos\left(k\cdot i - \omega\cdot t\right)
SintaxisSignificado
y\left[i\right] = …Define y sobre índices de elemento; el segundo miembro se evalúa una vez por cada elemento que se pide
y\left[3\right]Elemento 3 de y
y\left[i\right]Elemento i, donde i es cualquier expresión
s = y + zSuperposición: s también es indexado y se suma elemento a elemento

Es un tercer espacio de índices, además de los dos anteriores: y_3 lee y en la iteración 3 y y\left(3\right) la lee cuando la variable independiente vale 3, mientras que solo los corchetes leen un elemento. Un término indexado no tiene un único valor, así que se leen sus elementos en lugar de mostrarse como un número.

El objeto Osciloscopio los lee: escribe los términos indexados en sus Ondas y cada uno se dibuja a lo largo de su retícula, una traza por fila. Dos ondas viajeras sumadas así —una con -\omega\cdot t y otra con +\omega\cdot t— dan una onda estacionaria con nodos fijos. Un Piano publica uno: el acorde que está sonando, un elemento por muestra.

El objeto Onda mecánica funciona, en cambio, con un término simple. Escribe en su fila Onda un término que el propio modelo calcule —y=A\cdot\sin\left(\omega\cdot t\right)— y la cadena repite lo que ese término ha ido haciendo: en cada iteración entrega al primer oscilador el valor que el término acaba de tomar y desplaza un puesto el que tenía antes, de modo que la cadena guarda los últimos valores de la ejecución, los más antiguos en el extremo, y el movimiento la recorre a medida que avanza la ejecución. Guarda un valor por oscilador, así que Muestras indica también hasta dónde llega hacia atrás. Si escribes un nombre que el modelo no define, el objeto funciona al revés: calcula su onda a partir de su amplitud, frecuencia, velocidad y fase, y entrega al modelo, con ese nombre, lo que hace su oscilador de referencia. El nombre pasa a ser un término del modelo —aparece en todas las listas de términos, igual que un nombre que el modelo asigna—, así que puedes representarlo frente al tiempo, usarlo en una definición (z=2\cdot y) y sumarlo a la lectura de otro objeto (s=forward+back). Un nombre que el modelo sí define pertenece al modelo —una asignación, sobre el tiempo o sobre índices de elemento, se lee en lugar de sobrescribirse—, y un objeto que quitas de la pizarra se lleva su término con él.

Anotación de unidades

Añade unidades, solo de visualización, después de cualquier sentencia:

v = 10 \quad\textcolor{gray}{\mathrm{m/s}}

Las unidades son solo estéticas: el motor no las comprueba ni las convierte.

Nombres con punto (referencias a formas contenidas)

Haz referencia a términos de las formas contenidas en un sistema de referencia: body.x, particle.velocity.

Atajos de teclado

El campo matemático de MathLive admite estos atajos de teclado para escribir más rápido:

AcciónAtajoResultado
Abrir la paleta de plantillas ⌘. (macOS) · Ctrl+. (Windows/Linux) Elige una plantilla matemática en la paleta compacta
Potencia (superíndice) ^ x^2
Subíndice (índice) _ x_{t-1}
Cambio de signo ~ -x
Factorial ! n!
Raíz cuadrada # \sqrt{x}
Delta % \Delta x
Valor absoluto | \left|x\right|
Distinto <> x \ne y
Mayor o igual >= x \ge 1
Menor o igual <= x \le 1
Condición (a trozos) \ \begin{cases} 1 & t=0 \\ y & t\ge2 \end{cases}
O ⌥v (macOS) · Alt+v (Windows) x>0 \lor x<5
Y ⌥^ (macOS) · Alt+^ (Windows) x>0 \land x<5
Plantilla de derivada ⌥/ (macOS) · Alt+/ (Windows) \frac{dx}{dt}
Redondeo por defecto ⌥_ (macOS) · Alt+_ (Windows) \lfloor x \rfloor
Redondeo por exceso ⌘_ (solo macOS) \lceil x \rceil
Fracción ⌘/ (macOS) · Ctrl+/ (Windows) \frac{a}{b}
Punto de multiplicación * a \cdot b
Nueva línea (nueva sentencia) Enter —
Salir / siguiente hueco Tab —

Selector de atajos

Forma Expresión seleccionada con la barra de herramientas visible

Mientras editas, pulsa ⌘. en macOS o Ctrl+. en Windows/Linux para abrir la paleta de atajos. También puedes abrirla con el botón de la barra de herramientas.

Notación de integrales

Puedes escribir integrales con notación LaTeX, como \int_{a}^{b} f\left(x\right)\,\mathrm{d}x. Para obtener la parte entera, usa la función de utilidad int\left(x\right).

Panel de propiedades

Panel de propiedades de la forma Expresión

Cuando seleccionas una forma Expresión, el panel de propiedades muestra:

PropiedadDescripción
Variable independienteLa variable de la iteración (por defecto: t)
PasoEl incremento en cada iteración (Δt)
Inicio / FinIntervalo de la variable independiente
Valores inicialesValores de partida de las ecuaciones diferenciales y las recurrencias
EscenariosVarios conjuntos de valores iniciales para estudiar el efecto de los parámetros

Ejemplos

Cinemática sencilla

g = 9.8
v₀ = 20
θ = 45
vx = v₀·\cos\left(θ\right)
vy = v₀·\sin\left(θ\right) - g·t
\frac{dx}{dt} = vx
\frac{dy}{dt} = vy

Crecimiento de una población (recurrencia)

r = 0.05
P_{n} = P_{n-1}·\left(1 + r\right)

Velocidad definida a trozos

v = \begin{cases} 0 & t = 0 \\ a·t & 0 < t < 5 \\ a·5 & \text{otherwise} \end{cases}