Interpolación lineal limitada
Interpola entre nodos estrictamente crecientes y limita las consultas exteriores a los extremos.
from math import isfinite
def interpolate(points, query):
def valid(x):
return type(x) in (int, float) and abs(x) <= 10**12 and isfinite(x)
if type(points) is not list or len(points) < 2 or not valid(query):
raise ValueError("knots.input")
if any(type(p) not in (list, tuple) or len(p) != 2 or
not all(valid(v) for v in p) for p in points):
raise ValueError("knots.point")
if any(a[0] >= b[0] for a,b in zip(points, points[1:])):
raise ValueError("knots.order")
if query <= points[0][0]:
return points[0][1]
for (x0,y0),(x1,y1) in zip(points, points[1:]):
if query <= x1:
t = (query-x0)/(x1-x0)
return (1-t)*y0+t*y1
return points[-1][1]| Proyecto | Comprueba nodos exactos y rechaza coordenadas repetidas, valores no finitos o magnitudes superiores a un billón antes de calcular la mezcla lineal. |
|---|---|
| Revisa antes de aplicar | Compara el comportamiento real con el resultado esperado. Si una prueba falla, investiga la causa antes de hacer más cambios. |
| Modelos | Configura un endpoint compatible con OpenAI o Anthropic usando la URL base y, si hace falta, una clave API. Prueba la conexión. Un servidor local debe estar en ejecución; las herramientas remotas pueden enviar datos por separado. |
from math import isfinite
def interpolate(points, query):
def valid(x):
return type(x) in (int, float) and abs(x) <= 10**12 and isfinite(x)
if type(points) is not list or len(points) < 2 or not valid(query):
raise ValueError("knots.input")
if any(type(p) not in (list, tuple) or len(p) != 2 or
not all(valid(v) for v in p) for p in points):
raise ValueError("knots.point")
if any(a[0] >= b[0] for a,b in zip(points, points[1:])):
raise ValueError("knots.order")
if query <= points[0][0]:
return points[0][1]
for (x0,y0),(x1,y1) in zip(points, points[1:]):
if query <= x1:
t = (query-x0)/(x1-x0)
return (1-t)*y0+t*y1
return points[-1][1]Mantén el comportamiento numérico coherente con el código llamador
KnotVista ofrece al mantenimiento numérico un entorno de programación para Windows con una conversación sobre tus archivos respaldada por un modelo. Empieza por lo que el código consumidor espera del cálculo, incluidos el dominio de entrada y el comportamiento en los límites. Así estableces un objetivo útil de revisión antes de pedir al asistente que simplifique una implementación o cambie cómo trata datos inusuales.
El ejemplo de interpolación por tramos ofrece una tarea concreta de proyecto. Puedes pedir al modelo que examine los puntos de muestra ordenados y el tratamiento de consultas más allá de sus extremos. Incluye el código que prepara esos puntos y consume el resultado para distinguir en la conversación una política de límites deliberada de una consecuencia accidental del bucle.
Revisa el cambio sugerido con consultas exactamente en los nodos, entre ellos y fuera del intervalo admitido. Examina también cómo llega al código llamador un orden no válido. Ejecuta tú mismo los casos numéricos del proyecto y compáralos con el comportamiento acordado; una visualización aparentemente suave no basta para mostrar si han cambiado la política de límites o el tratamiento de entradas rechazadas.
Puedes usar un modelo de IA sin restricciones cuando esté disponible mediante un endpoint compatible con OpenAI o de Anthropic admitido. Proporciona credenciales cuando sean necesarias y verifica las herramientas y la capacidad de contexto de esa conexión. El modelo y el proveedor siguen determinando las restricciones de respuesta; el contrato matemático de la aplicación procede de tus requisitos y del código que aceptes.
Preguntas útiles para el mantenimiento numérico
- ¿Qué debo especificar para una consulta fuera del intervalo de muestras?
Indica explícitamente la política prevista en los extremos, como conservar el valor del extremo más cercano si ese es tu requisito. Incluye resultados esperados a ambos lados del intervalo para que el asistente no sustituya esa política por otra de extrapolación.
- ¿Por qué incluir el código que prepara los puntos de muestra?
Determina el orden, las posiciones duplicadas y los valores numéricos aceptados antes de empezar la interpolación. Un cambio local puede parecer correcto y contradecir esas suposiciones. Pide al modelo que examine la preparación antes de mover la validación o la ordenación.
- ¿Puedo aprobar un cambio comprobando solo una gráfica?
Una gráfica ayuda a observar el comportamiento visible, pero cambios sutiles en los límites pueden parecer iguales. Compara casos numéricos explícitos en los nodos, entre ellos y fuera del intervalo. Comprueba cómo se comunican los errores además de los resultados correctos.
- ¿Cómo debe llegar a la interfaz un conjunto de datos rechazado?
Define si el código llamador debe mostrar un error, omitir el resultado o seguir otra regla existente. Revisa esa ruta junto con el cálculo. Evita sustituir silenciosamente el resultado por un valor plausible salvo que el contrato de tu aplicación lo requiera deliberadamente.
KnotVista · Actualizado 2026-10-25