- 22, Oct 2024
- #1
Объяснение
В этом задании вам будет предоставлен набор Н очки (х1, да1),…,(хН, даН) с отчетливым хя значения, и ваша задача — интерполировать полином через эти точки. Если вы знаете, что такое интерполяция Лагранжа, вы можете пропустить этот раздел.
Цель полиномиальная интерполяция заключается в построении (уникального) многочлена р(х) со степенью Н-1 (для более высоких степеней существуют бесконечные решения), для которых р(хя) = уя для всех я = 1…Н. Один из способов сделать это — построить Н Полиномы базиса Лагранжа и образуют линейную комбинацию. Такой базисный полином определяется следующим образом:
Как вы можете видеть, если вы оцените ля в точках х1,…,хя-1 ,хя +1,…,х Нэто 0 по построению и 1 для xя, умножая на y яизменит только значение в точке x яи установите его на yя
. Теперь, имея N таких многочленов, которые равны 0 в каждой точке, кроме одной, мы можем просто сложить их и получить желаемый результат. Итак, окончательное решение будет:
- Испытание ввод будет состоять из Н
- точки данных в любом разумном формате (список кортежей, точки, набор и т. д.)
- все координаты будут иметь целочисленное значение
- вывод будет полиномом в любом разумном формате: список коэффициентов, полиномиальный объект и т. д.
- результат должен быть точным - это означает, что некоторые решения будут иметь рациональные коэффициенты
[(0,42)] -> [42] [(0,3),(-18,9),(0,17)] -> undefined (you don't have to handle such cases) [(-1,1),(0,0),(1,1)] -> [1,0,0] [(101,-42),(0,12),(-84,3),(1,12)] -> [-4911/222351500, -10116/3269875, 692799/222351500, 12]
[1,0,0]
форматирование не имеет значения(1/2
for1 % 2
или - и т. д.), если это разумно вам не придется обрабатывать недопустимые входные данные (например, пустые входные данные или входные данные, где х
координаты повторяются)
Тестовые случаи 1
corresponds to the polynomial В этих примерах коэффициенты перечислены в порядке убывания (например,2):
2/2
х