Python 生成有限差分的初始条件矩阵

Python 生成有限差分的初始条件矩阵,python,matrix,boundary,Python,Matrix,Boundary,我想为这个有限差分关系建立一个初始条件矩阵: w{i+1,j}-4w{i,j}+w{i-1,j}+w{i,j+1}+w{i,j-1}=h^2g(x_i,y_j) 初始条件为:w{0,j}=w{N+1,j}=u0和w{i,0}=w{i,N+1}=u0(i,j=1,…,N+1) 在我的代码中,我使用for循环生成初始条件矩阵 ## N is number of interior points def BC(u0, N): for i in range(N): for j in

我想为这个有限差分关系建立一个初始条件矩阵:

w{i+1,j}-4w{i,j}+w{i-1,j}+w{i,j+1}+w{i,j-1}=h^2g(x_i,y_j)

初始条件为:w{0,j}=w{N+1,j}=u0和w{i,0}=w{i,N+1}=u0(i,j=1,…,N+1)

在我的代码中,我使用for循环生成初始条件矩阵

## N is number of interior points
def BC(u0, N):
    for i in range(N):
        for j in range(i+1):
            if i==0:
                U[i,j] = u0;
            if i==(N-1):
                U[i,j] = u0
            if i==j:
                U[i,j] = 0;
            if j==0:
                U[i,j] = u0;
            if j==(N-1):
                U[i,j] = u0; 
            else: 
                U[i,j] = 1; 
    return U.ravel(order = "F").reshape((N**2,1), order = "F"), U    
我返回两个东西:一个是按行字典顺序存储的矩阵,另一个是初始条件大小为N×N的矩阵。我检查了N=3的情况,它没有给出预期的答案,在行字典顺序中应该是U=u0[2 1 2 | 1 0 1 | 2 1 2]。我如何生成这个矩阵?是否有一些我遗漏的步骤?我不熟悉数据结构、堆栈和队列