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()