最小二乘法擬合多項式原理以及c 實現

2021-08-15 04:38:59 字數 3184 閱讀 5197

最小二乘法(又稱最小平方法)是一種數學優化技術。它通過最小化誤差的平方和尋找資料的最佳函式匹配。

c++實現**如下:

[cpp]view plain

copy

#include 

#include 

#include 

using

namespace

std;  

//最小二乘擬合相關函式定義

double

sum(vector<

double

> vnum, 

intn);  

double

mutilsum(vector<

double

> vx, vector<

double

> vy, 

intn);  

double

relatepow(vector<

double

> vx, 

intn, 

intex);  

double

relatemutixy(vector<

double

> vx, vector<

double

> vy, 

intn, 

intex);  

void

ematrix(vector<

double

> vx, vector<

double

> vy, 

intn, 

intex, 

double

coefficient);  

void

calequation(

intexp, 

double

coefficient);  

double

f(double

c,int

l,int

m);  

double

em[6][4];  

//主函式,這裡將資料擬合成二次曲線

intmain(

intargc, 

char

* argv)  

;  double

arry2[5]=;  

double

coefficient[5];  

memset(coefficient,0,sizeof

(double

)*5);  

vector

> vx,vy;  

for(

inti=0; i<5; i++)  

ematrix(vx,vy,5,3,coefficient);  

printf("擬合方程為:y = %lf + %lfx + %lfx^2 \n"

,coefficient[1],coefficient[2],coefficient[3]);  

return

0;  

}  //累加

double

sum(vector<

double

> vnum, 

intn)  

return

dsum;  

}  //乘積和

double

mutilsum(vector<

double

> vx, vector<

double

> vy, 

intn)  

return

dmultisum;  

}  //ex次方和

double

relatepow(vector<

double

> vx, 

intn, 

intex)  

return

resum;  

}  //x的ex次方與y的乘積的累加

double

relatemutixy(vector<

double

> vx, vector<

double

> vy, 

intn, 

intex)  

return

dremultisum;  

}  //計算方程組的增廣矩陣

void

ematrix(vector<

double

> vx, vector<

double

> vy, 

intn, 

intex, 

double

coefficient)  

em[i][ex+1]=relatemutixy(vx,vy,n,i-1);  

}  em[1][1]=n;  

calequation(ex,coefficient);  

}  //求解方程

void

calequation(

intexp, 

double

coefficient)  

}  coefficient[exp]=em[exp][exp+1]/em[exp][exp];  

for(

intl=exp-1;l>=1;l--)   

//回代求解

coefficient[l]=(em[l][exp+1]-f(coefficient,l+1,exp))/em[l][l];  

}  //供calequation函式呼叫

最小二乘法擬合多項式

最小二乘法擬合多項式 求解 給定資料點 xi yi 用最小二乘法擬合資料的多項式,並求平方誤差。include include include include using namespace std const int maxn 1000 int n,m double b maxn xy doubl...

最小二乘法 多項式

多項式最小二乘法 基於一元二次方程進行推理 方程式是 f x ax 2 bx c 其中點 n x i,y i 表示多個點資訊,擬合乙個二次方程 其中原理為 i 1 n a x i 2 bx i c y i 2 min 對各個係數求導 i 1 n a x i 2 bx i c y i 2 min 對a...

多項式曲線擬合最小二乘法

對給定的試驗資料點 xi,yi i 1,2,n 可以構造m次多項式 資料擬合的最簡單的做法就是使誤差p xi yi的平方和最小 當前任務就是求乙個p x 使得 從幾何意義上講就是尋求給與定點 xi,yi 距離的平方和最小的曲線y p x 函式p x 稱為擬合函式或者是最小二乘解,求擬合函式p x 的...