Pull to refresh

Comments 7

Забавно.
Вчера осознал необходимость наличия в своем домашнем проекте полиноминальной интерполяции.
Ессно лень, проект-то домашний.
Сегодня с утра читаю вашу статью.
Теперь придется реализовывать, видимо это знак! =)
Базовые идеи — это хорошо, но несколько ссылок на правильные инструменты было бы не плохо. Это не лень, просто хочется ознакомиться с тем как это делают знающие люди. В Excel получается очень громоздко, особенно когда n стремиться к 8-10.
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.