java 多项式拟合最多的项数_牛顿插值法、曲线拟合、多项式拟合
2020年10月4日研究了一下牛頓插值法,其用途是使用x、y兩組數(shù)值,根據(jù)新的x值返回對(duì)應(yīng)的y值,與TREND、FORECAST函數(shù)不同,這種方法可應(yīng)對(duì)非線性數(shù)據(jù)。其作用類似于圖表中的曲線擬合或LINEST多項(xiàng)式擬合。類似這種迭代題,數(shù)學(xué)書(shū)上寫(xiě)的很深?yuàn)W,放到excel里就很直觀了。
B、C列是x、y對(duì)應(yīng)值,一階均差D3=(C3-C2)/($B3-$B2),下拉;
二階均差E4=(D4-D3)/($B4-$B2),下拉;
三階均差F5=(E5-E4)/($B5-$B2)。其他均差以此類推。每次新增一個(gè)已有數(shù)值,均要增加一階。
這種方法只是為了便于理解,如果只有少量數(shù)據(jù),使用這種方法也可行,如數(shù)據(jù)點(diǎn)多,每個(gè)點(diǎn)都要修改,工作量太大,故應(yīng)使用D3=IFERROR((C3-C2)/($B3-OFFSET($B$7,-COLUMNS($A3:A$7)-ROWS($A3:A$7)+1,0)),""),右拉,下拉,返回相同的數(shù)據(jù)。
A列是總計(jì)列,A2=C2,A3填{=OFFSET(D3,0,ROW(B1)-1)*PRODUCT($F$2-$B$2:B2)},下拉。
F2是新的x值,G2=SUM(A:A),即A列所有數(shù)值相加就是新y值。從結(jié)果看,精度相當(dāng)高,其實(shí)萌軟應(yīng)該寫(xiě)個(gè)函數(shù)給大家用,然而并沒(méi)有,所以現(xiàn)在只能寫(xiě)個(gè)公式玩,自定義函數(shù)肯定也能寫(xiě)出來(lái),不過(guò)也很繞。此處空白太少,我寫(xiě)不下了。
這個(gè)是用LINEST做的多項(xiàng)式擬合,精度沒(méi)有牛頓插值法那么高。下面的圖表中的公式是excel自帶的曲線擬合功能生成的公式,最高6次方,擬合的曲線此處與直線重合了,看不清楚。兩者的原理相同,應(yīng)該都是使用LINEST函數(shù)生成,所以系數(shù)完全一致。matlab里也有這種功能,如果數(shù)據(jù)要輸入excel,在excel中直接計(jì)算會(huì)更加方便。
x=11.5返回436.6132,還算可以接受。
像這種周期性數(shù)據(jù)就不能完全擬合了,可看到虛線,而且6次方多項(xiàng)式也不夠,7次方多項(xiàng)式才會(huì)比較接近,當(dāng)然圖里只能到6次方多項(xiàng)式。x=11時(shí)一切正常。
x=12返回-13,也正常。
然而,在使用一個(gè)自定義的x值時(shí),牛頓插值法的表現(xiàn)又令人崩潰。x=11.5時(shí)返回-137.973,這和多項(xiàng)式擬合返回的結(jié)果截然不同。按說(shuō)不太應(yīng)該返回這個(gè)值。6.76這個(gè)值應(yīng)該比較正常。不太確定怎么回事,或許牛頓插值法不太適用于這種周期數(shù)據(jù)?可能是遇到了傳說(shuō)中的龍格現(xiàn)象,高階導(dǎo)數(shù)產(chǎn)生的誤差逐漸擴(kuò)散傳播后導(dǎo)致最終值極度偏離。
總結(jié)
以上是生活随笔為你收集整理的java 多项式拟合最多的项数_牛顿插值法、曲线拟合、多项式拟合的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: std string与线程安全_这才是现
- 下一篇: python实现md5加密_Python