双for循环vsnp.from函数(),为什么他们在我的案例中给出不同的结果?

2024-09-30 22:25:48 发布

您现在位置:Python中文网/ 问答频道 /正文

在尝试编程时,我需要从一个函数中创建一个2D数组(矩阵),该函数以矩阵索引(在下面的示例中是I和j)为参数并返回矩阵元素。你知道吗

我从其他答案中看到numpy.from函数()以及numpy.vectorize矢量化()应该做的诀窍,但在我的情况下,这两个似乎给了一个不同的结果,有什么可能是错误的?你知道吗

更具体地说,我在比较:

for i in range(velikost):
    for j in range(velikost):
        u[i][j] = pomozna(i,j)
return u

对于这一点(我认为相当于上述内容):

return np.fromfunction(np.vectorize(pomozna),u.shape)

下面是我的完整代码,如果你想自己运行它。感谢您的帮助,谢谢!你知道吗

import numpy as np
def jacobi(u,h,q):
    velikost = u[0].size
    star = np.copy(u)
    def pomozna(i,j):
        if i==0 or i==velikost-1 or j==0 or j==velikost-1:
            return 0
        return 1/4*(star[int(i+1)][int(j)]+star[int(i-1)][int(j)]+star[int(i)][int(j+1)]+star[int(i)][int(j-1)] - h*h*q[int(i)][int(j)])
    #return np.fromfunction(np.vectorize(pomozna),u.shape)
    for i in range(velikost):
        for j in range(velikost):
            u[i][j] = pomozna(i,j)
    return u
h=0.05
iksi = np.linspace(0,1,int(1/h))
ipsiloni = np.linspace(0,1,int(1/h))
qji = [[-1 for iks in iksi] for ips in ipsiloni]
zacetna = np.asarray([[1.0 for iks in iksi] for ips in ipsiloni])
zacetna[0] = np.zeros(iksi.size)
zacetna[-1]=np.zeros(iksi.size)
zacetna[:,0] = np.zeros(iksi.size)
zacetna[:,-1] = np.zeros(iksi.size)
print(jacobi(zacetna,h,qji))

Tags: 函数inforsizereturnnpzerosrange