Lineaire interpolatie met randbegrenzing
Interpoleer tussen strikt stijgende knopen en begrens externe vragen tot de eindpunten.
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]| Project | Controleer exacte knopen en weiger herhaalde coördinaten, niet-eindige waarden en groottes boven een biljoen vóór de lineaire menging. |
|---|---|
| Controleer vóór het toepassen | Vergelijk het werkelijke gedrag met het verwachte resultaat. Onderzoek een mislukte controle voordat je verdergaat met wijzigingen. |
| Modellen | Stel een OpenAI-compatibel of Anthropic-endpoint in met de basis-URL en zo nodig een API-sleutel. Test de verbinding. Een lokale modelserver moet actief zijn; externe hulpmiddelen kunnen apart gegevens versturen. |
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]Houd numeriek gedrag in overeenstemming met de aanroepende code
KnotVista biedt een programmeeromgeving voor Windows voor numeriek onderhoud, met een gesprek over je bestanden ondersteund door een model. Begin bij wat de afnemer van de berekening verwacht, inclusief het invoerdomein en grensgedrag. Dat geeft een bruikbaar beoordelingsdoel voordat je de assistent vraagt een implementatie te vereenvoudigen of de verwerking van ongebruikelijke gegevens aan te passen.
Het voorbeeld van stuksgewijze interpolatie biedt een concrete projecttaak. Je kunt het model vragen geordende meetpunten en de verwerking van zoekwaarden buiten hun eindpunten te onderzoeken. Voeg de code toe die de punten voorbereidt en het resultaat gebruikt, zodat het gesprek bewust grensbeleid kan onderscheiden van een toevallig gevolg van de lus.
Toets een voorgestelde wijziging aan exacte knooppunten, zoekwaarden tussen knooppunten en waarden buiten het ondersteunde bereik. Onderzoek ook hoe ongeldige ordening bij de aanroepende code terechtkomt. Voer zelf de numerieke testgevallen van het project uit en vergelijk ze met het afgesproken gedrag; een vloeiend ogende visualisatie alleen laat niet zien of het grensbeleid of de verwerking van afgewezen invoer is veranderd.
Een onbeperkt AI-model kan worden gebruikt als het beschikbaar is via een ondersteund OpenAI-compatibel of Anthropic-endpoint. Verstrek waar nodig inloggegevens en controleer de tools en contextcapaciteit voor die verbinding. Het model en de provider bepalen nog steeds de antwoordbeperkingen; de wiskundige afspraken van de toepassing volgen uit je eisen en de code die je accepteert.
Nuttige vragen bij numeriek onderhoud
- Wat moet ik specificeren voor een zoekwaarde buiten het meetbereik?
Leg het bedoelde eindpuntbeleid expliciet vast, bijvoorbeeld behoud van de dichtstbijzijnde eindpuntwaarde als dat je eis is. Geef verwachte resultaten aan beide zijden van het bereik, zodat de assistent geen ander extrapolatiebeleid invoert.
- Waarom de code toevoegen die meetpunten voorbereidt?
Die bepaalt ordening, dubbele posities en geaccepteerde numerieke waarden voordat interpolatie begint. Een lokale wijziging kan correct lijken terwijl ze met die aannames botst. Vraag het model het voorbereidingspad te onderzoeken voordat validatie of sortering wordt verplaatst.
- Kan ik een wijziging goedkeuren door alleen een grafiek te bekijken?
Een grafiek is nuttig voor zichtbaar gedrag, maar subtiele grenswijzigingen kunnen er hetzelfde uitzien. Vergelijk expliciete numerieke testgevallen op knooppunten, ertussen en buiten het bereik. Controleer zowel foutmeldingen als geslaagde resultaten.
- Hoe moet een afgewezen gegevensverzameling de interface bereiken?
Bepaal of de aanroepende code een fout moet tonen, het resultaat moet weglaten of een andere bestaande regel moet volgen. Beoordeel dat pad samen met de berekening. Vervang niet stilzwijgend door een aannemelijke waarde, tenzij de toepassingsafspraken dat bewust voorschrijven.
KnotVista · Bijgewerkt 2026-10-25