polynomial_interpolation
関数 · 形式的冪級数 (FPS)
template <internal::static_modint_c mint>
std::vector<mint> polynomial_interpolation(const std::vector<mint> &x, const std::vector<mint> &y);
概要
多項式補間 (ラグランジュ補間)
相異なる点 $(x_i, y_i)$ を通る次数 $n-1$ 以下の多項式を求める。部分積木を多点評価と 共有し、葉に $y_i / f'(x_i)$ を置いて上向きに畳み込んで復元する。$x_i$ は相異なること。
テンプレートパラメータ
| 名前 | 説明 |
|---|---|
mint |
static modint |
パラメータ
| 名前 | 説明 |
|---|---|
x |
評価点の列(相異なる) |
y |
各点での値の列(x と同じ長さ) |
戻り値
std::vector<mint> $f(x_i) = y_i$ を満たす係数列(長さ x.size())
計算量
- $n = |x|$ として $O(n \log^2 n)$
関連項目
plus— 形式的冪級数の加算inv— 逆元 $1 / h \pmod{x^{deg}}$log— 対数 $\log h \pmod{x^{deg}}$exp— 指数 $\exp h \pmod{x^{deg}}$pow— 冪乗 $h^m \pmod{x^{deg}}$sqrt— 平方根 $\sqrt h \pmod{x^{deg}}$composition— 合成 (composition) $f(g(x)) \pmod{x^{deg}}$compositional_inverse— 合成逆 (compositional inverse) $g \pmod{x^{deg}}$div_mod— 多項式の除算 (商と剰余)div— 多項式の商 f / gmod— 多項式の剰余 f mod gmultipoint_evaluation— 多点評価taylor_shift— Taylor shift (係数の平行移動)shift_of_sampling_points— 標本点のシフト (shift of sampling points)inv_of_polynomials— 多項式の逆元 (modular inverse of polynomials)