用多项式模型进行数据拟合实验
首先在文件lorenza.dat中读取出前20个数据,然后将这20个数据代入到公式中求出多项式系数,从而建立出多项式回归模型,最后通过建立出来的多项式回归模型画出P次多项式的数据拟合图。
"""
Created on Thu Mar 19 00:06:41 2020
@author: 侯明会
"""
import matplotlib.pyplot as plt
import numpy as np
N=20
data=[0]*N
fo=open("lorenza.dat","r+")
list_x=list(fo.read().splitlines(False))
fo.close()
for i in range(N):
data[i]=float(list_x[i])
def Polynomial(p):
index=[]
for i in range(N):
index=index+[i]
z1=np.polyfit(index,data,p)
p1=np.poly1d(z1)
yvals=p1(index)
plot1=plt.plot(index,data,'r*',label='original values')
plot2=plt.plot(index,yvals,label='polyfit values')
plt.xlabel('X ')
plt.ylabel('Y')
plt.legend(loc=3)
plt.title('polyfitting')
plt.show()
return
temp=True
while temp:
p=int(input("请输入P值:"))
if p<0:
print("P值不能小于0,请重新输入")
else:
break
print(str(p)+"次多项式数据拟合图为:")
Polynomial(p)