【1stOpt】納尼,還有這麼簡單的數據擬合工具?

   今天給大家帶來一款非常實用的數據擬合工具——1stOpt,是一款操作非常簡單或者說是極其人性化的擬合工具,操作輸入直接說是我們腦海裏想法的映射也不爲過。

首先通過百度百科瞭解一下它吧!

1stOpt(First Optimization)是七維高科有限公司(7D-Soft High Technology Inc.)獨立開發,擁有完全自主知識產權的一套數學優化分析綜合工具軟件包。在非線性迴歸曲線擬合,非線性複雜工程模型參數估算求解等領域傲視羣雄,首屈一指,居世界領先地位。

 

  下面我將使用兩個實例,通過分別使用1stopt、matlab程序擬合以及matlab工具接口cftool這三款擬合工作展開討論,對比選出最適合您的哪一款,話不多說,直接開始吧!

 

1.身高和年齡的關係

  你不認爲“身高和年齡之間有關係嗎?”

請你們三個人分別按照每人從出生到現在每年的身高和對應的年齡記錄下來(在你本人的寶寶成長紀念冊中),製成表(註明:男生、女生,籍貫),然後分別找到它們之間的關係,用數學(函數和圖形)的方法表示出來。

姓名

年齡

身高(CM)

張海

李林

楊平

1  

78

75

74

2

87

85

86

3

96

93

91

4

105

103

101

5

114

109

110

6

120

114

117

7

126

123

125

8

130

129

130

9

136

134

135

10

142

139

141

11

152

146

150

12

157

151

158

13

161

157

161

14

163

160

165

15

165

162

167

16

166

164

169

17

168

166

171

18

169

167

174

19

170

168

174

20

170

169

174

模型建立:僅知道數據點,要想找出函數關係式來,結果可能有非常多種,區別只不過是擬合的切合度,即相關係數與1的接近程度;這裏爲推廣模型的通用性,我選用了以上三人的平均數據,以反映人羣身高隨年齡的變化趨勢。

首先算出三人各年度的平均身高,如下表所示:

年齡

1

2

3

4

5

6

7

8

9

10

平均身高

75.67

86

93.33

103

111.00

117

124.67

129.67

135

140.67

 

11

12

13

14

15

16

17

18

19

20

 

149.33

155.33

159.67

162.67

164.67

166.33

168.33

170

170.67

171

先用1stOpt擬合找出契合度最高的函數關係式,

源代碼:

data;

1   75.66666667

2   86

3   93.33333333

4   103

5   111

6   117

7   124.6666667

8   129.6666667

9   135

10   140.6666667

11   149.3333333

12   155.3333333

13   159.6666667

14   162.6666667

15   164.6666667

16   166.3333333

17   168.3333333

18   170

19   170.6666667

20   171

看完上述源代碼,是不是想說:納尼!這也算是程序源代碼?

沒錯這確實是1stopt的擬合程序,只需要輸入數據點即可,是不是超級簡單呢!

當然輸入數據點後還需要點擊界面如圖所示的“閃電”標示:

即可得到下面圖片所示的實驗結果:

   此時輸出結果界面分爲:擬合方程及其相關性排行、擬合曲線、輸出參數值三個部分

由上述實驗結果可以可知,合度最高的身高隨年齡變化趨勢函數關係式爲:

y=-509.42+1470.93*x^0.5-1134.63*x^1+0.20*x^1.5+380.19*x^2-93.82*x^2.5­-83.18*x^3+59.50*x^3.5-16.07*x^4+2.06*x^4.5-0.10*x^5

 

MATLAB實現:

源代碼:

clear;clc;

x=1:20;

y=[75.67,86,93.33,103,111.00,117,111,129.67,135,140.67,149.33,155.33,159.67,162.67,164.67,166.33,168.33,170,170.67,171];

p=polyfit(x,y,5);%p爲擬合係數

y1=p(1)*x.^5+p(2)*x.^4+p(3)*x.^3+p(4)*x.^2+p(5)*x.^1+p(6);

plot(x,y,'ro',x,y1,'b');%繪製數據點和擬合曲線

grid on%添加網格線

disp(['y1=',num2str(p(1)),'*x^5+',num2str(p(2)),'*x^4+',num2str(p(3)),'*x^3+',num2str(p(4)),'*x^2+',num2str(p(5)),'*x^1+',num2str(p(6))]);%輸出函數表達式

實驗結果:

並得到輸出的函數表達式爲:

y=0.00040948*x^5+-0.021656*x^4+0.40307*x^3+-3.3295*x^2+18.7096*x^1+59.5457

同樣利用MATLAB的cftool工具同樣可以擬合得到函數曲線和參數值如下所示:

 

通過上述對比,哪一款擬合工具你覺得最簡單呢!

 

如果感覺不明顯,那我們再來一題:

2 近幾年北京市空氣質量好多了!

你不認爲“近幾年北京市空氣質量好多了嗎?”

請你們尋找近幾年北京市空氣質量的數據,並用得到的數據找出年份和對應的藍天數之間的關係,用數學模型的方法表示出來。

再用你們建立的數學模型預測今年、明年北京市空氣質量(主要指藍天數)。

再用你們建立的數學模型預測一下,到那年北京市空氣質量全達標(主要指藍天數等於全年的天數)。

數據如下

年份                  2002       2003       2004       2005       2006       2007       2008       2009

空氣質量指數      219       219       229       234       238       246       274       285

解:首先擬合數據點以年份爲自變量,每年的藍天天數爲函數,找出函數關係式,藉助該函數關係式反應北京天氣變好情況,從而將需要預測的年份帶入函數關係式便可以大致預測出該年藍天天數。

1stOpt實現(同上述同樣的操作):

源代碼:

data;

2002   219

2003   219

2004   229

2005   234

2006   238

2007   246

2008   274

2009   285、

實驗結果:

可以得知北京每年藍天天數有關年份函數爲:

y=216.95+0.016*abs(x-1997.94)^3.487

從而可以初步預測出此模型下北京2010和2011兩年的藍天數量分別是:311天和341天,而之後自2012年起預測藍天天數大於365,因此可以簡單認定爲:從2012年起北京每年藍天天數基本等於365。

 

MATLAB實現:

源代碼:

clear;clc;

year=2002:2009;

days=[219,219,229,234,238,246,274,285];

p=polyfit(year,days,3);

days1=p(1)*year.^3+p(2)*year.^2+p(3)*year.^1+p(4);

plot(year,days,'ro',year,days1,'b');

grid on

disp(['y=',num2str(p(1)),'*x^3+',num2str(p(2)),'*x^2+',num2str(p(3)),'*x^1+',num2str(p(4))]);

實驗結果:

並得到輸出的函數表達式爲:

y=0.14141*x^3+-849.4134*x.2+1700689.4179*x^1+-1135038165.7398

即爲北京每年藍天天數有關年份的函數,從而可以初步預測出此模型下北京2010和2011兩年的藍天數量分別是:306天和334天,同1stOpt一樣自2012年起預測藍天天數大於365,因此可以簡單認定爲:從2012年起北京每年藍天天數基本等於365。

 

相比通過上述的對比分析,你是否覺得1stOpt及其的簡單易操作呢?

只需要兩步操作即可實現數據點的擬合,即:粘貼數據點->點擊”閃電”

   

​    下面免費獲得1stOpt安裝包,不妨關注微信公衆“理工科日記”,回覆“1stopt”即可獲取,感謝您的來訪,謝謝大家。

    下載之後無需安裝,即可直接運行,建立存放文件路徑不要有中文,加之在win10上可能會出現“系統不兼容的問題”,這裏只需要打開文件的屬性窗口,更改其運行兼容性爲win7或者更低的系統即可​。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章