Python 值分配不是';他没有按预期工作
作业没有按我想的那样进行。我试图得到我的计算的收敛性,所以我通过for循环迭代函数,当我得到容差时,我想打破循环。函数给了我一个数组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
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
如果(MaxDifDOld2=D.copy()
D未定义且calculo(E)
未返回任何内容calculo(E)
未返回任何内容。如果您可以建议对代码示例进行更正,请提供