python中的数值导数
我在计算两个变量函数的导数时遇到困难。 其功能是: (Z1_i-Z1_(i-1))^2+(Z2_i-Z2_(i-1))^2-L^2 $L$是维度向量($z1_i$和$z2_i$)=11,配置是起点和终点的配置,代码如下:python中的数值导数,python,numerical-methods,derivative,Python,Numerical Methods,Derivative,我在计算两个变量函数的导数时遇到困难。 其功能是: (Z1_i-Z1_(i-1))^2+(Z2_i-Z2_(i-1))^2-L^2 $L$是维度向量($z1_i$和$z2_i$)=11,配置是起点和终点的配置,代码如下: def con(zz,L,config): #zz=[z^1_1,z^2_1,z^3…..z^N_1,z^1_2,z^2_2,….z^N_2] nL=len(L) res=np.0(nL) zzM=np.0((2,nL+1)) zzM[:,0]=config['a'] zzM[
def con(zz,L,config):
#zz=[z^1_1,z^2_1,z^3…..z^N_1,z^1_2,z^2_2,….z^N_2]
nL=len(L)
res=np.0(nL)
zzM=np.0((2,nL+1))
zzM[:,0]=config['a']
zzM[:,1:-1]=zz.重塑(2,-1)
zzM[:,-1]=配置['b']
对于枚举中的i,l(l['l']):
res[i]=和((zzM[:,i+1]-zzM[:,i])**2)-l**2
返回res
遵循数值导数公式:
def numGrad(xx,f):
n=len(xx)
eps=1e-7
ngrad=np.ones((2,n))
对于范围(n)中的i:
xxz=xx.copy()
xxz[i]+=eps
ngrad[i]=(f(xxz)-f(xx))/eps
返回ngrad
fc=λzz:con(zz,l1,config1)
numGrad(zz,fc)
我得到了这个向量:
numGrad (zz, fc)
Oct [243]:
array ([0., 0., 0., 0., 0.,
0., 0., 0., 0., -0.38851931,
0.7123603])
我的问题是,知道$Z1_i$和$Z2_i$包含11个变量,这个函数的导数不是22个元素的向量吗?我做错了什么