Пример #1
0
    def set_unitary(self, potential):
        if isinstance(potential, str):
            try:
                if potential.strip().replace(".", "").replace("-", "").replace(
                        "e", "").isnumeric():
                    self.V_name = ""
                    self.V_latex = str(np.round(float(potential), 2))
                    if float(potential) == 0:
                        potential = 1e-30
                        v_f = float(potential) * np.ones([self.N])
                        self.U_t = UnitaryOperator2D(np.copy(v_f))
                        self.V_x = 0.0 * v_f
                    else:
                        v_f = scale(float(potential) * np.ones([self.N]), 15)
                        self.V_x = v_f
                        self.U_t = UnitaryOperator2D(np.copy(v_f))
                        self.V_latex = "%sk" % self.V_latex if v_f[0] > 0 \
                            else " %sk" % self.V_latex
                    self.V_params = {}
                    self.V_base = None
                else:
                    potential = potential.replace("^", "**")
                    f = Function(potential, "x")
                    self.V = lambda _x: f(_x, *f.get_tupled_default_values())
                    self.V_x = scale(self.V(self.x), 15)
                    self.V_name = str(f)
                    self.V_latex = "$" + f.multiply_latex_string("k") + "$"
                    self.U_t = UnitaryOperator2D(self.V)
                    self.V_base = f
                    self.V_params = f.get_enumerated_default_values()
            except (TypeError, AttributeError, SyntaxError, ValueError,
                    NameError) as E:
                print(E)
        elif isinstance(potential, np.ndarray):
            self.V_params = {}
            self.V_base = None
            self.V_x = scale(V, 15)
            self.V_name = "V(x)"
            self.V_latex = "$V(x)$"
            self.U_t = UnitaryOperator2D(V)
        else:
            print('Unable to parse input')

        if hasattr(self, "lines"):
            pass