Загрузка данных


import numpy as np

def discContDom(a, b, n):
    h = (b - a) / (n - 1)
    M = [a + i * h for i in range(n)]
    return M

X = discContDom(0, 1, 5)
T = discContDom(0, 1, 3)

U = np.zeros((len(X), len(T)))

fi_12 = [4 * (24 / 1) * t * (1 - t) for t in T]
fi_34 = [4 * (6 / 1) * x * (1 - x) for x in X]

U[0] = fi_12
U[-1] = fi_12
U[:, 0] = fi_34
U[:, -1] = fi_34

F = -240

for i in range(1, len(X) - 1):
    for j in range(1, len(T) - 1):
        U[i][j] = 1

def Poisson(X, T, U, F):
    n_x = len(X)
    n_t = len(T)
    h_x = X[1] - X[0]
    h_t = T[1] - T[0]
    
    H = 2 / (h_x**2) + 2 / (h_t**2)
    
    for k in range(7):
        for i in range(1, n_x - 1):
            for j in range(1, n_t - 1):
                U[i][j] = round(((U[i-1][j] + U[i+1][j]) / (h_x**2) + 
                                 (U[i][j-1] + U[i][j+1]) / (h_t**2) - F) / H, 3)
    return U

U = Poisson(X, T, U, F)
print(U)