Численное интегрирование: интерполяция многочленом
Рассмотрим задачу о нахождении интеграла
Приближённо это значение можно определить, приблизив подынтегральную функцию многочленом:
при этом получается следующее приближение для интеграла:
Для построения многочлена нужно определить коэффициентов . Их можно определить, выбрав на точки и составив систему уравнений
которую можно переписать в матричном виде:
Эта система линейных алгебраических уравнений (СЛАУ) содержит уравнение и столько же неизвестных. Если все точки различны, то определитель матрицы этой системы отличен от нуля и она имеет единственное решение. Его можно найти численно, используя, например, LUP-разложение.
По традиции, код для python 2.7:
Вдумчивый читатель может заметить, что если края отрезка интегрирования имеют величину порядка 10, то уже при интерполировании кубическим четырёхчленом в матрице появляются элементы порядка
- В этом случае, с ростом элементы матрицы будут расти экспоненциально, что может привести к существенным неточностям.
Для решения этой проблемы можно воспользоваться преобразованием координат. Пусть
тогда
Так как узлы по модулю не превосходят 1, то при их возведении в степень они не будут возрастать и точность будет выше.