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


n = 5

x1 = 0
xn = 1

h = (xn - x1) / (n - 1)

X = [i * h for i in range(n)]

P = [14 / (1 + 4 * x * (1 - x)) for x in X]

F = [-1.52 * (2 - P[i] * X[i] * (1 - X[i])) for i in range(n)]

print("X =", X)
print("P =", P)
print("F =", F)

# Создаём матрицу A
A = [[0 for j in range(n)] for i in range(n)]

for i in range(n):
    for j in range(n):
        if i == j:
            A[i][j] = -2 / h**2 + P[i]

        if i == j - 1 or i == j + 1:
            A[i][j] = 1 / h**2

# Краевые условия
A[0] = [0] * n
A[0][0] = 1
F[0] = 0

A[n-1] = [0] * n
A[n-1][n-1] = 1
F[n-1] = 0

# Метод Гаусса
for i in range(n):
    for k in range(i + 1, n):
        q = A[k][i] / A[i][i]

        for j in range(i, n):
            A[k][j] = A[k][j] - q * A[i][j]

        F[k] = F[k] - q * F[i]

# Обратный ход
Y = [0] * n

for i in range(n - 1, -1, -1):
    s = 0

    for j in range(i + 1, n):
        s = s + A[i][j] * Y[j]

    Y[i] = (F[i] - s) / A[i][i]

print("Y =", Y)

print("График решения:")

import matplotlib.pyplot as plt

plt.plot(X, Y)
plt.show()