Как мне сделать анализ ошибок для численных приближений кода? - PullRequest
0 голосов
/ 08 мая 2020

Я хочу найти ошибки, которые могут произойти при выполнении этого численного приближения для уравнения переноса. Мне сложно вычислить ошибку с помощью программирования. Я новичок в этом и не понимаю, как я могу вычислить ошибки на python из каждого из получаемых значений.

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.animation as animation




T = 20.0 # t
X = 10.0 # x

n = 300
m = 300

#positions of time and space, xp= x position accross grid, tp = t position accross grid
tp = T / (n - 1)
xp = X / (m - 1)

C = 0.5

U = np.zeros((n, m))

# Set the initial values for each x position
for i in range(0, n):
    U[i, 0] = np.exp(- (i * xp - 2.5) ** 2)


for i in range(1, n): # across x
    for j in range(1, m): # across t
        U[i, j] = (xp * U[i, j - 1] + C * tp * U[i - 1, j]) / (xp + C * tp) # equation for new distribution value

fig = plt.figure(1)

#gives time position instead of time step
tn = np.zeros((m, 1))
for j in range(0, m):
    tn[j] = j * tp

#gives x position instead of x step
xn = np.zeros((n, 1))
for j in range(0, n):
    xn[j] = j * xp

for i in [0, 50, 100, 150, 200, 250, 299 ]: # selects which position of time 
    label = 't = ' + str(tn[i][0]) # lables legend
    subfig = fig.add_subplot(1, 1, 1)
    subfig.plot(xn, U[:, i], label=label)
    subfig.legend()
    subfig.grid(True)
    print(tn)

# Save Image
plt.xlabel('x: position')
plt.ylabel('u: u(x, t)')
plt.title(r'$\frac{\partial u}{\partial t} + C \frac{\partial u}{\partial x} = 0$')

plt.savefig('transport-equation')
...