在尝试编程时,我需要从一个函数中创建一个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))
或许可以试试
在波莫兹纳。你知道吗
相关问题 更多 >
编程相关推荐