0

デバイスからの未校正値(x)の(サンプリングされた)セットと、それらがどうあるべきか(y)のセットがあります。anyをにy=ax^3 + bx^2 + cx + dマップする3次多項式を見つけて推定しようとしています。xy

ですから、私がする必要があるのは、最初に多項式回帰であり、次にその逆を見つけることだと思いますが、よくわかりません。最小二乗法のようなより良い解決策があるかどうか疑問に思います。

私は正しい方向への微調整および/または有用な数学ライブラリへのリンクをいただければ幸いです。

4

2 に答える 2

0

Langrange Interpolationをチェックしましたか?これは、与えられた関数の多項式近似についてです。

独立変数の適切な範囲で、多項式の特定の次数(たとえば、3次)で近似を停止できます。

参照:

于 2013-02-18T15:16:33.887 に答える
0

ちょうど多項式回帰のように見えます。生の(x)値と期待値(y)を入力する必要があります。

Math.NetNumericsを使用するRosettaCodeのコード

using MathNet.Numerics.LinearAlgebra.Double;
using MathNet.Numerics.LinearAlgebra.Double.Factorization;
public static class PolyRegression
{
    public static double[] Polyfit(double[] x, double[] y, int degree)
    {
        // Vandermonde matrix
        var v = new DenseMatrix(x.Length, degree + 1);
        for (int i = 0; i < v.RowCount; i++)
            for (int j = 0; j <= degree; j++) v[i, j] = Math.Pow(x[i], j);
        var yv = new DenseVector(y).ToColumnMatrix();
        QR qr = v.QR();
        // Math.Net doesn't have an "economy" QR, so:
        // cut R short to square upper triangle, then recompute Q
        var r = qr.R.SubMatrix(0, degree + 1, 0, degree + 1);
        var q = v.Multiply(r.Inverse());
        var p = r.Inverse().Multiply(q.TransposeThisAndMultiply(yv));
        return p.Column(0).ToArray();
    }
}
于 2016-02-23T08:49:07.737 に答える