可以直接在線進(jìn)行擬合,下面是地址(已驗證)
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比明山網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式明山網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋明山地區(qū)。費用合理售后完善,十年實體公司更值得信賴。
建議你直接對數(shù)據(jù)用Matlab的cftool擬合(可以自由的自定義擬合函數(shù)形式)
首先你要知道最小二乘法的公式,然后使用數(shù)組實現(xiàn)。比如定義數(shù)組double x[10]代表十個橫坐標(biāo),double y[10]代表縱坐標(biāo),然后套公式用循環(huán)計算
#include?iostream
using?namespace?std;
const?int?MAXNUM?=?3;
int?main()
{
double?x[MAXNUM],y[MAXNUM];
double?sumx=0,sumy=0,sumxy=0,sumxx=0;
double?a,b;
int?i;
cout"輸入"MAXNUM"組樣本:";
for?(i=0;iMAXNUM;i++)
{
cinx[i]y[i];
sumx?+=?x[i];
sumy?+=?y[i];
sumxy?=?x[i]*y[i];
sumxx?=?x[i]*x[i];
}
double?averagex,averagey;
averagex?=?sumx/MAXNUM;
averagey?=?sumy/MAXNUM;
b?=?(sumxy?-?MAXNUM*averagex*averagey)/(sumxx?-?MAXNUM*averagex*averagex);
a?=?averagey?-?b*averagex;
cout"線性擬合曲線為:y="a"+"b"*y\n";
return?0;
}
擬合直線之后會有一個擬合結(jié)果表,在這個表里有直線的方程,斜率值(slop),截距值(intercept),以及這些值的誤差(error),和擬合結(jié)果的r^2(越接近于1,表明擬合結(jié)果越好)。
如果沒有看到這個表,那么點擊菜單欄上的view
-
results
log,就能看到了。
1、通過一些點擬合出一條直線。
2、參數(shù):pt_input指向傳入的點的指針。
3、ptNumbers傳入的點數(shù)量。
4、k指向擬合直線參數(shù)k的指針。
5、b指向擬合直線參數(shù)b的指針。