Descomposición de Cholesky
Descomponga una matriz simétrica definida positiva en un triángulo inferior L por su traspuesta: el ejemplo clásico de 3×3 cuya primera fila es 4, 12, −16 da una L con 2, 1 y 3 en la diagonal. Útil para resolver sistemas y generar muestras. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.
Cholesky es la forma estándar de resolver sistemas lineales, generar muestras aleatorias correlacionadas y comprobar si una matriz es definida positiva en absoluto: cuando la factorización existe, la matriz lo es por construcción. Envíe su matriz como un array de filas y reciba el factor, la entrada reflejada y el método usado, en una sola llamada determinista.
Qué le da realmente la descomposición de Cholesky
Toda matriz simétrica definida positiva A puede escribirse como el producto de una matriz triangular inferior y su propia transpuesta: A = L·Lᵀ. Ese factor L es, en cierto sentido, la raíz cuadrada de la matriz, y una vez que lo tiene, varios problemas costosos se vuelven baratos. Resolver A·x = b deja de requerir eliminación general: resuelve L·y = b por sustitución hacia adelante y luego Lᵀ·x = y por sustitución hacia atrás, ambas en tiempo cuadrático.
Invertir la matriz, calcular su determinante (el producto de las entradas diagonales de L al cuadrado) y blanquear o correlacionar vectores aleatorios se reducen a operaciones sobre el triángulo. La calculadora de descomposición de Cholesky devuelve exactamente ese factor: una matriz triangular inferior n×n con entradas positivas en la diagonal y ceros por encima de ella. Como el cálculo es aritmética de punto flotante determinista con redondeo fijo, la misma entrada produce siempre una salida idéntica byte a byte, lo que hace seguro cachear, comparar y archivar el resultado.
Cómo se calcula y se comprueba la factorización
Para cada posición de la diagonal toma la entrada correspondiente de A, resta la norma al cuadrado de la fila del factor calculada hasta ese momento y extrae la raíz cuadrada; para cada posición bajo la diagonal resta el producto escalar de las dos filas parciales y divide por la entrada diagonal ya conocida. Esa única raíz cuadrada es también la prueba definitiva de definición positiva: la cantidad bajo ella es positiva en cada fila si y solo si la matriz es definida positiva.
Antes de todo eso se valida la entrada: debe ser un array cuadrado de como máximo 50 filas, cada entrada debe ser un número finito dentro del techo de magnitud declarado, y las entradas reflejadas deben coincidir dentro de una tolerancia relativa, porque una matriz no simétrica no tiene factorización de Cholesky en absoluto.
Dónde encaja en el trabajo real
Los dos hogares clásicos de Cholesky son la estadística y la computación numérica. En estadística, extraer muestras de una distribución normal multivariante con matriz de covarianza Σ significa multiplicar un vector de normales estándar independientes por el factor de Cholesky de Σ; los motores de Monte Carlo hacen esto millones de veces y necesitan el factor calculado una vez, correctamente, por adelantado.
En computación numérica, los problemas de mínimos cuadrados, los filtros de Kalman y los optimizadores de punto interior resuelven sistemas simétricos definidos positivos en cada iteración, y Cholesky es aproximadamente el doble de rápido que la LU general porque aprovecha la simetría y no necesita pivoteo.
Qué puede hacer con ella
Valide una matriz de covarianza antes de muestrear
Compruebe que una matriz de covarianza o correlación estimada es realmente definida positiva —y obtenga el factor que necesita para sorteos de Monte Carlo correlacionados— antes de que contamine una simulación.
Resuelva un sistema simétrico sin biblioteca
Obtenga L una vez y luego resuelva A·x = b con dos sustituciones triangulares en su propio código, en cualquier lenguaje, sin enlazar LAPACK ni NumPy.
Coteje su propio código de álgebra lineal
Compare el factor que produjo su implementación con un resultado determinista independiente para detectar errores de indexación y redondeo.
Preguntas frecuentes
¿Cuánto cuesta?
También es gratis ejecutarlo en su navegador en esta página con el mismo código.
¿Qué matrices se aceptan?
Matrices cuadradas de hasta 50×50, simétricas dentro de una tolerancia relativa, con entradas finitas de hasta 1e15 en magnitud. Las entradas no cuadradas, no simétricas o no definidas positivas se rechazan con un mensaje de error específico.
¿Qué se devuelve exactamente?
El factor triangular inferior L tal que A = L·Lᵀ, redondeado a la precisión elegida (10 decimales por defecto), junto con la matriz de entrada, la dimensión, el nombre del método y la fórmula utilizada.
¿Se almacena mi matriz?
No. Se procesa en memoria y se descarta; solo la respuesta calculada sale de la función.
¿Qué precisión tiene el resultado?
El factor se calcula en punto flotante de doble precisión y se redondea al número de decimales solicitado. Para matrices bien condicionadas dentro del límite de tamaño, el resultado redondeado satisface A ≈ L·Lᵀ con esa precisión.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/math/cholesky-decomposition \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"matrix":[[4,12,-16],[12,37,-43],[-16,-43,98]]}'const res = await fetch("https://api.kit.forhosting.com/math/cholesky-decomposition", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"matrix": [
[
4,
12,
-16
],
[
12,
37,
-43
],
[
-16,
-43,
98
]
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/cholesky-decomposition",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"matrix": [
[
4,
12,
-16
],
[
12,
37,
-43
],
[
-16,
-43,
98
]
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/cholesky-decomposition", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"matrix":[[4,12,-16],[12,37,-43],[-16,-43,98]]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"matrix":[[4,12,-16],[12,37,-43],[-16,-43,98]]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/cholesky-decomposition", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"matrix": [
[
4,
12,
-16
],
[
12,
37,
-43
],
[
-16,
-43,
98
]
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.cholesky_decomposition",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_n | 50 |
max_abs_entry | 1000000000000000 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
La API de descomposición de Cholesky toma una matriz simétrica definida positiva y devuelve su factor triangular inferior: la única matriz L con diagonal positiva tal que A = L·Lᵀ. Si la matriz no es simétrica, no es cuadrada o no es definida positiva, la API le dice exactamente por qué en lugar de devolver una respuesta incorrecta con buena apariencia.
Qué le da realmente la descomposición de Cholesky
Usted envía la matriz como un array JSON de filas, opcionalmente con una precisión entre 0 y 15 decimales, y la respuesta contiene el factor redondeado a esa precisión, la matriz enviada, la dimensión y el nombre del algoritmo.
Cómo se calcula y se comprueba la factorización
El endpoint ejecuta el algoritmo de Cholesky-Banachiewicz, un procedimiento fila a fila que construye L directamente desde la definición A = L·Lᵀ. Si algún pivote resulta cero o negativo, el cálculo se detiene y la API informa de que la matriz no es definida positiva, nombrando la fila donde falló. Los errores se devuelven como respuestas invalid_input estructuradas, nunca como basura numérica.
Dónde encaja en el trabajo real
Esta API es la versión en una llamada de ese paso: útil cuando quiere verificar que una matriz de covarianza es válida antes de alimentar un muestreador, cuando un pipeline necesita el factor sin enlazar una biblioteca de álgebra lineal, o cuando desea una segunda opinión sobre un resultado producido por su propio código. Se ejecuta en el edge sin conservar nada después, cuesta $0.002 por solicitud, y el mismo código idéntico se ejecuta gratis en su navegador en esta página: pegue una matriz, vea el factor y pague solo cuando automatice la llamada.
Preguntas técnicas
¿Qué ocurre si mi matriz no es definida positiva?
La solicitud falla con un error invalid_input que indica que la matriz no es definida positiva y nombra la fila donde falló el pivote. No se devuelve ningún factor parcial.