Saltar al contenido
Guía de Varlig
Inicio de Varlig

Sumatorios, resolución de ecuaciones y cálculo

Esta página explica cómo sumar o multiplicar una serie de términos, encontrar dónde se cumple una ecuación, derivar una expresión, ya sea como fórmula o en un punto concreto, y calcular integrales definidas. Te servirá cuando un problema requiera la notación Σ o Π, cuando no puedas despejar fácilmente una ecuación a mano, o cuando quieras comprobar una derivada o el área bajo una curva de tus ejercicios.

Todas estas funciones reciben un nombre de variable como uno de sus argumentos, como la k de sum(k^2, k, 1, 10). Ese nombre solo existe dentro de la llamada, así que nunca cambia un valor con el mismo nombre en otra parte de la nota.

Sumas y productos finitos

calc
sum(k, k, 1, 100) da 5,050
sum(k^2, k, 1, 10) da 385
summation(2*k - 1, k, 1, 10) da 100
product(k, k, 1, 5) da 120

Los argumentos son la expresión, la variable, el primer valor y el último valor. Ambos extremos se incluyen, así que sum(k, k, 1, 100) suma 1 + 2 + … + 100. summation es otro nombre de sum. La tercera línea muestra que los diez primeros números impares suman 10², y la última es el factorial de 5.

Las sumas funcionan con dinero y unidades, algo ideal para el ahorro periódico:

calc
# 1,200 € ingresados al inicio de cada año durante 5 años, al 5%
sum(1200 * 1.05^k, k, 1, 5) da €6,962.30

Un producto es útil para encadenar probabilidades. La probabilidad de que al menos dos personas de un grupo de 23 cumplan años el mismo día es uno menos la probabilidad de que los 23 cumpleaños sean distintos:

calc
p = 1 - product((365 - k)/365, k, 0, 22)
(p as %) to 1 dp da 50.7%

Algunos detalles:

  • El primer y el último valor deben ser números enteros.
  • Si el último valor es menor que el primero, no hay términos: la suma es 0 y el producto es 1.
  • Una misma suma o producto puede tener como máximo 10,000 términos.
  • Las sumas se pueden anidar, como en sum(sum(j, j, 1, n), n, 1, 4), que da 20. Las llamadas anidadas comparten un mismo límite de trabajo total.
  • Para sumar valores que ya tienes, usa una lista: sum([4, 8, 15]). Consulta Listas y estadística.

Encontrar una raíz numérica

solve encuentra un valor de la variable que hace que una ecuación se cumpla, buscando entre dos límites que tú indicas:

calc
solve(x^2 = 2, x, 0, 2) da 1.4142135624
solve(x^2 - 4, x, -3, 0) da -2
solve(cos(x) = x, x, 0, 1) da 0.7390851332
# ¿Cuánto tarda una piedra en caer 44.1 m?
solve(4.9*t^2 = 44.1, t, 0, 10) da 3
# Velas a 12 € que cuestan 4 € cada una, más 2,000 € de costes fijos
solve(12*n = 2000 + 4*n, n, 0, 1000) da 250

Los argumentos son la ecuación, la variable, el límite inferior y el límite superior. Puedes indicar una ecuación con = o solo una expresión, que solve trata como expresión = 0.

Elegir los límites

solve necesita que, en algún punto entre tus límites, cambie cuál de los dos lados de la ecuación es mayor. Dicho de otro modo, izquierda - derecha debe ser positivo en un límite y negativo en el otro (o exactamente cero en un límite). Después va estrechando el intervalo hasta encontrar el punto de cruce.

Esto tiene algunas consecuencias:

  • Si hay dos raíces entre los límites, puede que el signo no cambie en total. solve(x^2 - 4, x, -3, 3) falla, porque x^2 - 4 es positivo en ambos extremos. Usa límites que rodeen una sola raíz, como 0 y 3.
  • Una raíz en la que la curva solo toca el cero, como en x^2 = 0, no se puede encontrar así, porque el signo nunca cambia.
  • La expresión tiene que estar definida en todo el intervalo. solve(sqrt(x) = 2, x, -1, 10) falla porque sqrt de un número negativo da un error. Empieza el intervalo en 0.
  • Un salto a través del cero, como el de 1/x cerca de 0, no es una raíz, así que solve da un error en lugar de un resultado.
  • El límite inferior debe ser menor que el superior, y ambos deben ser números sin unidades.

solve devuelve una raíz, nunca una lista con todas. Solo funciona con números sin unidades, así que no pongas unidades en la ecuación.

Redondear y reutilizar

El resultado es una aproximación numérica muy cercana y puede desviarse en la última cifra mostrada. Añade to 4 dp (o cualquier número de decimales) en la misma línea para obtener una cifra limpia, o ponle nombre al resultado primero si quieres volver a usarlo:

calc
solve(sqrt(x) = 2, x, 0, 10) da 4.0000000001
solve(sqrt(x) = 2, x, 0, 10) to 4 dp da 4
lado = solve(sqrt(x) = 2, x, 0, 10) da 4.0000000001
lado * 3 to 2 dp da 12

Puedes envolver solve en una función propia para reutilizarla con distintos valores:

calc
raíz(y) = solve(x^2 = y, x, 0, 10)
raíz(9) da 3

Para varias ecuaciones lineales con varias incógnitas, usa solve_system de Vectores y matrices.

Derivación simbólica

Con dos argumentos, differentiate (o derivative) da la derivada como fórmula:

calc
differentiate(sin(x), x) da cos(x)
derivative(x^3, x) da (3*(x^(3-1)))
derivative(x * sin(x), x) da (sin(x)+(x*cos(x)))
derivative(exp(2*x), x) da (exp((2*x))*2)

El resultado no se simplifica, y cada paso va entre paréntesis: (3*(x^(3-1))) es 3x². Los decimales de tu expresión aparecen como fracciones, así que 19.6 aparece como (98/5).

El resultado es texto, no algo con lo que Varlig pueda calcular. Para usarlo, escribe la fórmula en una función propia:

calc
pendiente(x) = 3*x^2
pendiente(2) da 12

Qué puede manejar la derivación simbólica:

  • +, -, *, / y potencias, con las reglas de la suma, el producto, el cociente, la potencia y la cadena
  • las funciones sin, cos, tan, sinh, cosh, exp, ln y sqrt
  • otros nombres, que se tratan como constantes y se quedan como nombres en el resultado

Un nombre no necesita tener valor en tu nota, así que puedes derivar una fórmula con símbolos:

calc
derivative(a*x^2, x) da (a*(2*(x^(2-1))))

Otras funciones, como abs, log o una función que hayas definido tú, dan un error. Para ellas, usa la forma numérica de abajo. La fórmula tampoco conserva las restricciones de la expresión original: la derivada de sqrt(x) solo es válida donde lo es sqrt(x), aunque (1/(2*sqrt(x))) parezca una fórmula independiente.

Derivación numérica

Con un tercer argumento, derivative da la pendiente en ese punto como número:

calc
derivative(x^3, x, 2) da 12
differentiate(sin(x), x, 0) da 1
derivative(sqrt(x), x, 4) da 0.25
altura(t) = 20*t - 4.9*t^2
derivative(altura(t), t, 1) da 10.2

Esta forma funciona con funciones que hayas definido en la nota, como altura arriba, algo que la forma simbólica no puede hacer. Como calcula un número, todos los demás nombres de la expresión necesitan un valor. Lo mismo ocurre con sum, product, solve e integrate:

calc
derivative(a*x^2, x, 2) da Unsupported: Unknown name: a
a = 3
derivative(a*x^2, x, 2) da 12

El resultado es una estimación a partir de valores cercanos a ambos lados del punto. Cuando la pendiente real es un número exacto, Varlig guarda ese número, así que la comparación exacta funciona. Las pendientes irracionales, como la de exp(x), conservan todas sus cifras, así que compáralas con un margen de tolerancia:

calc
derivative(x^3, x, 2) == 12 da true
abs(derivative(exp(x), x, 1) - e) < 1e-6 da true

La expresión tiene que ser suave, sin esquinas ni huecos, alrededor del punto. derivative(abs(x), x, 0) da un error porque abs tiene una esquina en cero, y derivative(sqrt(x), x, 0) da un error porque sqrt no está definida a la izquierda de cero.

Integración definida

calc
integrate(x^2, x, 0, 3) da 9
integrate(sin(x), x, 0, pi) da 2
integrate(x^2, x, 3, 0) da -9
integrate(4/(1 + x^2), x, 0, 1) da 3.1415926536
# Distancia de caída en 3 s: integra la velocidad, 9.8t m/s
integrate(9.8*t, t, 0, 3) da 44.1

Los argumentos son la expresión, la variable, el límite inferior y el límite superior, en el mismo orden que sum. El resultado es el área con signo bajo la curva entre los límites. Si intercambias los límites, el signo cambia, y con límites iguales el resultado es cero. Puedes integrar funciones definidas en tu nota, como integrate(potencia(t), t, 0, 4).

integrate trabaja de forma numérica, así que algunas cosas quedan fuera de su alcance:

  • No hay integración indefinida: siempre obtienes un número, nunca una fórmula.
  • Ambos límites deben ser números finitos; no se puede integrar hasta el infinito.
  • La expresión debe estar definida en todo el intervalo. integrate(1/sqrt(x), x, 0, 1) da un error, porque 1/sqrt(0) divide entre cero, aunque el área en sí sea finita.
  • Las expresiones con saltos, picos u oscilaciones muy rápidas pueden dar resultados imprecisos o un error.
  • No se aceptan unidades, así que déjalas en un comentario, como en el último ejemplo.

Algoritmos y convergencia

No necesitas estos detalles para el uso diario, pero te ayudarán cuando un resultado parezca incorrecto o una línea dé un error.

solve usa bisección: divide el intervalo por la mitad una y otra vez, quedándose con la mitad en la que cambia el signo. Se detiene cuando el valor de izquierda - derecha está a menos de 10⁻¹⁰ de cero y el intervalo es lo bastante estrecho, y se rinde con un error tras 128 divisiones.

derivative simbólica aplica las reglas estándar paso a paso sin simplificar. El resultado puede tener como máximo 8,192 caracteres. No es un sistema completo de álgebra computacional.

derivative numérica compara diferencias centrales con pasos cada vez más pequeños y comprueba por separado la pendiente de cada lado. Si no coinciden, o un valor cerca del punto no está definido, obtienes un error en lugar de una suposición.

integrate usa reglas adaptativas de Gauss–Kronrod de 7 y 15 puntos. Compara las dos estimaciones en cada tramo del intervalo y divide el tramo con mayor error estimado, hasta que el error total estimado es inferior a 10⁻⁹ × max(1, |resultado|). Permite hasta 2,048 divisiones, 20 niveles de subdivisión y un presupuesto compartido de 100,000 pasos. Los puntos de muestreo no están espaciados de forma uniforme, así que una oscilación rápida como cos(128*pi*x) entre 0 y 1 se integra correctamente a aproximadamente cero en lugar de confundirse con una constante. La estimación del error sigue siendo heurística, así que toma con cautela los resultados de expresiones con singularidades o discontinuidades.

Las reglas completas están en Matemáticas avanzadas: posibilidades y límites.

Todo junto

Esta es la comprobación de un problema de deberes de física: una pelota lanzada hacia arriba a 19.6 m/s, tomando la gravedad como 9.8 m/s²:

calc
# Altura en metros después de t segundos
altura(t) = 19.6*t - 4.9*t^2
velocidad(t) = 19.6 - 9.8*t
# Toca el suelo cuando la altura vuelve a cero (sin contar t = 0)
aterrizaje = solve(altura(t) = 0, t, 1, 10) da 4
# Velocidad después de 1 segundo, a partir de la pendiente de la altura
derivative(altura(t), t, 1) da 9.8
# Punto más alto, donde la velocidad es cero
cima = solve(velocidad(t) = 0, t, 0, aterrizaje) da 2
altura(cima) da 19.6
# Comprobación: integrar la velocidad hasta la cima da la misma altura
integrate(velocidad(t), t, 0, cima) da 19.6

La pelota toca el suelo a los 4 segundos y alcanza 19.6 m a los 2 segundos. El límite inferior de 1 en la línea aterrizaje evita que solve encuentre la otra raíz, en t = 0. La última línea confirma la altura por otra vía, integrando la velocidad.