2

私は Mathematica で一連の整数を生成してから変更し、その集合の補間多項式を見つける関数に取り組んできました。Expand[InterpolatingPolynomial[]]C++ で集合を生成することはできますが、Mathematica のコマンドをエミュレートする方法がわかりません。これが多項式補間の問題に関係していることはわかっていますが、そのための C++ コードをどこから書き始めるべきかさえわかりません。

Wolfram に MathCode C++ の試用版をリクエストして、それが変換されるかどうかを確認しましたが、これを自分で試してみたいと思います。これを始めることができますか?

4

2 に答える 2

0

疑似逆数を使用して補間多項式の 1 つの形式を計算できます。これは、Sin5 次の多項式で関数の近似を使用した例です。

(* 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}]

Mathematica グラフィックス

InterpolatingPolynomialこれにより、関数と同じ出力が得られることがわかります。

Simplify[InterpolatingPolynomial[Sin /@ Range@6, x] // N]
Plot[{Sin[x], %}, {x, 0, 10}]

Mathematica グラフィックス

この手法については、セクション「補間多項式の構築」の「多項式の解釈」で説明されています。

これで、動作する C++ バージョンを構築するのに十分な情報が得られることを願っています。

于 2012-07-04T14:46:31.043 に答える
0

最小二乗法を考えているかもしれません。ここで、データを説明する関数を仮定し、すべての点で平均二乗誤差を最小化する係数を計算します。そのために Mathematica を調べてください - 探しているものの名​​前を知ることは大いに役立ちます.

補間は完全に別の問題です。

于 2012-07-04T12:53:37.700 に答える