Нужна помощь в сокращении времени на графику функции монстра - PullRequest
0 голосов
/ 26 сентября 2018

Я строю график следующей функции:

function

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 (здесь не показано), но я не увидел заметных изменений.
Если кто-то может помочь, это будет очень признательно!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...