目錄
??1.算法異同區(qū)別
? 2.算法核心步驟
? 3.算法核心代碼
? 4.算法效果展示文章來源:http://www.zghlxwxcb.cn/news/detail-698252.html
1.算法異同區(qū)別
#*************************************************************************************************************#
方法區(qū)別探究
1.對于多項式擬合你需要大致知道這些點的分布,有的時候點比較多就很難進行進一步的聯(lián)想
2.如果我們采用非多項式擬合的話,我們可以采用最小二乘法的關系來進行進一步的逼近和擬合,最終獲得比較合適
的函數(shù)的系數(shù)即可
#*************************************************************************************************************#
? 2.算法核心步驟
#繼續(xù)研究非多項式擬合方法,我們采用的是scipy中的curve_fit函數(shù)來來進行擬合
#curve_fit的函數(shù)用法
#curve_fit(fun,x,y)
#其中fun是需要擬合而成的函數(shù)模板,x和y分別是擬合數(shù)據(jù)
#比如給出的點呈現(xiàn)于指數(shù)函數(shù)的變化方式,所以我們就設定指數(shù)函數(shù)
#具體的算法步驟如下所示:
#1.指數(shù)擬合的函數(shù)設模板
#2.導入需要擬合的數(shù)據(jù)
#3.利用curve_fit進行多項式的擬合的
#4.計算擬合函數(shù)的y值
#5.進行可視化繪圖比較
? 3.算法核心代碼
#*************************************************************************************************************#
#方法區(qū)別探究
#1.對于多項式擬合你需要大致知道這些點的分布,有的時候點比較多就很難進行進一步的聯(lián)想
#2.如果我們采用非多項式擬合的話,我們可以采用最小二乘法的關系來進行進一步的逼近和擬合,最終獲得比較合適的函數(shù)的系數(shù)即可
#繼續(xù)研究非多項式擬合方法,我們采用的是scipy中的curve_fit函數(shù)來來進行擬合
#curve_fit的函數(shù)用法
#curve_fit(fun,x,y)
#其中fun是需要擬合而成的函數(shù)模板,x和y分別是擬合數(shù)據(jù)
#比如給出的點呈現(xiàn)于指數(shù)函數(shù)的變化方式,所以我們就設定一下函數(shù)
#*************************************************************************************************************#
#**********************************************#
#首先將需要的庫和函數(shù)進行導入
import sys
import os
import numpy as np
import pylab as plb
import matplotlib as plt
from scipy.optimize import curve_fit
#**********************************************#
#**********************************************#
#curve_fit的函數(shù)用法
#curve_fit(fun,x,y)
#其中fun是需要擬合而成的函數(shù)模板,x和y分別是擬合數(shù)據(jù)
#**********************************************#
#*************************************************************************************************************#
#1.指數(shù)擬合的函數(shù)設模板
def fited_fun(x,a,b,c):
return np.power(a,x)*b+c
#2.導入需要擬合的數(shù)據(jù)
x = np.arange(1, 31, 1)
y = np.array([20, 23, 26, 29, 32, 35, 38, 45, 53, 62, 73, 86, 101, 118, 138, 161, 188, 220,
257, 300, 350, 409, 478, 558, 651, 760, 887, 1035, 1208, 1410])
#3.利用curve_fit進行多項式的擬合的
p_xishu,p1=curve_fit(fited_fun,x,y)#p_xishu表示擬合返回的list數(shù)組中a,b,c的值
#4.計算擬合函數(shù)的y值
y_new=[fited_fun(i,p_xishu[0],p_xishu[1],p_xishu[2])for i in x]
#5.進行可視化繪圖比較
ax0=plb.plot(x,y,'o--',label='OLD VALUES')
ax1=plb.plot(x,y,'*--',label='FITED VALUES')
plb.legend(loc=3, borderaxespad=0., bbox_to_anchor=(0, 0.875))
plb.title('Non-Polynomial Fitting Curve',color='r')
plb.xlabel('x value range',color='r')
plb.ylabel('y value range',color='r')
plb.savefig('C:/Users/Zeng Zhong Yan/Desktop/Non-Polynomial Fitting Curve.png', dpi=200, bbox_inches='tight')
plb.show()
#*************************************************************************************************************#
? 4.算法效果展示
文章來源地址http://www.zghlxwxcb.cn/news/detail-698252.html
到了這里,關于數(shù)學建模--非多項式擬合法的Python實現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!