示例#1
0
    def __call__(self, f_out, f_in, dir_symbol, inv_dir, lb_method, index_field):
        def remove_asymmetric_part_of_main_assignments(assignment_collection, degrees_of_freedom):
            new_main_assignments = [Assignment(a.lhs, get_symmetric_part(a.rhs, degrees_of_freedom))
                                    for a in assignment_collection.main_assignments]
            return assignment_collection.copy(new_main_assignments)

        cqc = lb_method.conserved_quantity_computation
        velocity = cqc.defined_symbols()['velocity']
        symmetric_eq = remove_asymmetric_part_of_main_assignments(lb_method.get_equilibrium(),
                                                                  degrees_of_freedom=velocity)
        substitutions = {sym: f_out(i) for i, sym in enumerate(lb_method.pre_collision_pdf_symbols)}
        symmetric_eq = symmetric_eq.new_with_substitutions(substitutions)

        simplification = create_simplification_strategy(lb_method)
        symmetric_eq = simplification(symmetric_eq)

        density_symbol = cqc.defined_symbols()['density']

        density = self.density
        equilibrium_input = cqc.equilibrium_input_equations_from_init_values(density=density)
        equilibrium_input = equilibrium_input.new_without_subexpressions()
        density_eq = equilibrium_input.main_assignments[0]
        assert density_eq.lhs == density_symbol
        transformed_density = density_eq.rhs

        conditions = [(eq_i.rhs, sp.Equality(dir_symbol, i))
                      for i, eq_i in enumerate(symmetric_eq.main_assignments)] + [(0, True)]
        eq_component = sp.Piecewise(*conditions)

        subexpressions = [Assignment(eq.lhs, transformed_density if eq.lhs == density_symbol else eq.rhs)
                          for eq in symmetric_eq.subexpressions]

        return subexpressions + [Assignment(f_in(inv_dir[dir_symbol]),
                                            2 * eq_component - f_out(dir_symbol))]
示例#2
0
def gen_fortran_module(module,
                       t,
                       x,
                       u,
                       f,
                       g_dict,
                       const,
                       project='PX4-SIL',
                       header=True):
    x_ = sympy.MatrixSymbol('x', len(x), 1)
    u_ = sympy.MatrixSymbol('u', len(u), 1)
    ss_sub = {x[i]: x_[i, 0] for i in range(len(x))}
    ss_sub.update({u[i]: u_[i, 0] for i in range(len(u))})
    name_expr = [('f', f), ('A', f.jacobian(x)), ('B', f.jacobian(u))]
    for key in g_dict.keys():
        name = key
        expr = g_dict[key]
        name_expr.append((name, expr))
        name_expr.append((name + '_H', expr.jacobian(x)))

    routines = []
    for name, expr in name_expr:
        out = sympy.MatrixSymbol('out', expr.shape[0], expr.shape[1])
        expr = expr.applyfunc(lambda e: e.simplify())
        routines.append(
            codegen.Routine('compute_' + name,
                            sympy.Equality(out, expr.subs(ss_sub)),
                            (out, t, x_, u_) + const))

    fgen = codegen.FCodeGen(project)
    s = StringIO.StringIO()
    fgen.dump_f95(routines, s, module, header=header)
    src = s.getvalue()
    s.close()
    return src
def main():
    # Brendan Wood, MRocklin, Amelio Vazquez-Reina, Automatically populating matrix elements in SymPy,
    # http://stackoverflow.com/questions/6877061/automatically-populating-matrix-elements-in-sympy, 2011 Aug 02,
    # (accessed 2015 Dec 01)
    L = sp.Matrix(3, 3, lambda i, j: sp.var('L_%d%d' % (i, j)))

    # symmetric matrix
    A = sp.Matrix(3, 3, lambda i, j: sp.var('A_%d%d' % tuple(sorted((i, j)))))

    make_lower_triangle(L)

    LLT = L * L.transpose()

    print(L)
    print(LLT)
    print(A)

    eq = sp.Equality(LLT, A)

    print(eq)

    solution = sp.solve(
        eq,
        reduce(lambda x, y: x + y,
               [[L[i, j] for j in xrange(3)] for i in xrange(3)]))
    simplified_solution = sp.simplify(solution)

    print("solution")
    pprint(solution)
    print("simplified solution")
    pprint(simplified_solution, width=60)
示例#4
0
def test_integer_comparision():
    f = ps.fields("f [2D]")
    d = sp.Symbol("dir")

    ur = ps.Assignment(f[0, 0], sp.Piecewise((0, sp.Equality(d, 1)), (f[0, 0], True)))

    ast = ps.create_kernel(ur)
    code = ps.get_code_str(ast)

    assert "_data_f_00[_stride_f_1*ctr_1] = ((((dir) == (1))) ? (0.0): (_data_f_00[_stride_f_1*ctr_1]));" in code
示例#5
0
def fixed_points_analysis():
    """ Exercise 3a - Compute and analyse fixed points """
    g, L, d, time = sp.symbols("g, L, d, t")
    params = PendulumParameters(g=g, L=L, d=d, sin=sp.sin)
    theta = sp.Function('theta')(time)
    dt_sym = theta.diff(time)
    d2t_sym = theta.diff(time, 2)
    # System
    sys_matrix = sp.Matrix(pendulum_system([theta, dt_sym], parameters=params))
    sys = sp.Equality(sp.Matrix(np.array([[dt_sym], [d2t_sym]])), sys_matrix)
    pylog.info(u"Pendulum system:\n{}".format(sp.pretty(sys)))
    # Solve when dtheta = 0 and d2theta=0
    dt = 0
    d2t = 0
    t_sol = sp.solveset(
        sp.Equality(d2t, pendulum_equation(theta, dt, parameters=params)),
        theta  # Theta, the variable to be solved
    )
    sys_fixed = sp.Equality(sp.Matrix(np.array([[0], [0]])), sys_matrix)
    pylog.info(u"Solution for fixed points:\n{}\n{}\n{}\n{}".format(
        sp.pretty(sys_fixed), sp.pretty(sp.Equality(theta, t_sol)),
        sp.pretty(sp.Equality(dt_sym, dt)),
        sp.pretty(sp.Equality(d2t_sym, d2t))))
    # Alternative way of solving
    sol = sp.solve(sys_fixed, [theta, dt_sym])
    pylog.info(u"Solution using an alternative way of solving:\n{}".format(
        sp.pretty(sol)))
    # Jacobian, eigenvalues and eigenvectors
    jac = sys_matrix.jacobian(sp.Matrix([theta, dt_sym]))
    eigenvals = jac.eigenvals()
    eigenvects = jac.eigenvects()
    pylog.info(u"Jacobian:\n{}\nEigenvalues:\n{}\nEigenvectors:\n{}".format(
        sp.pretty(jac), sp.pretty(eigenvals), sp.pretty(eigenvects)))
    # Stability analysis
    for i, s in enumerate(sol):
        pylog.info(u"Case {}:\n{}".format(
            i + 1,
            sp.pretty(sp.Equality(sp.Matrix([theta, dt_sym]), sp.Matrix(s)))))
        res = [None for _ in eigenvals.keys()]
        for j, e in enumerate(eigenvals.keys()):
            res[j] = e.subs({theta: s[0], dt_sym: s[1], g: 9.81, L: 1, d: 0.1})
            pylog.info(u"{}\n{}".format(
                sp.pretty(sp.Equality(e, res[j])),
                "{} {}".format(sp.re(res[j]),
                               "> 0" if sp.re(res[j]) > 0 else "< 0")))
        fixed_point_type = None
        if all([sp.re(r) < 0 for r in res]):
            fixed_point_type = " stable point"
        elif all([sp.re(r) > 0 for r in res]):
            fixed_point_type = "n unstable point"
        else:
            fixed_point_type = " saddle point"
        pylog.info("Fixed point is a{}".format(fixed_point_type))
def max_load_est(sigma=0.8, thrust_max=G.thrust_max):
    if thrust_max:
        load_max = thrust_max * 4 - G.g
        pitch_max = np.arccos(float(G.W / (G.n_r * thrust_max)))

    else:
        I_m, U_m, M, N = sy.symbols('I_m U_m M N', positive=True)

        # These equalities are the equations to be solved, the stuff inside the brackets is just 'left side' and 'right side'
        Eq1 = sy.Equality(
            G.f_sigma(I_m=I_m, U_m=U_m),
            sigma)  # First term ('left side') is duty cycle, assumed 0.8 here
        Eq2 = sy.Equality(M, G.rho * G.D_p**5 * G.f_C_M() *
                          (N / 60)**2)  # The equation for M, the motor torque
        Eq3 = sy.Equality(U_m, G.f_U_m(
            M=M, N=N))  # Equation for U_m, equivalent motor voltage
        Eq4 = sy.Equality(I_m, G.f_I_m(
            M=M, N=N))  # Equation for I_m, equivalent motor current

        Eqs = [Eq1, Eq2, Eq3, Eq4]

        sol = sy.solve(Eqs, [I_m, U_m, M, N])

        I_m = sol[0][0]
        U_m = sol[0][1]
        M = sol[0][2]
        N = sol[0][3]

        I_e = G.f_I_e(sigma=sigma, I_m=I_m)
        I_b = G.n_r * I_e + G.I_c
        U_e = G.f_U_e(I_b=I_b)
        eff = (2 * np.pi * G.n_r * M * N) / (G.U_b * I_b * 60)
        T = G.f_C_T() * G.rho * (N / 60)**2 * G.D_p**4
        # print(T)
        T_b = G.f_T_b(I_b=I_b)
        blah = (G.W / (G.n_r * T))
        pitch_max = np.arccos(float(G.W / (G.n_r * T)))
        load_max = G.n_r * T - G.W
    return load_max, pitch_max
示例#7
0
def get_coeffs(x, y, debug=False):
  assert len(x) == len(y), "x and y not same length"
  N = len(x)
  d = [
    sp.Add(*[
      1/N * y[k] * sp.exp(- sp.I * j * x[k])
      for k in range(N)
    ], evaluate=not(debug))
    for j in range(N)
  ]
  if debug:
    for i, di in enumerate(d):
      display(sp.Equality(sp.symbols(f"d_{i}"), di, evaluate=False))
  return d
示例#8
0
文件: eos.py 项目: mabau/lbmpy
def van_der_walls_eos(density, gas_constant, temperature, a, b):
    pressure = sp.Symbol("P")
    vdw = sp.Equality((pressure + a * density ** 2) * (1 / density - b), gas_constant * temperature)
    return sp.solve(vdw, pressure)[0]
示例#9
0
 def matches(n):
     return (store.name == n.name
             and is_true(sympy.Equality(store.index, n.index)))
示例#10
0
def solve(*equalities):
    if len(equalities) == 1:
        return sympy.solve(equalities[0])
    return sympy.solve_poly_system(equalities)


x = sympy.Symbol("x")
print('\nПроизводная: ')
expr = x**2 + sympy.log(x)
sympy.pprint(expr)
sympy.plot(expr)
print('\nПроизводная: ')
diff = sympy.diff(expr)
sympy.pprint(diff)
sympy.plot(diff)
print('\nПервообразная: ')
integr = sympy.integrate(expr)
sympy.pprint(integr)
sympy.plot(integr)

y = sympy.Symbol("y")
eq1 = sympy.Equality(x**2 - x * y, 3)

eq2 = sympy.Equality(y**2 - x * y, -2)

eq3 = sympy.Equality(x**2, -2)

sympy.pprint(solve(eq1, eq2))
sympy.pprint(solve(eq3))
示例#11
0
def _class_resolver_dictionary() -> Dict[str, ObjectFactory]:
    import cirq
    from cirq.ops import raw_types
    import pandas as pd
    import numpy as np
    from cirq.devices.noise_model import _NoNoiseModel
    from cirq.experiments import CrossEntropyResult, CrossEntropyResultDict, GridInteractionLayer
    from cirq.experiments.grid_parallel_two_qubit_xeb import GridParallelXEBMetadata

    def _boolean_hamiltonian_gate_op(qubit_map, boolean_strs, theta):
        return cirq.BooleanHamiltonianGate(parameter_names=list(
            qubit_map.keys()),
                                           boolean_strs=boolean_strs,
                                           theta=theta).on(*qubit_map.values())

    def _identity_operation_from_dict(qubits, **kwargs):
        return cirq.identity_each(*qubits)

    def single_qubit_matrix_gate(matrix):
        if not isinstance(matrix, np.ndarray):
            matrix = np.array(matrix, dtype=np.complex128)
        return cirq.MatrixGate(matrix, qid_shape=(matrix.shape[0], ))

    def two_qubit_matrix_gate(matrix):
        if not isinstance(matrix, np.ndarray):
            matrix = np.array(matrix, dtype=np.complex128)
        return cirq.MatrixGate(matrix, qid_shape=(2, 2))

    def _parallel_gate_op(gate, qubits):
        return cirq.parallel_gate_op(gate, *qubits)

    def _datetime(timestamp: float) -> datetime.datetime:
        # As part of our serialization logic, we make sure we only serialize "aware"
        # datetimes with the UTC timezone, so we implicitly add back in the UTC timezone here.
        #
        # Please note: even if the assumption is somehow violated, the fact that we use
        # unix timestamps should mean that the deserialized datetime should refer to the
        # same point in time but may not satisfy o = read_json(to_json(o)) because the actual
        # timezones, and hour fields will not be identical.
        return datetime.datetime.fromtimestamp(timestamp,
                                               tz=datetime.timezone.utc)

    def _symmetricalqidpair(qids):
        return frozenset(qids)

    import sympy

    return {
        'AmplitudeDampingChannel': cirq.AmplitudeDampingChannel,
        'AnyIntegerPowerGateFamily': cirq.AnyIntegerPowerGateFamily,
        'AnyUnitaryGateFamily': cirq.AnyUnitaryGateFamily,
        'AsymmetricDepolarizingChannel': cirq.AsymmetricDepolarizingChannel,
        'BitFlipChannel': cirq.BitFlipChannel,
        'BitstringAccumulator': cirq.work.BitstringAccumulator,
        'BooleanHamiltonianGate': cirq.BooleanHamiltonianGate,
        'CCNotPowGate': cirq.CCNotPowGate,
        'CCXPowGate': cirq.CCXPowGate,
        'CCZPowGate': cirq.CCZPowGate,
        'Circuit': cirq.Circuit,
        'CircuitOperation': cirq.CircuitOperation,
        'ClassicallyControlledOperation': cirq.ClassicallyControlledOperation,
        'ClassicalDataDictionaryStore': cirq.ClassicalDataDictionaryStore,
        'CliffordGate': cirq.CliffordGate,
        'CliffordState': cirq.CliffordState,
        'CliffordTableau': cirq.CliffordTableau,
        'CNotPowGate': cirq.CNotPowGate,
        'ConstantQubitNoiseModel': cirq.ConstantQubitNoiseModel,
        'ControlledGate': cirq.ControlledGate,
        'ControlledOperation': cirq.ControlledOperation,
        'CrossEntropyResult': CrossEntropyResult,
        'CrossEntropyResultDict': CrossEntropyResultDict,
        'CSwapGate': cirq.CSwapGate,
        'CXPowGate': cirq.CXPowGate,
        'CZPowGate': cirq.CZPowGate,
        'CZTargetGateset': cirq.CZTargetGateset,
        'DiagonalGate': cirq.DiagonalGate,
        'DensePauliString': cirq.DensePauliString,
        'DepolarizingChannel': cirq.DepolarizingChannel,
        'DeviceMetadata': cirq.DeviceMetadata,
        'Duration': cirq.Duration,
        'FrozenCircuit': cirq.FrozenCircuit,
        'FSimGate': cirq.FSimGate,
        'GateFamily': cirq.GateFamily,
        'GateOperation': cirq.GateOperation,
        'Gateset': cirq.Gateset,
        'GeneralizedAmplitudeDampingChannel':
        cirq.GeneralizedAmplitudeDampingChannel,
        'GlobalPhaseGate': cirq.GlobalPhaseGate,
        'GlobalPhaseOperation': cirq.GlobalPhaseOperation,
        'GridDeviceMetadata': cirq.GridDeviceMetadata,
        'GridInteractionLayer': GridInteractionLayer,
        'GridParallelXEBMetadata': GridParallelXEBMetadata,
        'GridQid': cirq.GridQid,
        'GridQubit': cirq.GridQubit,
        'HPowGate': cirq.HPowGate,
        'ISwapPowGate': cirq.ISwapPowGate,
        'IdentityGate': cirq.IdentityGate,
        'InitObsSetting': cirq.work.InitObsSetting,
        'KeyCondition': cirq.KeyCondition,
        'KrausChannel': cirq.KrausChannel,
        'LinearDict': cirq.LinearDict,
        'LineQubit': cirq.LineQubit,
        'LineQid': cirq.LineQid,
        'LineTopology': cirq.LineTopology,
        'MatrixGate': cirq.MatrixGate,
        'MixedUnitaryChannel': cirq.MixedUnitaryChannel,
        'MeasurementKey': cirq.MeasurementKey,
        'MeasurementGate': cirq.MeasurementGate,
        'MeasurementType': cirq.MeasurementType,
        '_MeasurementSpec': cirq.work._MeasurementSpec,
        'Moment': cirq.Moment,
        'MutableDensePauliString': cirq.MutableDensePauliString,
        'MutablePauliString': cirq.MutablePauliString,
        '_NoNoiseModel': _NoNoiseModel,
        'NamedQubit': cirq.NamedQubit,
        'NamedQid': cirq.NamedQid,
        'NoIdentifierQubit': cirq.testing.NoIdentifierQubit,
        'ObservableMeasuredResult': cirq.work.ObservableMeasuredResult,
        'OpIdentifier': cirq.OpIdentifier,
        'ParamResolver': cirq.ParamResolver,
        'ParallelGate': cirq.ParallelGate,
        'ParallelGateFamily': cirq.ParallelGateFamily,
        'PauliInteractionGate': cirq.PauliInteractionGate,
        'PauliMeasurementGate': cirq.PauliMeasurementGate,
        'PauliString': cirq.PauliString,
        'PauliStringPhasor': cirq.PauliStringPhasor,
        'PauliStringPhasorGate': cirq.PauliStringPhasorGate,
        'PauliSum': cirq.PauliSum,
        '_PauliX': cirq.ops.pauli_gates._PauliX,
        '_PauliY': cirq.ops.pauli_gates._PauliY,
        '_PauliZ': cirq.ops.pauli_gates._PauliZ,
        'PhaseDampingChannel': cirq.PhaseDampingChannel,
        'PhaseFlipChannel': cirq.PhaseFlipChannel,
        'PhaseGradientGate': cirq.PhaseGradientGate,
        'PhasedFSimGate': cirq.PhasedFSimGate,
        'PhasedISwapPowGate': cirq.PhasedISwapPowGate,
        'PhasedXPowGate': cirq.PhasedXPowGate,
        'PhasedXZGate': cirq.PhasedXZGate,
        'ProductState': cirq.ProductState,
        'ProjectorString': cirq.ProjectorString,
        'ProjectorSum': cirq.ProjectorSum,
        'QasmUGate': cirq.circuits.qasm_output.QasmUGate,
        '_QubitAsQid': raw_types._QubitAsQid,
        'QuantumFourierTransformGate': cirq.QuantumFourierTransformGate,
        'QubitPermutationGate': cirq.QubitPermutationGate,
        'RandomGateChannel': cirq.RandomGateChannel,
        'RepetitionsStoppingCriteria': cirq.work.RepetitionsStoppingCriteria,
        'ResetChannel': cirq.ResetChannel,
        'Result': cirq.ResultDict,  # Keep support for Cirq < 0.14.
        'ResultDict': cirq.ResultDict,
        'Rx': cirq.Rx,
        'Ry': cirq.Ry,
        'Rz': cirq.Rz,
        'SingleQubitCliffordGate': cirq.SingleQubitCliffordGate,
        'SingleQubitPauliStringGateOperation':
        cirq.SingleQubitPauliStringGateOperation,
        'SingleQubitReadoutCalibrationResult':
        cirq.experiments.SingleQubitReadoutCalibrationResult,
        'SqrtIswapTargetGateset': cirq.SqrtIswapTargetGateset,
        'StabilizerStateChForm': cirq.StabilizerStateChForm,
        'StatePreparationChannel': cirq.StatePreparationChannel,
        'SwapPowGate': cirq.SwapPowGate,
        'SympyCondition': cirq.SympyCondition,
        'TaggedOperation': cirq.TaggedOperation,
        'TensoredConfusionMatrices': cirq.TensoredConfusionMatrices,
        'TiltedSquareLattice': cirq.TiltedSquareLattice,
        'ThreeQubitDiagonalGate': cirq.ThreeQubitDiagonalGate,
        'TrialResult': cirq.ResultDict,  # keep support for Cirq < 0.11.
        'TwoQubitDiagonalGate': cirq.TwoQubitDiagonalGate,
        'TwoQubitGateTabulation': cirq.TwoQubitGateTabulation,
        '_UnconstrainedDevice':
        cirq.devices.unconstrained_device._UnconstrainedDevice,
        'VarianceStoppingCriteria': cirq.work.VarianceStoppingCriteria,
        'VirtualTag': cirq.VirtualTag,
        'WaitGate': cirq.WaitGate,
        # The formatter keeps putting this back
        # pylint: disable=line-too-long
        'XEBPhasedFSimCharacterizationOptions':
        cirq.experiments.XEBPhasedFSimCharacterizationOptions,
        # pylint: enable=line-too-long
        '_XEigenState': cirq.value.product_state._XEigenState,  # type: ignore
        'XPowGate': cirq.XPowGate,
        'XXPowGate': cirq.XXPowGate,
        '_YEigenState': cirq.value.product_state._YEigenState,  # type: ignore
        'YPowGate': cirq.YPowGate,
        'YYPowGate': cirq.YYPowGate,
        '_ZEigenState': cirq.value.product_state._ZEigenState,  # type: ignore
        'ZPowGate': cirq.ZPowGate,
        'ZZPowGate': cirq.ZZPowGate,
        # Old types, only supported for backwards-compatibility
        'BooleanHamiltonian': _boolean_hamiltonian_gate_op,  # Removed in v0.15
        'IdentityOperation': _identity_operation_from_dict,
        'ParallelGateOperation': _parallel_gate_op,  # Removed in v0.14
        'SingleQubitMatrixGate': single_qubit_matrix_gate,
        'SymmetricalQidPair': _symmetricalqidpair,  # Removed in v0.15
        'TwoQubitMatrixGate': two_qubit_matrix_gate,
        # not a cirq class, but treated as one:
        'pandas.DataFrame': pd.DataFrame,
        'pandas.Index': pd.Index,
        'pandas.MultiIndex': pd.MultiIndex.from_tuples,
        'sympy.Symbol': sympy.Symbol,
        'sympy.Add': lambda args: sympy.Add(*args),
        'sympy.Mul': lambda args: sympy.Mul(*args),
        'sympy.Pow': lambda args: sympy.Pow(*args),
        'sympy.GreaterThan': lambda args: sympy.GreaterThan(*args),
        'sympy.StrictGreaterThan': lambda args: sympy.StrictGreaterThan(*args),
        'sympy.LessThan': lambda args: sympy.LessThan(*args),
        'sympy.StrictLessThan': lambda args: sympy.StrictLessThan(*args),
        'sympy.Equality': lambda args: sympy.Equality(*args),
        'sympy.Unequality': lambda args: sympy.Unequality(*args),
        'sympy.Float': lambda approx: sympy.Float(approx),
        'sympy.Integer': sympy.Integer,
        'sympy.Rational': sympy.Rational,
        'sympy.pi': lambda: sympy.pi,
        'sympy.E': lambda: sympy.E,
        'sympy.EulerGamma': lambda: sympy.EulerGamma,
        'complex': complex,
        'datetime.datetime': _datetime,
    }
示例#12
0
 def test_rp_rq(self): 
     test = self.e.rp_implied_rq.subs({rp: self.e.rq_implied_rp})
     for v in [sp.Rational(4,5), sp.Rational(1, 1), sp.Rational(6,5)]:
         self.assertTrue(sp.Equality(test.subs({rq: v}), v))

import Governing_constants_and_functions as G
import numpy as np
import sympy as sy

I_m, U_m, M, N = sy.symbols('I_m U_m M N', positive=True)

# These equalities are the equations to be solved, the stuff inside the brackets is just 'left side' and 'right side'
Eq1 = sy.Equality(G.f_sigma(I_m=I_m, U_m=U_m), 1)  # First term ('left side') is duty cycle, which is 1 for max thrust
Eq2 = sy.Equality(M, G.rho * G.D_p ** 5 * G.f_C_M() * (N/60) ** 2) # The equation for M, the motor torque
Eq3 = sy.Equality(U_m, G.f_U_m(M=M, N=N)) # Equation for U_m, equivalent motor voltage
Eq4 = sy.Equality(I_m, G.f_I_m(M=M, N=N)) # Equation for I_m, equivalent motor current

Eqs = [Eq1, Eq2, Eq3, Eq4]

sol = sy.solve(Eqs, [I_m, U_m, M, N])

I_m = sol[0][0]
U_m = sol[0][1]
M = sol[0][2]
N = sol[0][3]

I_e = G.f_I_e(sigma=1, I_m=I_m)
I_b = G.n_r * I_e + G.I_c
U_e = G.f_U_e(I_b=I_b)
eff = (2 * np.pi * G.n_r * M * N)/(G.U_b * I_b * 60)
T = G.f_C_T() * G.rho * (N/60) ** 2 * G.D_p ** 4
T_b = G.f_T_b(I_b=I_b)
print('Thrust is', T, 'N', G.f_C_M())
示例#14
0
def solve(*equalities):
    if len(equalities) == 1:
        return sympy.solve(equalities[0])
    return sympy.solve_poly_system(equalities)


x = sympy.Symbol("x")
print('\nПроизводная: ')
#expr = x ** 2 + sympy.log(x)
expr = x**2 * sympy.sin(1)
sympy.pprint(expr)
sympy.plot(expr)
print('\nПроизводная: ')
diff = sympy.diff(expr)
sympy.pprint(diff)
sympy.plot(diff)
print('\nПервообразная: ')
integr = sympy.integrate(expr)
sympy.pprint(integr)
sympy.plot(integr)

y = sympy.Symbol("y")
eq1 = sympy.Equality(3, x**2 - x * y)

eq2 = sympy.Equality(-2, y**2 - x * y)

eq3 = sympy.Equality(x**2, -2)

sympy.pprint(solve(eq1, eq2))
sympy.pprint(solve(eq3))
示例#15
0
def _class_resolver_dictionary() -> Dict[str, ObjectFactory]:
    import cirq
    from cirq.ops import raw_types
    import pandas as pd
    import numpy as np
    from cirq.devices.noise_model import _NoNoiseModel
    from cirq.experiments import CrossEntropyResult, CrossEntropyResultDict, GridInteractionLayer
    from cirq.experiments.grid_parallel_two_qubit_xeb import GridParallelXEBMetadata

    def _identity_operation_from_dict(qubits, **kwargs):
        return cirq.identity_each(*qubits)

    def single_qubit_matrix_gate(matrix):
        if not isinstance(matrix, np.ndarray):
            matrix = np.array(matrix, dtype=np.complex128)
        return cirq.MatrixGate(matrix, qid_shape=(matrix.shape[0], ))

    def two_qubit_matrix_gate(matrix):
        if not isinstance(matrix, np.ndarray):
            matrix = np.array(matrix, dtype=np.complex128)
        return cirq.MatrixGate(matrix, qid_shape=(2, 2))

    def _parallel_gate_op(gate, qubits):
        return cirq.parallel_gate_op(gate, *qubits)

    import sympy

    return {
        'AmplitudeDampingChannel': cirq.AmplitudeDampingChannel,
        'AnyIntegerPowerGateFamily': cirq.AnyIntegerPowerGateFamily,
        'AnyUnitaryGateFamily': cirq.AnyUnitaryGateFamily,
        'AsymmetricDepolarizingChannel': cirq.AsymmetricDepolarizingChannel,
        'BitFlipChannel': cirq.BitFlipChannel,
        'BitstringAccumulator': cirq.work.BitstringAccumulator,
        'BooleanHamiltonian': cirq.BooleanHamiltonian,
        'CCNotPowGate': cirq.CCNotPowGate,
        'CCXPowGate': cirq.CCXPowGate,
        'CCZPowGate': cirq.CCZPowGate,
        'Circuit': cirq.Circuit,
        'CircuitOperation': cirq.CircuitOperation,
        'ClassicallyControlledOperation': cirq.ClassicallyControlledOperation,
        'CliffordState': cirq.CliffordState,
        'CliffordTableau': cirq.CliffordTableau,
        'CNotPowGate': cirq.CNotPowGate,
        'ConstantQubitNoiseModel': cirq.ConstantQubitNoiseModel,
        'ControlledGate': cirq.ControlledGate,
        'ControlledOperation': cirq.ControlledOperation,
        'CrossEntropyResult': CrossEntropyResult,
        'CrossEntropyResultDict': CrossEntropyResultDict,
        'CSwapGate': cirq.CSwapGate,
        'CXPowGate': cirq.CXPowGate,
        'CZPowGate': cirq.CZPowGate,
        'DensePauliString': cirq.DensePauliString,
        'DepolarizingChannel': cirq.DepolarizingChannel,
        'DeviceMetadata': cirq.DeviceMetadata,
        'Duration': cirq.Duration,
        'FrozenCircuit': cirq.FrozenCircuit,
        'FSimGate': cirq.FSimGate,
        'GateFamily': cirq.GateFamily,
        'GateOperation': cirq.GateOperation,
        'Gateset': cirq.Gateset,
        'GeneralizedAmplitudeDampingChannel':
        cirq.GeneralizedAmplitudeDampingChannel,
        'GlobalPhaseGate': cirq.GlobalPhaseGate,
        'GlobalPhaseOperation': cirq.GlobalPhaseOperation,
        'GridDeviceMetadata': cirq.GridDeviceMetadata,
        'GridInteractionLayer': GridInteractionLayer,
        'GridParallelXEBMetadata': GridParallelXEBMetadata,
        'GridQid': cirq.GridQid,
        'GridQubit': cirq.GridQubit,
        'HPowGate': cirq.HPowGate,
        'ISwapPowGate': cirq.ISwapPowGate,
        'IdentityGate': cirq.IdentityGate,
        'InitObsSetting': cirq.work.InitObsSetting,
        'KeyCondition': cirq.KeyCondition,
        'KrausChannel': cirq.KrausChannel,
        'LinearDict': cirq.LinearDict,
        'LineQubit': cirq.LineQubit,
        'LineQid': cirq.LineQid,
        'LineTopology': cirq.LineTopology,
        'MatrixGate': cirq.MatrixGate,
        'MixedUnitaryChannel': cirq.MixedUnitaryChannel,
        'MeasurementKey': cirq.MeasurementKey,
        'MeasurementGate': cirq.MeasurementGate,
        '_MeasurementSpec': cirq.work._MeasurementSpec,
        'Moment': cirq.Moment,
        'MutableDensePauliString': cirq.MutableDensePauliString,
        'MutablePauliString': cirq.MutablePauliString,
        '_NoNoiseModel': _NoNoiseModel,
        'NamedQubit': cirq.NamedQubit,
        'NamedQid': cirq.NamedQid,
        'NoIdentifierQubit': cirq.testing.NoIdentifierQubit,
        'ObservableMeasuredResult': cirq.work.ObservableMeasuredResult,
        'OpIdentifier': cirq.OpIdentifier,
        'ParamResolver': cirq.ParamResolver,
        'ParallelGate': cirq.ParallelGate,
        'ParallelGateFamily': cirq.ParallelGateFamily,
        'PauliMeasurementGate': cirq.PauliMeasurementGate,
        'PauliString': cirq.PauliString,
        'PauliStringPhasor': cirq.PauliStringPhasor,
        'PauliStringPhasorGate': cirq.PauliStringPhasorGate,
        '_PauliX': cirq.ops.pauli_gates._PauliX,
        '_PauliY': cirq.ops.pauli_gates._PauliY,
        '_PauliZ': cirq.ops.pauli_gates._PauliZ,
        'PhaseDampingChannel': cirq.PhaseDampingChannel,
        'PhaseFlipChannel': cirq.PhaseFlipChannel,
        'PhaseGradientGate': cirq.PhaseGradientGate,
        'PhasedFSimGate': cirq.PhasedFSimGate,
        'PhasedISwapPowGate': cirq.PhasedISwapPowGate,
        'PhasedXPowGate': cirq.PhasedXPowGate,
        'PhasedXZGate': cirq.PhasedXZGate,
        'ProductState': cirq.ProductState,
        'ProjectorString': cirq.ProjectorString,
        'ProjectorSum': cirq.ProjectorSum,
        'QasmUGate': cirq.circuits.qasm_output.QasmUGate,
        '_QubitAsQid': raw_types._QubitAsQid,
        'QuantumFourierTransformGate': cirq.QuantumFourierTransformGate,
        'RandomGateChannel': cirq.RandomGateChannel,
        'RepetitionsStoppingCriteria': cirq.work.RepetitionsStoppingCriteria,
        'ResetChannel': cirq.ResetChannel,
        'Result': cirq.Result,
        'Rx': cirq.Rx,
        'Ry': cirq.Ry,
        'Rz': cirq.Rz,
        'SingleQubitCliffordGate': cirq.SingleQubitCliffordGate,
        'SingleQubitPauliStringGateOperation':
        cirq.SingleQubitPauliStringGateOperation,
        'SingleQubitReadoutCalibrationResult':
        cirq.experiments.SingleQubitReadoutCalibrationResult,
        'StabilizerStateChForm': cirq.StabilizerStateChForm,
        'StatePreparationChannel': cirq.StatePreparationChannel,
        'SwapPowGate': cirq.SwapPowGate,
        'SymmetricalQidPair': cirq.SymmetricalQidPair,
        'SympyCondition': cirq.SympyCondition,
        'TaggedOperation': cirq.TaggedOperation,
        'TiltedSquareLattice': cirq.TiltedSquareLattice,
        'TrialResult': cirq.Result,  # keep support for Cirq < 0.11.
        'TwoQubitGateTabulation': cirq.TwoQubitGateTabulation,
        '_UnconstrainedDevice':
        cirq.devices.unconstrained_device._UnconstrainedDevice,
        'VarianceStoppingCriteria': cirq.work.VarianceStoppingCriteria,
        'VirtualTag': cirq.VirtualTag,
        'WaitGate': cirq.WaitGate,
        # The formatter keeps putting this back
        # pylint: disable=line-too-long
        'XEBPhasedFSimCharacterizationOptions':
        cirq.experiments.XEBPhasedFSimCharacterizationOptions,
        # pylint: enable=line-too-long
        '_XEigenState': cirq.value.product_state._XEigenState,  # type: ignore
        'XPowGate': cirq.XPowGate,
        'XXPowGate': cirq.XXPowGate,
        '_YEigenState': cirq.value.product_state._YEigenState,  # type: ignore
        'YPowGate': cirq.YPowGate,
        'YYPowGate': cirq.YYPowGate,
        '_ZEigenState': cirq.value.product_state._ZEigenState,  # type: ignore
        'ZPowGate': cirq.ZPowGate,
        'ZZPowGate': cirq.ZZPowGate,
        # Old types, only supported for backwards-compatibility
        'IdentityOperation': _identity_operation_from_dict,
        'ParallelGateOperation': _parallel_gate_op,  # Removed in v0.14
        'SingleQubitMatrixGate': single_qubit_matrix_gate,
        'TwoQubitMatrixGate': two_qubit_matrix_gate,
        # not a cirq class, but treated as one:
        'pandas.DataFrame': pd.DataFrame,
        'pandas.Index': pd.Index,
        'pandas.MultiIndex': pd.MultiIndex.from_tuples,
        'sympy.Symbol': sympy.Symbol,
        'sympy.Add': lambda args: sympy.Add(*args),
        'sympy.Mul': lambda args: sympy.Mul(*args),
        'sympy.Pow': lambda args: sympy.Pow(*args),
        'sympy.GreaterThan': lambda args: sympy.GreaterThan(*args),
        'sympy.StrictGreaterThan': lambda args: sympy.StrictGreaterThan(*args),
        'sympy.LessThan': lambda args: sympy.LessThan(*args),
        'sympy.StrictLessThan': lambda args: sympy.StrictLessThan(*args),
        'sympy.Equality': lambda args: sympy.Equality(*args),
        'sympy.Unequality': lambda args: sympy.Unequality(*args),
        'sympy.Float': lambda approx: sympy.Float(approx),
        'sympy.Integer': sympy.Integer,
        'sympy.Rational': sympy.Rational,
        'sympy.pi': lambda: sympy.pi,
        'sympy.E': lambda: sympy.E,
        'sympy.EulerGamma': lambda: sympy.EulerGamma,
        'complex': complex,
    }