Python 如何修复ValueError:要解包的值太多(预计4个)
我正在学习编写自然三次样条插值编码,但它给出了一个错误 这是我的密码:Python 如何修复ValueError:要解包的值太多(预计4个),python,Python,我正在学习编写自然三次样条插值编码,但它给出了一个错误 这是我的密码: def NatBSpline(xd,yd): size=len(xd) h=np.diff(xd) delta_y=np.diff(yd) #coeff a a=yd #matrix A A=np.zeros(shape=(size,size)) q=np.zeros(shape=(size,1)) A[0,0]=1 A[-1,-1]=1 f
def NatBSpline(xd,yd):
size=len(xd)
h=np.diff(xd)
delta_y=np.diff(yd)
#coeff a
a=yd
#matrix A
A=np.zeros(shape=(size,size))
q=np.zeros(shape=(size,1))
A[0,0]=1
A[-1,-1]=1
for i in range(1,size-1):
A[i,i-1]=h[i-1]
A[i,i+1]=h[i]
A[i,i]=2*(h[i-1]+h[i])
return A
#vector q
for i in range(1,size-1):
q[i,0]=(3/h[i])*delta_y[i]-(3/h[i-1])*delta_y[i-1]
return q
#solve for c in Ac=q
c=np.linalg.solve(A,q)
#solve for b and d
b=np.zeros(shape=(size-1,1))
d=np.zeros(shape=(size-1,1))
for i in range(0,len(d)):
b[i]=(delta_y[i]/h[i])-h[i]*(c[i+1]+2*c[i])/3
d[i]=(c[i+1]-c[i])/(3*h[i])
return b,d,c
这是我的数据
xd=np.array([0.9,1.3,1.9,2.1,2.6,3.0,3.9,4.4,4.7,5.0,6.0,7.0,8.0,9.2,\
10.5,11.3,11.6,12.0,12.6,13.0,13.3])
yd=np.array([1.3,1.5,1.85,2.1,2.6,2.7,2.4,2.15,2.05,2.1,2.25,2.3,2.25,\
1.95,1.4,0.9,0.7,0.6,0.5,0.4,0.25])
当我运行这一行时,它给出了ValueError:太多的值无法解包
a,b,c,d=NatBSpline(xd,yd)
您正在分配4个值a、b、c和d。Python告诉您NatBSplinexd,yd大于4个值,因此太多。这意味着函数不返回4个长度的可解包对象。请提供4个值,或更改左侧的变量数以匹配返回的值数。返回b,d,c-您可能会重新考虑这行是否正确。a,b,c,d=返回的b,d,c与参数的数量不匹配