我有一組(未採樣的)未校準值(x)來自一個設備和一組它們應該是(y)的。我正在尋找/估計映射任何x
到y
的三次多項式y=ax^3 + bx^2 + cx + d
。所以我想我需要做的是多項式迴歸第一,然後找到它的逆,但我不太確定;我想知道是否有更好的解決方案,如最小二乘。估算三次多項式,將set x映射到集合y
我將不勝感激正確的方向和/或任何連接到數學圖書館將是有用的。
我有一組(未採樣的)未校準值(x)來自一個設備和一組它們應該是(y)的。我正在尋找/估計映射任何x
到y
的三次多項式y=ax^3 + bx^2 + cx + d
。所以我想我需要做的是多項式迴歸第一,然後找到它的逆,但我不太確定;我想知道是否有更好的解決方案,如最小二乘。估算三次多項式,將set x映射到集合y
我將不勝感激正確的方向和/或任何連接到數學圖書館將是有用的。
看起來它只是多項式迴歸;我只需要提供原始(x)值和期望值(y)。
代碼從Rosetta Code,使用Math.Net Numerics
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();
}
}
您是否檢查過Langrange插值? 這是關於給定函數的多項式近似。
您可以停止給定度數的多項式(假設爲3度)上的近似值,以適應範圍內的變量。
參考文獻:
我想我糊塗起來過於複雜的它;我想我只需要用給定的[x,y]集合來進行多項式迴歸。 – 2013-02-18 15:48:05
與許多參考文獻相似的[問題](http://stackoverflow.com/questions/382186/fitting-polynomials-to-data)。 – Ante 2013-03-05 08:38:30