#print(dydt[len(x)-2])
    #dydt[-1] = dydt[-2]
    return dydt


T = 5

sol = solve_ivp(odesys, [0, T],
                initial,
                max_step=0.1,
                dense_output=True,
                method='LSODA')

fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)

H00 = h.D0(xx, L)

for j in range(len(sol.t)):
    index = min(range(len(sol.t)), key=lambda i: abs(sol.t[i] - j))

    ax1.set_xlim([0, L])
    ax1.set_ylim([0, 2])
    ax1.plot(xx, sol.y[:N, index])
    ax1.set_ylabel('H')
    ax1.set_xlabel('x')

    ax2.plot(xx, sol.y[N:, index])
    ax2.set_xlim([0, L])
    ax2.set_ylim([0, 1])
    ax2.set_ylabel('E')
    ax2.set_xlabel('x')
Exemple #2
0
Ha = h.initial(x)
Ha[0] = 0
Ha[-1] = 0

T = 10
dt = dx / 2

s = dt / (2 * dx)

m = int(round(T / dt))

Herr = np.zeros(N)
Eerr = np.zeros(N)

H00 = h.D0(L)


def n(z):
    return 1 + z / float(L)


for j in range(m):
    #Ea[1:-1] = Ea[1:-1] + s*(Ha[2:] - Ha[:-2])

    Ha[0] = (4. / 3) * Ha[1] - (1. / 3) * Ha[2]
    Ha[-1] = (4. / 3) * Ha[-2] - (1. / 3) * Ha[-3]

    Ha[1:-1] = Ha[1:-1] + s * (Ea[2:] - Ea[:-2])
    #Ha[0] = (4./3)*Ha[1] - (1./3)*Ha[2]
    #Ha[-1] = -(4./3)*Ha[-2] + (1./3)*Ha[-3]