KKnotVista
Сценарии

Сценарии работы с кодом · Линейная интерполяция с ограничением на концах

03
Вокруг ваших задач

Конкретная отправная точка

Выполните интерполяцию между строго возрастающими узлами с ограничением внешних запросов крайними точками. Проверьте точные узлы и отклоните повторные координаты, неконечные значения и модули выше триллиона до линейного смешивания.

01

Откройте контекст

Выберите папку проекта и обозначьте нужные файлы или поведение.

02

Опишите изменение

Укажите входные данные, ожидаемый результат и границы, которые нужно сохранить.

03

Изучите работу

Проверьте предлагаемые изменения и команды, прежде чем полагаться на результат.

04

Проверьте результат

Сравните фактическое поведение с ожидаемым. Если проверка не проходит, разберитесь в причине перед следующими изменениями.

Линейная интерполяция с ограничением на концах

Конкретная отправная точка
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]

Пример — отправная точка для реального проекта, а не утверждение, что сгенерированный код уже протестирован. Адаптируйте пути, зависимости и ожидаемое поведение к своему приложению.

Рабочая среда с ИИ для кода

Здесь начинается ваше следующее изменение.

Скачать для Windows ↗