_python_core.py 文件源码

python
阅读 30 收藏 0 点赞 0 评论 0

项目:jitcdde 作者: neurophysik 项目源码 文件源码
def __init__(self,
                f,
                past,
                helpers = (),
                control_pars = (),
                n_basic = None,
                tangent_indices = (),
            ):
        self.past = past
        self.t, self.y, self.diff = self.past[-1]
        self.n = len(self.y)
        self.n_basic = n_basic or self.n
        self.tangent_indices = tangent_indices
        self.last_garbage = -1
        self.old_new_y = None

        self.parameters = []

        from jitcdde._jitcdde import t, y, past_y, anchors
        from sympy import DeferredVector, sympify, lambdify
        Y = DeferredVector("Y")
        substitutions = list(reversed(helpers)) + [(y(i),Y[i]) for i in range(self.n)]

        past_calls = 0
        f_wc = []
        for entry in f():
            new_entry = sympify(entry).subs(substitutions).simplify(ratio=1.0)
            past_calls += new_entry.count(anchors)
            f_wc.append(new_entry)

        F = lambdify(
            [t, Y] + list(control_pars),
            f_wc,
            [
                {
                    anchors.name: self.get_past_anchors,
                    past_y .name: interpolate
                },
                "math"
            ]
            )

        self.f = lambda *args: np.array(F(*args)).flatten()

        self.anchor_mem = (len(past)-1)*np.ones(past_calls, dtype=int)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号