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


import math
gamma = 0.6
m = -1.1
alpha = -1.3
beta = 0.6
M = -1.2
N = 1.3
h = 0.1
def f(x):
    return gamma*math.exp(m*x) + math.cos(gamma*x) #нач условие 1
def F(x):
    return alpha*math.exp(x)+beta*math.cos(gamma*x) #нач условие 2
def fi(t):
    return alpha*t+math.sin(beta*t) #гран условие 1
def psi(t):
    return math.exp(N*t)-M*math.sin(m*t)+N #гран условие 2
def main():
    x0 = 0
    x1 = 1
    n = 10
    m = 11
    h = (x1 - x0) / n
    k = h
    U = [[0] * m for _ in range(n + 1)]
    U_1 = [0] * n
    for j in range(m):
        U[0][j] = fi(j * k)
        U[n][j] = psi(j * k)
    for i in range(n + 1):
        U[i][0] = f(x0 + i * h)
    for i in range(1, n-1):
        U_1[i] = U[i][0] - h * F(x0 + i * h)
        U[i][1] = U[i + 1][0] + U[i - 1][0] - U_1[i]

    for j in range(1, m - 1):
        for i in range(1, n):
            U[i][j + 1] = U[i + 1][j] + U[i - 1][j] - U[i][j - 1]
    x = x0
    print("t:    \t\t", end="")
    while x < x1:
        print("x={0:.1f}\t".format(x), end="")
        x += h
    print()
    print("Вирт. слой:\t-----\t", end="")
    for i in range(1, n):
        print("{0:.4f}\t".format(U_1[i]), end="")
    print("-----")
    for j in range(m):
        print("t={0:.5f}:\t".format(j * k), end="")
        for i in range(n + 1):
            print("{0:.4f}\t".format(U[i][j]), end="")
        print()
if __name__ == '__main__':
    main()