Linearinterpolation mit Randbegrenzung
Interpoliere zwischen streng steigenden Stützstellen und begrenze äußere Abfragen auf die Endpunkte.
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]| Projekt | Teste genaue Stützstellen und lehne doppelte Koordinaten, nichtendliche Werte oder Beträge über einer Billion vor der linearen Mischung ab. |
|---|---|
| Vor dem Anwenden prüfen | Vergleichen Sie das tatsächliche Verhalten mit dem erwarteten Ergebnis. Klären Sie fehlgeschlagene Prüfungen vor weiteren Änderungen. |
| Modelle | Richten Sie einen OpenAI-kompatiblen oder Anthropic-Endpunkt mit Basis-URL und gegebenenfalls API-Schlüssel ein. Testen Sie die Verbindung. Ein lokaler Modellserver muss laufen; entfernte Werkzeuge können Daten separat übertragen. |
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]Numerisches Verhalten mit dem aufrufenden Code abstimmen
KnotVista bietet für die Wartung numerischer Software eine Programmierumgebung unter Windows mit einem modellgestützten Gespräch über Ihre Dateien. Beginnen Sie mit den Erwartungen des nutzenden Codes an die Berechnung, einschließlich Eingabebereich und Verhalten an Grenzen. So entsteht ein sinnvolles Prüfziel, bevor Sie den Assistenten bitten, eine Implementierung zu vereinfachen oder deren Umgang mit ungewöhnlichen Daten zu ändern.
Das Beispiel zur stückweisen Interpolation bietet eine konkrete Projektaufgabe. Sie könnten das Modell geordnete Stützpunkte und die Behandlung von Abfragen jenseits ihrer Endpunkte untersuchen lassen. Fügen Sie den Code hinzu, der diese Punkte vorbereitet und das Ergebnis nutzt, damit sich eine bewusste Grenzfallregel von einer zufälligen Folge der Schleife unterscheiden lässt.
Prüfen Sie eine vorgeschlagene Änderung anhand exakter Stützstellen, Abfragen zwischen ihnen und Werten außerhalb des unterstützten Bereichs. Untersuchen Sie auch, wie eine ungültige Reihenfolge den aufrufenden Code erreicht. Führen Sie die numerischen Projekttests selbst aus und vergleichen Sie sie mit dem vereinbarten Verhalten: Eine glatt wirkende Visualisierung allein zeigt nicht, ob sich die Grenzfallregel oder der Umgang mit abgelehnten Eingaben geändert hat.
Ein uneingeschränktes KI-Modell kann verwendet werden, wenn es über einen unterstützten OpenAI-kompatiblen oder Anthropic-Endpunkt verfügbar ist. Geben Sie erforderliche Zugangsdaten an und prüfen Sie Werkzeuge und Kontextkapazität dieser Verbindung. Modell und Anbieter bestimmen weiterhin die Antwortbeschränkungen; die mathematischen Zusicherungen der Anwendung ergeben sich aus Ihren Anforderungen und dem von Ihnen akzeptierten Code.
Hilfreiche Fragen zur Wartung numerischer Software
- Was sollte ich für eine Abfrage außerhalb des Stützpunktbereichs festlegen?
Benennen Sie die beabsichtigte Endpunktregel ausdrücklich, etwa die Beibehaltung des nächstgelegenen Endpunktwerts, sofern dies Ihre Anforderung ist. Geben Sie erwartete Ergebnisse auf beiden Seiten des Bereichs an, damit der Assistent keine andere Extrapolationsregel einsetzt.
- Warum sollte der Code zur Vorbereitung der Stützpunkte enthalten sein?
Er bestimmt Reihenfolge, doppelte Positionen und zulässige numerische Werte vor Beginn der Interpolation. Eine lokale Änderung kann korrekt erscheinen und dennoch diesen Annahmen widersprechen. Lassen Sie das Modell den Vorbereitungspfad prüfen, bevor Validierung oder Sortierung verlagert werden.
- Kann ich eine Änderung allein durch Prüfung eines Diagramms freigeben?
Ein Diagramm hilft beim sichtbaren Verhalten, doch subtile Grenzfalländerungen können ähnlich aussehen. Vergleichen Sie ausdrückliche numerische Testfälle an Stützstellen, dazwischen und außerhalb des Bereichs. Prüfen Sie neben erfolgreichen Ergebnissen auch die Fehlermeldungen.
- Wie sollte ein abgelehnter Datensatz die Oberfläche erreichen?
Legen Sie fest, ob der aufrufende Code einen Fehler anzeigen, das Ergebnis auslassen oder einer anderen bestehenden Regel folgen soll. Prüfen Sie diesen Pfad zusammen mit der Berechnung. Ersetzen Sie das Ergebnis nicht stillschweigend durch einen plausiblen Wert, sofern Ihre Anwendung dies nicht bewusst vorsieht.
KnotVista · Aktualisiert 2026-10-25