c 多項式擬合

2021-10-20 14:52:07 字數 1129 閱讀 8161

基本原理:冪函式可逼近任意函式。

上式中,n表示多項式階數,實際應用中一般取3或5;

假設n=5,則:

共有6個未知數,僅需6個點即可求解;

可表示為矩陣方程:

y的維數為[r*1],u的維數[r * 6],k的維數[6 * 1]。

r> 6時,超定方程求解:

下面是使用c++實現的多項式擬合的程式,程式中使用opencv進行矩陣運算和影象顯示。程式分別執行了n=3,5,7,9時的情況,結果如下:

#include

#include

#include

using namespace cv;

using namespace std;

mat polyfit(vector& in_point, int n);

int main()

;vectorin_point(begin(in),end(in));

//n:多項式階次

int n = 9;

mat mat_k = polyfit(in_point, n);

//計算結果視覺化

mat out(150, 500, cv_8uc3,scalar::all(0));

//畫出擬合曲線

for (int i = in[0].x; i < in[size(in)-1].x; ++i)

circle(out, ipt, 1, scalar(255, 255, 255), cv_filled, cv_aa);

}//畫出原始散點

for (int i = 0; i < size(in); ++i)

imshow("9次擬合", out);

waitkey(0);

return 0;

}mat polyfit(vector& in_point, int n)

for (int i = 0; i < mat_y.rows; ++i)

//矩陣運算,獲得係數矩陣k

mat mat_k(x_num, 1, cv_64f);

mat_k = (mat_u.t()*mat_u).inv()*mat_u.t()*mat_y;

cout << mat_k << endl;

return mat_k;

多項式擬合缺點 多項式擬合

在網上看別人的心得 一 最小二乘法的基本原理 從整體上考慮近似函式同所給資料點 i 0,1,m 誤差 i 0,1,m 的大小,常用的方法有以下三種 一是誤差 i 0,1,m 絕對值的最大值,即誤差 向量的 範數 二是誤差絕對值的和,即誤差向量r的1 範數 三是誤差平方和的算術平方根,即誤差向量r的2...

多項式擬合

class1.cs 擬合類 using system using system.collections.generic using system.text namespace 最小二乘法擬合多項式 guass i,j sumarr arrx,i,arry,1,length return comput...

多項式擬合

多項式擬合 多項式的一般形式 y p x n p x p x p x p 多項式擬合的目的是為了找到一組p0 pn,使得擬合方程盡可能的與實際樣本資料相符合。假設擬合得到的多項式如下 f x p x n p x p x p x p 則擬合函式與真實結果的差方如下 loss y 1 f x 1 2 y...