Saltar al contenido
Guía de Varlig
Inicio de Varlig

Matemáticas avanzadas: posibilidades y límites

Esta página resume las matemáticas avanzadas de Varlig Calc: listas, vectores y matrices, números complejos, sumatorios y productos, resolución de ecuaciones y cálculo. Para cada una, indica qué hacen las funciones, qué aceptan, lo exactos que son los resultados y dónde están los límites. Úsala para comprobar los detalles cuando un resultado te sorprenda.

Para ver introducciones con más ejemplos, consulta las guías: Listas y estadística, Vectores y matrices, Números complejos y Sumatorios, resolución de ecuaciones y cálculo.

De un vistazo

Característica Ejemplo Resultado
Lista [1, 2+3, 4*2] [1, 5, 8]
Elemento de una lista [10, 20, 30][1] 20
Elemento de una lista anidada [[1,2],[3,4]][1][0] 3
Total de cantidades con unidad sum([1 kg, 500 g]) 1.5 kg
Estadística average([1,2,3]), median([5,1,3]) 2, 3
Intervalo descendente range(5, 1, -2) [5, 3, 1]
Suma de listas [1,2] + [3,4] [4, 6]
Producto de matrices [[1,2],[3,4]] * [[1,0],[0,1]] [[1, 2], [3, 4]]
Inversa inverse([[1,2],[3,4]]) [[-2, 1], [1.5, -0.5]]
Determinante det([[1,2],[3,4]]) -2
Traspuesta transpose([[1,2],[3,4]]) [[1, 3], [2, 4]]
Sistema lineal solve_system([[2,1],[1,2]], [34,29]) [13, 8]
Aritmética compleja (2+3i) * (2-3i) 13
Raíz cuadrada compleja sqrt(complex(-4,0)) 2i
Suma sobre un intervalo sum(k^2, k, 1, 10) 385
Producto sobre un intervalo product(k, k, 1, 5) 120
Resolver una ecuación solve(x^2 = 4, x, 0, 3) 2
Derivada simbólica differentiate(sin(x), x) cos(x)
Derivada en un punto derivative(x^3, x, 2) 12
Integral definida integrate(x^2, x, 0, 3) 9

Las listas, las matrices y los números complejos son valores normales. Puedes darles nombre y pasarlos a funciones que definas, y se recalculan cuando editas una línea anterior.

calc
cuadrados(n) = sum(k^2, k, 1, n)
cuadrados(3) da 14
primero(lista) = lista[0]
primero([10, 20]) da 10
raiz(y) = solve(x^2 = y, x, 0, 10)
raiz(9) da 3

Cómo escribir listas y funciones matemáticas

  • Las comas separan elementos y argumentos. Una coma seguida de un espacio siempre separa, y una coma seguida de exactamente tres dígitos agrupa los miles, así que [1,200, 1,800] tiene dos elementos. Sin espacios, cada coma separa, como en [12,-51,4]. Cuando las comas pueden leerse de las dos formas, como en [1,234], el error muestra las dos maneras de escribirlo. Usa un punto para los decimales.
  • Las matrices son listas de filas, como [[1,2],[3,4]]. No existe una abreviatura con punto y coma como [1,2;3,4].
  • Los índices empiezan en 0 y deben ser números enteros de 0 o más. Un índice más allá del final de la lista es un error; nunca vuelve al principio ni se recorta para que quepa.
  • Se comprueba el número de argumentos. sqrt(4,9) es un error, no una suposición.

Listas y estadística

Estas funciones aceptan una lista: length o count, sum, product, average o mean, median, min, max y stddev (la desviación estándar muestral).

  • Una lista vacía tiene una sum de 0, un product de 1 y un count de 0. Las demás estadísticas de una lista vacía son errores.
  • Dos listas de la misma longitud se suman y se restan elemento a elemento. Puedes multiplicar o dividir una lista por un número, y comparar dos listas con ==.
  • range(start, end, step) incluye ambos extremos. El paso es opcional.
  • dot(a, b) multiplica dos vectores reales.
calc
gastos = [420, 385, 510, 460] da [420, 385, 510, 460]
sum(gastos) da 1,775
average(gastos) da 443.75
median(gastos) da 440
gastos[0] da 420
gastos * 1.1 da [462, 423.5, 561, 506]
range(0, 1, 0.25) da [0, 0.25, 0.5, 0.75, 1]

Transformar listas

Llamada Resultado Qué hace
sort([3,1,2]) [1, 2, 3] Ordena números sin unidades de menor a mayor; los elementos iguales mantienen su orden
reverse([1,2,3]) [3, 2, 1] Invierte cualquier lista
unique([3,1,3,2]) [3, 1, 2] Conserva la primera aparición de cada valor; los elementos deben coincidir exactamente, unidades incluidas
slice([10,20,30,40], 1, 3) [20, 30] Toma los elementos desde el índice inicial hasta el final, sin incluir este
map(x^2, x, [1,2,3]) [1, 4, 9] Calcula la expresión para cada elemento
filter(x > 1, x, [1,2,3]) [2, 3] Conserva los elementos para los que la condición es verdadera
variance([1,2,3]) 1 Varianza muestral exacta, dividiendo entre el número de elementos menos uno
  • slice necesita números enteros con 0 ≤ inicio ≤ fin ≤ longitud de la lista. Cualquier otro límite es un error.
  • variance necesita al menos dos números sin unidades.
  • map y filter reciben primero la expresión, después el nombre que se usará para cada elemento y por último la lista. El nombre solo vale dentro de la llamada, así que no cambia un nombre que hayas definido en otro sitio. La expresión de filter debe dar true o false.

Vectores y matrices

Los vectores son listas planas y las matrices son listas de filas. Las matrices deben ser rectangulares, contener números reales sin unidades y tener de 1 a 32 filas y columnas.

Función Qué hace
A * B Producto de matrices; el número de columnas de A debe ser igual al de filas de B
transpose(A) Intercambia filas y columnas
shape(A) [rows, columns] (filas, columnas)
identity(n) Una matriz identidad de n por n
trace(A) Suma de la diagonal de una matriz cuadrada
det(A) Determinante de una matriz cuadrada
inverse(A) Inversa de una matriz cuadrada; una matriz singular es un error
rank(A) Rango, por eliminación exacta, de cualquier matriz rectangular
dot(a, b) Producto escalar de dos vectores de la misma longitud
cross(a, b) Producto vectorial de dos vectores de tres elementos
solve_system(A, b) Resuelve A*x = b para una matriz cuadrada A y un vector plano b
eigenvalues(A) Valores propios de una matriz cuadrada real, incluidos pares complejos, sin un orden fijo
qr(A) [Q, R], donde Q*R es aproximadamente A
lu(A) [P, L, U], donde P*A es aproximadamente L*U; solo matrices cuadradas
svd(A) [U, s, Vt], donde s es una lista plana de valores singulares y A es aproximadamente U*diag(s)*Vt

Resultados exactos. det, inverse, rank y solve_system usan fracciones exactas. rank no tiene tolerancia de redondeo. solve_system da un error con un sistema singular, y no resuelve sistemas no lineales ni sistemas con infinitas soluciones.

Resultados aproximados. eigenvalues, qr, lu y svd usan coma flotante y comprueban que su salida sea finita. qr y svd aceptan matrices rectangulares y devuelven los factores compactos (“thin”). Los cálculos de valores propios y de SVD se detienen tras 10,000 iteraciones. En el resultado mostrado, una entrada que solo es error de redondeo al lado de la entrada mayor se muestra como 0, mientras que al acceder a ella por índice se obtiene el valor guardado. Las matrices mal condicionadas pueden perder precisión, así que no compruebes estos resultados con ==.

calc
# Dos entradas de adulto y una infantil cuestan 34; una de adulto y dos infantiles cuestan 29
solve_system([[2,1],[1,2]], [34,29]) da [13, 8]
det([[2,1],[1,2]]) da 3
rank([[1,2],[2,4]]) da 1

Números complejos

i es la unidad imaginaria, salvo que hayas definido un nombre o una unidad personalizada llamados i.

  • Funciones: complex(real, imaginary), real, imag, conj, abs, arg (en radianes) y sqrt (la raíz principal) aceptan números complejos.
  • Exactitud: las partes, la aritmética y las potencias enteras se mantienen exactas. Las raíces en general y arg son aproximadas.
  • Resultados reales: cuando las partes imaginarias se anulan, como en (2+3i) * (2-3i), el resultado es un número real normal. Un valor que escribes como complejo, como -4 + 0i o complex(-4,0), sigue siendo complejo en los cálculos y al guardarlo con un nombre, aunque se muestre como -4.
  • Raíces cuadradas y logaritmos de números negativos: sqrt(-4), ln(-1) y log(-100) se quedan en los números reales y muestran un error de número imaginario que indica la forma compleja que debes escribir, como sqrt(-4 + 0i). Esa forma, o sqrt(complex(-4,0)), da 2i.
  • Formato: una parte que solo es error de redondeo de coma flotante se muestra como 0, así que exp(i*pi) muestra -1. El valor guardado conserva sus cifras.
  • Comparaciones: < y > solo funcionan cuando las dos partes imaginarias son cero.
  • Otras funciones: sin, cos, tan y sus inversas, las funciones hiperbólicas y sus inversas, exp, ln, log o log10, log2, cbrt, y las potencias fraccionarias o complejas aceptan números complejos. Usan coma flotante y ramas principales. El logaritmo de cero, y cualquier resultado que no sea finito, es un error.
calc
(2+3i) * (2-3i) da 13
abs(3+4i) da 5
sqrt(-4 + 0i) da 2i
sqrt(complex(-4,0)) da 2i
sqrt(-4) da Error: imaginary number. For a complex answer, write sqrt(-4 + 0i)
exp(i*pi) da -1

Sumatorios y productos

sum(expression, name, from, to) suma la expresión para cada número entero desde from hasta to, ambos incluidos. summation es otro nombre de la misma función, y product multiplica en lugar de sumar.

  • El nombre es local a la llamada. No cambia un nombre que ya hayas definido ni hace que la línea dependa de él.
  • Puedes poner un sumatorio o un producto dentro de otro.
  • Si to es menor que from, el intervalo está vacío: la suma es 0 y el producto es 1.
  • Una sola llamada puede tener como máximo 10,000 términos.
calc
sum(k^2, k, 1, 10) da 385
product(k, k, 1, 5) da 120
k = 7 da 7
sum(k, k, 1, 3) da 6
k da 7

Resolver ecuaciones

solve(expression, name, lower, upper) encuentra un valor real de name entre lower y upper para el que la expresión vale cero. solve(left = right, name, lower, upper) encuentra dónde los dos lados son iguales.

  • Los límites deben ser números finitos, con lower menor que upper.
  • Se acepta una raíz que esté justo en un límite. Si no, la expresión debe ser positiva en un límite y negativa en el otro, y debería ser continua entre ambos.
  • La búsqueda divide el intervalo por la mitad en cada paso. Tiene éxito cuando la expresión está a menos de 1e-10 de cero y el intervalo es lo bastante estrecho, en un máximo de 128 pasos. Si la expresión no está definida en algún punto que se comprueba, o la búsqueda no converge, la línea muestra un error.
  • Encuentra una raíz, no todas. Para sistemas de ecuaciones lineales, usa solve_system.
calc
solve(1500 + 12*x = 20*x, x, 0, 1000) da 187.5
solve(x^2 = 2, x, 0, 2) da 1.4142135624

Cálculo

Derivadas simbólicas

differentiate(expression, name), que también se escribe derivative(expression, name), devuelve la derivada como texto.

  • Aplica las reglas de la suma, el producto, el cociente, la potencia y la cadena a la aritmética con números reales sin unidades, además de sin, cos, tan, sinh, cosh, exp, ln y sqrt.
  • Los demás nombres de la expresión se tratan como constantes, tengan o no un valor en la nota: differentiate(a*x^2, x) da (a*(2*(x^(2-1)))).
  • El resultado no se simplifica y está limitado a 8,192 caracteres.
  • Otras funciones, como abs, son errores; para ellas, usa una derivada en un punto. No es un sistema completo de álgebra computacional.
  • La derivada tiene las mismas restricciones de dominio que la expresión original.
calc
differentiate(sin(x), x) da cos(x)
differentiate(x^3, x) da (3*(x^(3-1)))

Derivadas en un punto

derivative(expression, name, point), o differentiate con tres argumentos, calcula numéricamente la pendiente en un punto. Usa diferencias centrales refinadas y las contrasta con estimaciones laterales. La expresión puede usar funciones que hayas definido, pero debe ser suave cerca del punto y usar números reales sin unidades. Si la estimación no converge o una muestra no está definida, la línea muestra un error.

Como las formas numéricas calculan un número, todos los nombres salvo la variable necesitan un valor. Esto se aplica a las derivadas en un punto, sum, product, solve e integrate; un nombre sin valor muestra Unsupported: Unknown name: seguido del nombre.

calc
derivative(x^3, x, 2) da 12
f(x) = x^2
derivative(f(x), x, 3) da 6
differentiate(a*x^2, x) da (a*(2*(x^(2-1))))
derivative(a*x^2, x, 3) da Unsupported: Unknown name: a

Integrales definidas

integrate(expression, name, lower, upper) calcula el área bajo la expresión entre dos límites finitos.

  • Intercambiar los límites cambia el signo del resultado, y dos límites iguales dan cero.
  • Usa reglas adaptativas de Gauss–Kronrod de 7 y 15 puntos, que toman muestras en puntos no equidistantes. Así, una onda regular como cos(128*pi*x) no la engaña: integrate(cos(128*pi*x), x, 0, 1) da aproximadamente -1.3e-15, que es cero salvo por el redondeo.
  • Busca una estimación de error total de como máximo 1e-9 veces el tamaño del resultado (o 1e-9 para resultados menores que 1). Compara al menos dos niveles de detalle, tiene en cuenta el error de redondeo y refina primero la parte con mayor error estimado.
  • Se detiene tras 2,048 refinamientos, 20 niveles de subdivisión o los 100,000 pasos compartidos con el resto de las matemáticas avanzadas de la línea. Alcanzar un límite, o una muestra no definida, es un error.
  • La estimación de error es una buena orientación, no una garantía. Usa expresiones suaves y finitas. Los resultados de expresiones con picos, saltos u oscilaciones rápidas pueden ser imprecisos.
  • No se admiten integrales indefinidas ni límites infinitos.
calc
integrate(x^2, x, 0, 3) da 9
integrate(x^2, x, 3, 0) da -9

Argumentos y unidades en las funciones matemáticas

  • factorial es otro nombre de fact, y trunc, de int.
  • sign devuelve -1, 0 o 1. atan2(y, x) devuelve un ángulo en radianes como número sin unidades.
  • El segundo argumento opcional de round, floor y ceil es un paso, no un número de decimales: round(17, 5) redondea al múltiplo de 5 más cercano. Para redondear a decimales, consulta Redondeo.
  • Los logaritmos, las exponenciales y las funciones hiperbólicas no aceptan unidades ni dinero. La trigonometría normal acepta ángulos como 30°.
  • Las raíces cuadradas y cúbicas conservan las unidades cuando la potencia se divide exactamente, y las potencias de cantidades conservan sus unidades. Las temperaturas en grados Celsius o Fahrenheit no se pueden elevar al cuadrado ni sacarles la raíz.
calc
gcd(12, 18) da 6
round(17, 5) da 15
sin(30°) da 0.5
sqrt(9 ) da 3 m
(2 kg)^2 da 4 kg²

Límites

Los límites se comprueban antes de mostrar un resultado:

  • 1,024 elementos en una lista o range
  • matrices de hasta 32 × 32
  • 10,000 términos en un mismo sum o product
  • 16 niveles de listas y llamadas a funciones anidadas
  • 100,000 pasos compartidos por todas las matemáticas avanzadas de una línea, incluidas las llamadas anidadas
  • 4,096 bits en el numerador o el denominador de una fracción, igual que en el resto de Varlig Calc

Alcanzar un límite muestra un error en esa línea, y el resto de la nota sigue funcionando. Nunca verás una suma parcial, una inversa o una raíz sin converger presentadas como resultado. Para ver todos los límites y la exactitud de los resultados, consulta Leer resultados: formato y precisión.