示例#1
0
# --------------------------

initial_guess = tt.ones(operator.col_dims, [1] * order,
                        ranks=tt_rank).ortho_right()

# solve Markovian master equation in TT format
# --------------------------------------------

print('TT approach:\n')
solution = ode.trapezoidal_rule(operator, initial_distribution, initial_guess,
                                step_sizes)

# operator in QTT format
# ----------------------

operator = TT.tt2qtt(operator, qtt_modes, qtt_modes, threshold=threshold)

# initial distribution in QTT format
# ----------------------------------

initial_distribution = tt.zeros(operator.col_dims, [1] * operator.order)
for p in range(initial_distribution.order):
    initial_distribution.cores[p][0, 0, 0, 0] = 1

# initial guess in QTT format
# ---------------------------

initial_guess = tt.ones(operator.col_dims, [1] * operator.order,
                        ranks=qtt_rank).ortho_right()

# solve Markovian master equation in QTT format
示例#2
0
operator = mdl.two_step_destruction(
    1, 2, 1, m).tt2qtt([[2] * m] + [[2] * (m + 1)] + [[2] * m] + [[2] * m],
                       [[2] * m] + [[2] * (m + 1)] + [[2] * m] + [[2] * m],
                       threshold=10**-14)

# initial distribution in TT format and convert to QTT format
# -----------------------------------------------------------

initial_distribution = tt.zeros([2**m, 2**(m + 1), 2**m, 2**m], [1] * 4)
initial_distribution.cores[0][0, -1, 0, 0] = 1
initial_distribution.cores[1][0, -2, 0, 0] = 1
initial_distribution.cores[2][0, 0, 0, 0] = 1
initial_distribution.cores[3][0, 0, 0, 0] = 1
initial_distribution = TT.tt2qtt(
    initial_distribution, [[2] * m] + [[2] * (m + 1)] + [[2] * m] + [[2] * m],
    [[1] * m] + [[1] * (m + 1)] + [[1] * m] + [[1] * m],
    threshold=0)

# initial guess in QTT format
# ---------------------------

initial_guess = tt.uniform([2] * (4 * m + 1), ranks=qtt_rank).ortho_right()

# solve Markovian master equation in QTT format
# ---------------------------------------------

solution = ode.implicit_euler(operator,
                              initial_distribution,
                              initial_guess,
                              step_sizes,
                              tt_solver='mals',