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)