Python 值分配不是';他没有按预期工作

Python 值分配不是';他没有按预期工作,python,numpy,variable-assignment,copy-assignment,Python,Numpy,Variable Assignment,Copy Assignment,作业没有按我想的那样进行。我试图得到我的计算的收敛性,所以我通过for循环迭代函数,当我得到容差时,我想打破循环。函数给了我一个数组D[nr,nz],我在for循环中迭代他,每次我想比较上一次迭代和新的迭代,以了解差异是否低于公差。但是在调用函数Ddif之前和之后,数组之间的差异是返回一个零向量。 我见过其他类似的问题,但我仍然不知道为什么它不起作用 import numpy import math nr = 4 #number of rows of D nz = 4 #number of c

作业没有按我想的那样进行。我试图得到我的计算的收敛性,所以我通过for循环迭代函数,当我得到容差时,我想打破循环。函数给了我一个数组
D[nr,nz]
,我在for循环中迭代他,每次我想比较上一次迭代和新的迭代,以了解差异是否低于公差。但是在调用函数
Ddif
之前和之后,数组之间的差异是返回一个零向量。
我见过其他类似的问题,但我仍然不知道为什么它不起作用

import numpy
import math

nr = 4 #number of rows of D
nz = 4 #number of columns of D
D = numpy.array([[50,52,54,56],[60,62,64,66],[70,72,74,76],[80,82,84,86]])
def calculo(E):
    for i in range(0, nr, 1):
        for j in range(0, nz, 1):
            E[i, j] = E[i, j] * 0.9
    print(E)
    return E

#convergence
ncolmns3 = (nr * nz)
cont_i = 0
for a in range(0, 10000, 1):
    Ddif = []
    #before calling the function
    DOld2 = D.copy()
    #turning the array in an array of one row, and (nr * nz) columns
    DOld3 = numpy.reshape(DOld2, ncolmns3)
    DOld4 = DOld3.copy()

    D = calculo(D)

    #after calling the function
    DNew2 = D.copy()
    #turning the array in an array of one row, and (nr * nz) columns
    DNew3 = numpy.reshape(DNew2, ncolmns3)
    DNew4 = DNew3.copy()

    # Difference between before and after calling the function
    for i in range(0, ncolmns3, 1):
        Ddif.append(math.fabs(DOld3[i] - DNew3[i]))

    MaxDif = numpy.max(Ddif)
    #tolerance
    Tol = 0.1
    cont_i += 1
    if (MaxDif <= Tol) is True:
        break

print(cont_i)
print(Ddif)
导入numpy
输入数学
nr=4#D的行数
nz=4#D的列数
D=numpy.数组([[50,52,54,56],[60,62,64,66],[70,72,74,76],[80,82,84,86])
def calculo(E):
对于范围内的i(0,nr,1):
对于范围(0,nz,1)内的j:
E[i,j]=E[i,j]*0.9
打印(E)
返回E
#会聚
ncolmns3=(nr*nz)
续i=0
对于范围(0、10000、1)内的a:
Ddif=[]
#在调用函数之前
DOld2=D.copy()
#在一行和(nr*nz)列的数组中旋转数组
DOld3=numpy.重塑(DOld2,ncolmns3)
DOld4=DOld3.copy()
D=计算(D)
#调用函数后
DNew2=D.copy()
#在一行和(nr*nz)列的数组中旋转数组
DNew3=numpy.重塑(DNew2,ncolmns3)
DNew4=DNew3.copy()
#调用函数前后的差异
对于范围内的i(0,ncolmns3,1):
addif.append(math.fabs(DOld3[i]-DNew3[i]))
MaxDif=numpy.max(Ddif)
#容忍度
Tol=0.1
续i+=1

如果(MaxDif
DOld2=D.copy()
D未定义且
calculo(E)
未返回任何内容

calculo(E)
未返回任何内容。如果您可以建议对代码示例进行更正,请提供