如何正确索引元组



我必须使用以下代码形成一个雅可比矩阵。雅可比的行是函数残差.残差的值。并且对于每个外部循环,列被添加到雅可比。问题是我不知道如何在变量"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)

MATLAB 使用基于 1 的索引,而 Python 使用基于 0 的索引。

尝试将所有范围从形式更改为range(1,nxt-1) range(nxt) ,这将为您提供从 0nxt-1 的序列,包括。长形式是range(0, nxt).

很难根据

代码判断要停止的位置,但是如果您想在nxt-1之前停止,只需相应地调整范围的最后一个参数即可。

我不确定如何就Rop[count:count+2,col]为您提供建议,因为您还没有展示如何定义count

相关内容

最新更新