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
sum(k, k, 1, 100) da 5,050sum(k^2, k, 1, 10) da 385summation(2*k - 1, k, 1, 10) da 100product(k, k, 1, 5) da 120Los 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:
# 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.30Un 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:
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 da20. 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:
solve(x^2 = 2, x, 0, 2) da 1.4142135624solve(x^2 - 4, x, -3, 0) da -2solve(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 fijossolve(12*n = 2000 + 4*n, n, 0, 1000) da 250Los 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, porquex^2 - 4es positivo en ambos extremos. Usa límites que rodeen una sola raíz, como0y3. - 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 porquesqrtde un número negativo da un error. Empieza el intervalo en0. - Un salto a través del cero, como el de
1/xcerca de0, no es una raíz, así quesolveda 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:
solve(sqrt(x) = 2, x, 0, 10) da 4.0000000001solve(sqrt(x) = 2, x, 0, 10) to 4 dp da 4lado = solve(sqrt(x) = 2, x, 0, 10) da 4.0000000001lado * 3 to 2 dp da 12Puedes envolver solve en una función propia para reutilizarla con distintos valores:
raíz(y) = solve(x^2 = y, x, 0, 10)raíz(9) da 3Para 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:
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:
pendiente(x) = 3*x^2pendiente(2) da 12Qué 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,lnysqrt - 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:
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:
derivative(x^3, x, 2) da 12differentiate(sin(x), x, 0) da 1derivative(sqrt(x), x, 4) da 0.25altura(t) = 20*t - 4.9*t^2derivative(altura(t), t, 1) da 10.2Esta 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:
derivative(a*x^2, x, 2) da Unsupported: Unknown name: aa = 3derivative(a*x^2, x, 2) da 12El 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:
derivative(x^3, x, 2) == 12 da trueabs(derivative(exp(x), x, 1) - e) < 1e-6 da trueLa 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
integrate(x^2, x, 0, 3) da 9integrate(sin(x), x, 0, pi) da 2integrate(x^2, x, 3, 0) da -9integrate(4/(1 + x^2), x, 0, 1) da 3.1415926536# Distancia de caída en 3 s: integra la velocidad, 9.8t m/sintegrate(9.8*t, t, 0, 3) da 44.1Los 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, porque1/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²:
# Altura en metros después de t segundosaltura(t) = 19.6*t - 4.9*t^2velocidad(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 alturaderivative(altura(t), t, 1) da 9.8# Punto más alto, donde la velocidad es cerocima = solve(velocidad(t) = 0, t, 0, aterrizaje) da 2altura(cima) da 19.6# Comprobación: integrar la velocidad hasta la cima da la misma alturaintegrate(velocidad(t), t, 0, cima) da 19.6La 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.