Interpolação linear com extremos limitados
Interpole entre pontos com abscissas estritamente crescentes e limite consultas externas aos 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]| Projeto | Teste pontos exatos e rejeite coordenadas repetidas, valores não finitos ou magnitudes acima de um trilhão antes da combinação linear. |
|---|---|
| Revise antes de aplicar | Compare o comportamento real com o resultado esperado. Se uma verificação falhar, investigue a causa antes de fazer outras alterações. |
| Modelos | Configure um endpoint compatível com OpenAI ou Anthropic com a URL base e uma chave API, quando necessária. Teste a conexão. O servidor local precisa estar em execução; ferramentas remotas podem transmitir dados separadamente. |
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]Mantenha o comportamento numérico consistente com o código chamador
KnotVista oferece à manutenção numérica um ambiente de programação para Windows com uma conversa sobre seus arquivos apoiada por um modelo. Comece pelo que o código consumidor espera do cálculo, incluindo o domínio de entrada e o comportamento nos limites. Isso estabelece um objetivo útil de revisão antes de pedir ao assistente que simplifique uma implementação ou altere como ela trata dados incomuns.
O exemplo de interpolação por trechos oferece uma tarefa concreta de projeto. Você pode pedir ao modelo que examine os pontos de amostra ordenados e o tratamento de consultas além de seus extremos. Inclua o código que prepara esses pontos e consome o resultado para que a discussão diferencie uma política deliberada de limites de uma consequência acidental do laço.
Revise uma alteração sugerida usando pontos de interpolação exatos, consultas entre eles e valores fora do intervalo suportado. Examine também como uma ordenação inválida chega ao código chamador. Execute você mesmo os casos de teste numéricos do projeto e compare-os com o comportamento acordado; uma visualização aparentemente suave, por si só, não mostra se a política de limites ou o tratamento de entradas rejeitadas mudou.
Um modelo de IA sem restrições pode ser usado quando estiver disponível por meio de um endpoint suportado compatível com OpenAI ou da Anthropic. Forneça credenciais conforme necessário e verifique as ferramentas e a capacidade de contexto dessa conexão. O modelo e o provedor continuam determinando as restrições de resposta; o contrato matemático da aplicação vem dos seus requisitos e do código que você aceita.
Perguntas úteis para a manutenção numérica
- O que devo especificar para uma consulta fora do intervalo das amostras?
Declare explicitamente a política pretendida para os extremos, como manter o valor do extremo mais próximo se esse for o requisito. Inclua os resultados esperados dos dois lados do intervalo para que o assistente não substitua essa política por outra forma de extrapolação.
- Por que incluir o código que prepara os pontos de amostra?
Ele determina a ordenação, as posições duplicadas e os valores numéricos aceitos antes da interpolação. Uma alteração local pode parecer correta e ainda entrar em conflito com essas premissas. Peça ao modelo que examine o fluxo de preparação antes de mover a validação ou a ordenação.
- Posso aprovar uma alteração verificando apenas um gráfico?
Um gráfico ajuda a observar o comportamento visível, mas mudanças sutis nos limites podem parecer semelhantes. Compare casos numéricos explícitos nos pontos, entre eles e fora do intervalo. Verifique como os erros são informados, além dos resultados bem-sucedidos.
- Como um conjunto de dados rejeitado deve chegar à interface?
Defina se o código chamador deve exibir um erro, omitir o resultado ou seguir outra regra existente. Revise esse fluxo junto com o cálculo. Evite substituir silenciosamente o resultado por um valor plausível, a menos que o contrato da aplicação exija isso deliberadamente.
KnotVista · Atualizado 2026-10-25