您可以使用伪逆计算一种形式的插值多项式,这是一个使用 5 阶多项式近似Sin
函数的示例:
(* A function to compute {x^5, x^4, x^3, x^2, x, 1} of x *)
f = Function[x, x^# & /@ Reverse@Range[0, 5]]
xvals = Range@5;
yvals = Sin /@ Range@5;
(* Find the polynomial coefficients by solving the matrix equation *)
coeffs = PseudoInverse[f /@ xvals].yvals
poly = {x^5, x^4, x^3, x^2, x, 1}.coeffs
Plot[{Sin[x], poly}, {x, 0, 10}]
![数学图形](https://i.stack.imgur.com/7AMlI.png)
您可以看到这给出了与函数相同的输出InterpolatingPolynomial
:
Simplify[InterpolatingPolynomial[Sin /@ Range@6, x] // N]
Plot[{Sin[x], %}, {x, 0, 10}]
![数学图形](https://i.stack.imgur.com/ZTC0r.png)
该技术在构造插值多项式部分中的多项式解释中进行了描述
希望这足以让您构建一个有效的 C++ 版本。