Comments 7
Забавно.
Вчера осознал необходимость наличия в своем домашнем проекте полиноминальной интерполяции.
Ессно лень, проект-то домашний.
Сегодня с утра читаю вашу статью.
Теперь придется реализовывать, видимо это знак! =)
Вчера осознал необходимость наличия в своем домашнем проекте полиноминальной интерполяции.
Ессно лень, проект-то домашний.
Сегодня с утра читаю вашу статью.
Теперь придется реализовывать, видимо это знак! =)
Если на питоне, то уже есть готовый scipy: docs.scipy.org/doc/scipy-1.0.0/reference/tutorial/interpolate.html
Базовые идеи — это хорошо, но несколько ссылок на правильные инструменты было бы не плохо. Это не лень, просто хочется ознакомиться с тем как это делают знающие люди. В Excel получается очень громоздко, особенно когда n стремиться к 8-10.
p.s. Без использования встроенных функций (линейн, мобр, мумнож), такая вот особенность…
p.s. Без использования встроенных функций (линейн, мобр, мумнож), такая вот особенность…
Вот, пожалуйста:
LaTeX
Ну и так далее.
$$P(x) = ax^3 + bx^2 + cx + d$$
$$P(x) = \big((ax+b)\cdot x + c\big)\cdot x + d$$
\begin{align*}
P(x_1) &= y_1\\
P(x_2) &= y_2\\
P(x_3) &= y_3
\end{align*}
\begin{align*}
P(x_1) &= ax_1^2 + bx_1 + c = y_1\\
P(x_2) &= ax_2^2 + bx_2 + c = y_2\\
P(x_3) &= ax_3^2 + bx_3 + c = y_3
\end{align*}
\begin{align*}
P'(x_1) &= 3ax_1^2 + 2bx_1 + c = \frac{\partial y_1}{\partial x}\\
P(x_1) &= ax_1^3 + bx_1^2 + cx_1 + d = y_1\\
P(x_2) &= ax_2^3 + bx_2^2 + cx_2 + d = y_2\\
P'(x_2) &= 3ax_2^2 + 2bx_2 + c = \frac{\partial y_2}{\partial x}
\end{align*}
Ну и так далее.
«И так далее»
$$P(x) = ax^3 + bx^2 + cx + d$$
\begin{align*}
P'(x_1) &= 3.0a + 2.0b + 1.0c = -0.7\\
P(x_1) &= 1.0a + 1.0b + 1.0c + 1.0d = 1.0\\
P(x_2) &= 343.0a + 49.0b + 7.0c + 1.0d = 6.0\\
P'(x_2) &= 147.0a + 14.0b + 1.0c = -0.7
\end{align*}
$$a = -0.08, \quad b = 1.00, \quad c = -2.42, \quad d = 2.50$$
$$P(x) = -0.08x^3 + 1.00x^2 -2.42x + 2.50$$
Да здравствует машинное обучение
Задача адаптации многолчена n-ной степени под n+1 точку пространства называется полиномиальной интерполяцией. Существует несколько способов ее реализации. Вы можете воспользоваться интерполяционными формулами Ньютона или Лагранжа, однако самый простой способ получения интерполяционного многочлена — решение системы линейных уравнений.
Решение СЛАУ методом Гаусса неустойчиво и сложно: O(n^3).
Прямое вычисление интерполяционных коэффициентов Лагранжа гораздо проще: O(n^2).
У вас не абы какая СЛАУ, а с матрицей Вандермонда. Уметь её обращать — важная задача, и так как интерполяция Лагранжа тоже неустойчива, а для решения СЛАУ есть способы бороться с неустойчивостью. Поэтому работа ведется, и не так давно был предложен способ решать вандермондовскую СЛАУ за O(n^2) с хорошей точностью:
www.sciencedirect.com/science/article/pii/S0885064X97904428
Однако если ограничиться ознакомительным целями, то как раз самый простой способ решить вашу СЛАУ — это посчитать коэффициенты в интерполяции Лагранжа, а не наоборот.
Sign up to leave a comment.
Путеводитель по полиномам и сплайнам для программиста