2

補間に関していくつかの質問があったことは知っていますが、私にとって十分に役立つ回答が見つからなかったため、次の質問があります。

ポイントの2つの配列があります。1 つは時間 (x 軸) を追跡し、もう 1 つは費用 (y 軸) を追跡し、次のようなものを取得したいと考えています。

InterpolatingPolynomial[{{0, 10}, {1, 122}, {2, 3.65}, {3, 56.3}, {4, 12.4}, {5, 0}}, x]

(Mathematica では、点に適合する構築された多項式を返します)。C#でfunc<double,double>2つの配列から構築されたを返すことは可能ですか?double

前もって感謝します。

4

2 に答える 2

1

このペーパーでは、必要なものを正確に説明します。ファンデルモンド行列式法は、補間多項式の係数を取得するために行列式を計算する必要があるため、実装が非常に簡単です。ただし、オンザフライでの
構築は非常に複雑であるため、適切なインターフェイスを使用してクラスを構築することをお勧めします(例についてはここを参照してください)。あなたは次のようなことをすることができます:Func

public class CosineInterpolation {
    public CosineInterpolation(double[] x, double[] y) { ... }
    public double Interpolate(double x) { ... }
}
于 2013-01-26T12:40:58.460 に答える
1

長い一日の検索の後、自分で解決策を見つけたと思います。ラグランジュ補間を使用して関数を補間します。AFunc<double,double>は、DLINQ を使用して簡単に作成できます。例えば

public Func<doube,double> GetFunction()
{
    LagrangeInterpolation lagInter = new LagrangeInterpolation(xVals, yVals);
    return ( val => lagInter(GetValue(val) );
}

これにより、オブジェクトが返されFunc<double,double>ます。(毎回新しいオブジェクトを作成するのは良い解決策ではないことはわかっていますが、これはデモンストレーションのみを目的としています)

于 2013-01-26T16:22:48.557 に答える