Как можно сократить код и усовершенствовать его?

import matplotlib.pyplot as plt
import numpy as np

L = 0.003
C0 = 0.03
Cs = 1.4
t = 2160
D = 7.56e-12
pi = np.pi
n = np.arange(1, 16)
x = np.arange(0, 0.0032, 0.0002)
def a(L, C0, Cs, D, t, n, x):
    return (2*(C0 - Cs)*(1-(-1)**n)/(n*pi))*np.sin((n*pi*x)/L)*np.exp(-D*(n*pi/L)**(2)*t)
C = sum(a(L, C0, Cs, D, t, n, x[0])) + Cs
C1 = sum(a(L, C0, Cs, D, t, n, x[1])) + Cs
C2 = sum(a(L, C0, Cs, D, t, n, x[2])) + Cs
C3 = sum(a(L, C0, Cs, D, t, n, x[3])) + Cs
C4 = sum(a(L, C0, Cs, D, t, n, x[4])) + Cs
C5 = sum(a(L, C0, Cs, D, t, n, x[5])) + Cs
C6 = sum(a(L, C0, Cs, D, t, n, x[6])) + Cs
C7 = sum(a(L, C0, Cs, D, t, n, x[7])) + Cs
C8 = sum(a(L, C0, Cs, D, t, n, x[8])) + Cs
C9 = sum(a(L, C0, Cs, D, t, n, x[9])) + Cs
C10 = sum(a(L, C0, Cs, D, t, n, x[10])) + Cs
C11 = sum(a(L, C0, Cs, D, t, n, x[11])) + Cs
C12 = sum(a(L, C0, Cs, D, t, n, x[12])) + Cs
C13 = sum(a(L, C0, Cs, D, t, n, x[13])) + Cs
C14 = sum(a(L, C0, Cs, D, t, n, x[14])) + Cs
C15 = sum(a(L, C0, Cs, D, t, n, x[15])) + Cs
y = (C, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15)
plt.plot(x, y)
plt.show()

Ответы (1 шт):

Автор решения: entithat
import matplotlib.pyplot as plt
import numpy as np

L = 0.003
C0 = 0.03
Cs = 1.4
t = 2160
D = 7.56e-12

n = np.arange(1, 16)
x = np.arange(0, 0.0032, 0.0002)

def a(L, C0, Cs, D, t, n, x):
    return (2*(C0 - Cs)*(1-(-1)**n)/(n*np.pi))*np.sin((n*np.pi*x)/L)*np.exp(-D*(n*np.pi/L)**(2)*t)

y = [sum(a(L, C0, Cs, D, t, n, x[i])) + Cs for i in range(16)]
plt.plot(x, y)
plt.show()

Либо: т.к. y зависит от x, то можно так:

y = [ sum(a(L, C0, Cs, D, t, n, i)) + Cs for i in x ]
→ Ссылка