Я строю график следующей функции:
L (l = 0) довольно понятен в коде, который кусочно с 2условия: B1 и B2.Это моя попытка построения графиков (в Python):
import numpy as np
from mpmath import *
from sympy import *
import matplotlib.pyplot as plt
ulist = np.random.uniform(size=40)
sigma = 0.05
somelist = []
def fsubk(t0):
somelist.clear()
for i in range(0,len(ulist)):
somelist.append(float(exp((ulist[i]-t0)/(sigma/sqrt(2)))*nsum(lambda k: exp(-k/(sigma/sqrt(2))),[1,inf])))
somelist.append(float(exp((t0-ulist[i])/(sigma/sqrt(2)))*nsum(lambda k: exp(k/(sigma/sqrt(2))),[-inf,-1])))
if t0 >= ulist[i]:
somelist.append(float(exp((ulist[i]-t0)/(sigma/sqrt(2))))) # B1 condition
else:
somelist.append(float(exp((t0-ulist[i])/(sigma/sqrt(2))))) # B2 condition
return float(np.sum(somelist)*(1/(sigma*sqrt(2)))+10)
vfunc = np.vectorize(fsubk)
x = np.linspace(0,0.9999999999999,100)
y = vfunc(x)
plt.plot(x,y)
plt.show()
Я стремлюсь оптимизировать мой код, чтобы генерация графика была значительно быстрее.Sympy рекомендует использовать модуль autowrap, и я попытался сделать это с помощью binary_function и lambdify (здесь не показано), но я не увидел заметных изменений.
Если кто-то может помочь, это будет очень признательно!