Libreria de Python para analisis numerico
Project description
analisis_numerico — Documentación
analisis_numerico es una librería enfocada en interpolación e integración numérica. Proporciona implementaciones claras de Newton, Lagrange, la regla del trapecio y la regla de Simpson 1/3, con una API pensada para lectura, evaluación y formateo de resultados.
Contenido
-
- Introducción
-
- Instalación
-
- Quick Start
-
- Conceptos principales
-
- API Reference
-
- Integración numérica
-
- Notas avanzadas
-
- FAQ
1. Introducción
Qué es
Librería para construir, evaluar y presentar polinomios interpoladores mediante Newton y Lagrange, además de aproximar integrales definidas con reglas clásicas de cuadratura.
Qué problema resuelve
Simplifica el trabajo con interpolación numérica al ofrecer:
- validación automática de nodos;
- ordenamiento interno de
x_k; - generación de parciales
p_0..p_n; - formateo en forma numérica o expandida;
- aproximación de integrales por trapecio o Simpson.
Principales ventajas
- API coherente y fácil de memorizar.
- Salidas legibles para depuración y documentación.
- Sin dependencias externas obligatorias.
- Clases de integración disponibles en
analisis_numerico.core.
Casos de uso
- Docencia en análisis numérico.
- Validación de datos experimentales.
- Generación de interpoladores para scripts y notebooks.
- Aproximación rápida de integrales con reglas compuestas.
Ejemplo rápido
from analisis_numerico import Newton
n = Newton(function=lambda x: x**2, table=[1.0, 2.0, 2.5])
print(n.formatear(position=2, operar=False))
2. Instalación
Requisitos
- Python 3.8 o superior.
Instalación básica
pip install analisis_numerico
Instalación para desarrollo
python -m venv .venv
# macOS / Linux
source .venv/bin/activate
# Windows PowerShell
.venv\Scripts\Activate.ps1
pip install -e .[dev]
Dependencias
- No requiere dependencias en tiempo de ejecución.
Versiones compatibles
- Python 3.8+.
3. Quick Start
Ejemplo mínimo funcional
from analisis_numerico import Newton, Lagrange
# tabla como lista de x_k
n = Newton(function=lambda x: x**3, table=[0.0, 1.0, 2.0])
print(n.formatear(position=2, operar=False))
# tabla como pares (x_k, y_k)
l = Lagrange(function=lambda x: x**2, table=[(0.0, 0.0), (1.0, 1.0), (2.0, 8.0)])
print(l.formatear(position=2, operar=True))
Explicación paso a paso
- Crear una instancia con
functionytable. - Usar
interpolador(position)para obtener una función parcial. - Usar
evaluar(i, x)para evaluar una parcial específica. - Usar
formatear(...)para inspección numérica o expansión algebraica.
Resultado esperado
operar=Falsedevuelve la forma numérica del polinomio.operar=Truedevuelve el polinomio expandido en base de potencias.
4. Conceptos principales
Componentes principales
Interpolacion: validación y normalización de entrada.Newton: diferencias divididas y polinomios parciales acumulativos.Lagrange: suma de términos de Lagrange sobre subconjuntos de nodos.Trapecio: aproximación por regla compuesta del trapecio.Simpson: aproximación por regla compuesta de Simpson 1/3.
Flujo de trabajo
- La tabla se valida y se transforma a nodos
(x_k, y_k). - Los nodos se ordenan por
x_kde menor a mayor. - Se construyen parciales o se configura la cuadratura.
- El usuario evalúa, integra o formatea según la necesidad.
Objetos importantes
p_i(x): parcial i-ésimo del interpolador.tabla: tabla ASCII con nodos y valores evaluados.integrar()yintegrar_tabla(): puntos de entrada de integración.
Ciclo de vida
- Instanciación.
- Validación de entradas.
- Construcción interna.
- Uso de resultados: evaluación, formateo o integración.
Patrones usados
- Separación entre validación y cálculo numérico.
- Representación interna por coeficientes para expansión algebraica.
- API predecible con nombres consistentes en todas las clases.
5. API Reference
Interpolacion(function, table)
Clase base para interpolación. Encapsula validación, normalización y utilidades compartidas.
Parámetros
| Nombre | Tipo | Descripción |
|---|---|---|
| function | Callable[[float], float] | Función usada para calcular y_k cuando table solo contiene x_k. |
| table | Iterable[float] | Iterable[tuple] | Secuencia de x_k o pares (x_k, y_k). No incluir índices k. |
Retorna
Instancia normalizada con nodos ordenados por x_k.
Excepciones posibles
TypeErrorsifunctionno es callable o la tabla contiene datos no numéricos.ValueErrorsi la tabla está vacía o contienex_krepetidos.
Notas importantes
- Si la tabla contiene solo
x_k, la librería calculay_k = function(x_k). - La normalización reindexa internamente los nodos.
Newton(function, table)
Interpolación por diferencias divididas.
Parámetros
| Nombre | Tipo | Descripción |
|---|---|---|
| function | Callable[[float], float] | Función para generar y_k si no se pasan pares. |
| table | Iterable[float] | Iterable[tuple] | Lista de nodos o pares (x_k, y_k). |
Retorna
Instancia de Newton lista para construir parciales y diferencias divididas.
Métodos
| Método | Descripción |
|---|---|
| `interpolador(position: int | None = None)` |
evaluar(i: int, x: float) |
Evalúa p_i(x). Si i == -1, devuelve todas las evaluaciones en un diccionario. |
dif_dividas() |
Devuelve un diccionario con diferencias divididas indexadas por expresión. |
formatear_dif_dividas(precision: int = 6) |
Devuelve una tabla ASCII con las diferencias divididas. |
| `formatear(position: int | None = None, operar: bool = True, precision: int = 6)` |
Excepciones posibles
TypeErrorsiposition,p_iuoperartienen tipo inválido.ValueErrorsipositionop_iestán fuera de rango.
Ejemplo
from analisis_numerico import Newton
n = Newton(lambda x: x**2, [1.0, 2.0, 3.0])
print(n.formatear(position=2, operar=False))
print(n.formatear(position=2, operar=True))
Buenas prácticas
- Usa
operar=Falsepara revisar la forma de Newton yoperar=Truepara obtener el polinomio expandido. - Trabaja con pocos nodos cuando necesites coeficientes simbólicamente legibles.
Lagrange(function, table)
Interpolación por base de Lagrange con la misma interfaz pública que Newton.
Parámetros
| Nombre | Tipo | Descripción |
|---|---|---|
| function | Callable[[float], float] | Función para calcular y_k si la tabla solo contiene nodos. |
| table | Iterable[float] | Iterable[tuple] | Lista de x_k o pares (x_k, y_k). |
Retorna
Instancia de Lagrange.
Métodos
| Método | Descripción |
|---|---|
| `interpolador(position: int | None = None)` |
evaluar(i: int, x: float) |
Evalúa p_i(x) o devuelve todas las evaluaciones si i == -1. |
| `formatear(position: int | None = None, operar: bool = True, precision: int = 6)` |
Excepciones posibles
TypeErrorsiposition,p_iuoperartienen tipo inválido.ValueErrorsipositionop_iestán fuera de rango.
Ejemplo
from analisis_numerico import Lagrange
l = Lagrange(lambda x: x**2, [(1.0, 1.0), (2.0, 4.0), (3.0, 9.0)])
print(l.formatear(position=2, operar=False))
Notas importantes
- La forma numérica muestra cada término con su numerador y denominador explícitos.
- La expansión puede ser costosa para muchos nodos.
Trapecio(function, a, b, n)
Regla compuesta del trapecio para integración numérica.
Parámetros
| Nombre | Tipo | Descripción |
|---|---|---|
| function | Callable[[float], float] | Función a integrar. |
| a | float | Límite inferior. |
| b | float | Límite superior. |
| n | int | Número de subintervalos; debe ser mayor o igual a 1. |
Retorna
Instancia de Trapecio lista para integrar o generar tablas ASCII.
Métodos
| Método | Descripción |
|---|---|
integrar() |
Calcula la integral aproximada con la regla compuesta del trapecio. |
tabla(precision: int = 6) |
Devuelve una tabla ASCII con nodos x_i y valores f(x_i). |
integrar_tabla(table) |
Calcula la integral a partir de una tabla de valores. |
Excepciones posibles
TypeErrorsi la función no es callable o devuelve valores no numéricos.ValueErrorsia >= b, sinno es válido o si la tabla no cumple el espaciado uniforme.
Ejemplo
from analisis_numerico import Trapecio
t = Trapecio(lambda x: x**2, 0.0, 1.0, 4)
print(t.integrar())
print(t.tabla())
Buenas prácticas
- Usa una partición uniforme cuando llames
integrar_tablacon nodos explícitos. - Prefiere
tabla()para depurar valores intermedios.
Simpson(function, a, b, n)
Regla compuesta de Simpson 1/3 para integración numérica.
Parámetros
| Nombre | Tipo | Descripción |
|---|---|---|
| function | Callable[[float], float] | Función a integrar. |
| a | float | Límite inferior. |
| b | float | Límite superior. |
| n | int | Número de subintervalos; debe ser par y mayor o igual a 2. |
Retorna
Instancia de Simpson lista para integrar o generar tablas ASCII.
Métodos
| Método | Descripción |
|---|---|
integrar() |
Calcula la integral aproximada con Simpson 1/3 compuesta. |
tabla(precision: int = 6) |
Devuelve una tabla ASCII con nodos x_i y valores f(x_i). |
integrar_tabla(table) |
Calcula la integral a partir de una tabla de valores. |
Excepciones posibles
TypeErrorsi la función no es callable o devuelve valores no numéricos.ValueErrorsinno es par, sia >= bo si la tabla no cumple las condiciones de Simpson.
Ejemplo
from analisis_numerico import Simpson
s = Simpson(lambda x: x**2, 0.0, 1.0, 4)
print(s.integrar())
print(s.tabla())
Notas importantes
ndebe ser par para Simpson 1/3.- La tabla debe contener al menos tres puntos y espaciamiento uniforme.
identity(value)
Parámetros
| Nombre | Tipo | Descripción |
|---|---|---|
| value | Any | Valor a devolver. |
Retorna
El mismo valor recibido.
Ejemplo
from analisis_numerico import identity
assert identity(3) == 3
6. Integración numérica
Las clases Trapecio y Simpson están disponibles en analisis_numerico.core.
Cuándo usar cada una
Trapecio: útil cuando quieres una aproximación simple, rápida y fácil de inspeccionar.Simpson: preferible cuando necesitas mayor precisión y puedes trabajar con un número par de subintervalos.
Recomendaciones
- Verifica siempre que la función sea evaluable en los extremos
ayb. - Usa tablas uniformes para
integrar_tabla. - Para funciones muy curvadas, incrementa
nantes de confiar en una sola aproximación.
7. Notas avanzadas
- Evita nodos
x_kdemasiado cercanos cuando uses interpolación polinómica. formatear(..., operar=True)puede crecer rápidamente en coste para grados altos.- Las tablas ASCII de
TrapecioySimpsonson útiles para auditoría manual y validación.
8. FAQ
¿Puedo pasar índices k en table?
No. La API actual acepta x_k o (x_k, y_k). El indexado interno se genera automáticamente.
¿Cómo obtengo el polinomio completo?
El polinomio completo corresponde al último parcial p_n: usa interpolador()[-1] o interpolador(n).
¿Las clases de integración están exportadas desde la raíz del paquete?
No en el estado actual. Se usan desde analisis_numerico.core.
¿Qué forma de formatear conviene usar?
operar=Falsepara inspección de la forma numérica.operar=Truepara obtener el polinomio expandido.
Para navegación rápida, este documento cubre lo que hoy expone core.py y está orientado a uso en producción.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file analisis_numerico-1.1.1.tar.gz.
File metadata
- Download URL: analisis_numerico-1.1.1.tar.gz
- Upload date:
- Size: 15.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
044b41f55a75fd42a408bb2cb0c5a81c88a5718fe7d054c65487975cfc01b8b4
|
|
| MD5 |
e29e95ee53efdc8031986b938e2174fb
|
|
| BLAKE2b-256 |
9f7bc4ac28053d22314ca485106b201555f9b1610ab2332ba1c2cf2b22c455e2
|
File details
Details for the file analisis_numerico-1.1.1-py3-none-any.whl.
File metadata
- Download URL: analisis_numerico-1.1.1-py3-none-any.whl
- Upload date:
- Size: 11.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
19e3e700bbfd3e1e50379f73060ebf969ee9887a51647afa07a577328165ea89
|
|
| MD5 |
3e2ee5f69d1ecb1af1caa981ebbed976
|
|
| BLAKE2b-256 |
c1876042123d48da06c0a617149d549914716477f6db751a63e0aec28ba76dfa
|