我必须使用以下代码形成Jacobi矩阵。雅可比行是函数残差的值。残差。并且每个外环都将列添加到Jacobi中。问题是我不知道如何在变量'Rop'上使用索引。
我在matlab中使用了给定的索引,它在那里工作得很好。但我想我需要为python改变它。
for i1 in range(1,nxt-1):
for j1 in range(1,nyt-1):
Rop=();Rsp=();Rsgp=()
pit[i1,j1]=pit[i1,j1]+ep;
sit[i1,j1]=sit[i1,j1]+es;
sgit[i1,j1]=sgit[i1,j1]+es;
for i in range(1,nxt-1):#inner loop to calculate perturbed residual
for j in range(1,nyt-1):
if (index[i,j]!=0):
rop,rwp,rgp=residual.residual(pit,sw,sg,i,j,boold,bwold,bgold,
swold,sgold,rsoold,rswold,index,
delx, dely, depth, phi, kx, ky,
ax, ay, h, delt, qo, nxt, nyt, welin,
Vb, pvtgas, pvtoil, pvtw, relpermgo,
relpermow, time, it,fmult)
Rop[count:count+2,col]+=(rop/ep,rwp/ep,rgp/ep)
rop,rwp,rgp=residual.residual(po,sit,sg,i,j,boold,bwold,bgold,
swold,sgold,rsoold,rswold,index,
delx, dely, depth, phi, kx, ky,
ax, ay, h, delt, qo, nxt, nyt, welin,
Vb, pvtgas, pvtoil, pvtw, relpermgo,
relpermow, time, it,fmult)
Rop[count:count+2,col+1]+=(rop/es,rwp/es,rgp/es)
rop,rwp,rgp=residual.residual(po,sw,sgit,i,j,boold,bwold,bgold,
swold,sgold,rsoold,rswold,index,
delx, dely, depth, phi, kx, ky,
ax, ay, h, delt, qo, nxt, nyt, welin,
Vb, pvtgas, pvtoil, pvtw, relpermgo,
relpermow, time, it,fmult)
Rop[count:count+2,col+2]+=(rop/es,rwp/es,rgp/es)
答案 0 :(得分:0)
MATLAB使用基于1的索引,而Python使用基于0的索引。
尝试将所有范围从range(1,nxt-1)
格式更改为range(nxt)
,从而为您提供从0
到nxt-1
的序列。长格式为range(0, nxt)
。
根据您的代码很难判断您要停止的位置,但如果您想在nxt-1
之前停止,只需相应地调整范围的最后一个参数。
我不确定如何通过Rop[count:count+2,col]
向您提供建议,因为您还没有说明count
的定义方式。