In [1]:
Copied!
import numpy as np
import torch
import matplotlib.pyplot as plt
try:
import numqi
except ImportError:
%pip install numqi
import numqi
import numpy as np
import torch
import matplotlib.pyplot as plt
try:
import numqi
except ImportError:
%pip install numqi
import numqi
In [2]:
Copied!
noise_rate_list = np.linspace(0, 1, 20)
hf_channel_list = [
numqi.channel.hf_amplitude_damping_kraus_op,
numqi.channel.hf_depolarizing_kraus_op,
numqi.channel.hf_dephasing_kraus_op,
]
loss_list = []
kwargs = dict(theta0='uniform', num_repeat=3, tol=1e-10, print_every_round=0)
model = numqi.channel.ChannelCapacity1InfModel(2, num_state=2)
for hf_channel in hf_channel_list:
for noise_rate in noise_rate_list:
model.set_channel_kraus_op(hf_channel(noise_rate))
loss_list.append(-numqi.optimize.minimize(model, **kwargs).fun)
loss_list = np.array(loss_list).reshape(len(hf_channel_list), -1)
noise_rate_list = np.linspace(0, 1, 20)
hf_channel_list = [
numqi.channel.hf_amplitude_damping_kraus_op,
numqi.channel.hf_depolarizing_kraus_op,
numqi.channel.hf_dephasing_kraus_op,
]
loss_list = []
kwargs = dict(theta0='uniform', num_repeat=3, tol=1e-10, print_every_round=0)
model = numqi.channel.ChannelCapacity1InfModel(2, num_state=2)
for hf_channel in hf_channel_list:
for noise_rate in noise_rate_list:
model.set_channel_kraus_op(hf_channel(noise_rate))
loss_list.append(-numqi.optimize.minimize(model, **kwargs).fun)
loss_list = np.array(loss_list).reshape(len(hf_channel_list), -1)
In [3]:
Copied!
fig,ax = plt.subplots()
for ind0,name in enumerate(['amplitude-damping', 'depolarizing', 'phase-damping']):
ax.plot(noise_rate_list, loss_list[ind0], 'o-', label=name)
ax.set_xlabel('noise rate')
ax.set_ylabel(r'capacity $C_{1,\infty}$')
ax.legend()
ax.grid()
fig.tight_layout()
fig,ax = plt.subplots()
for ind0,name in enumerate(['amplitude-damping', 'depolarizing', 'phase-damping']):
ax.plot(noise_rate_list, loss_list[ind0], 'o-', label=name)
ax.set_xlabel('noise rate')
ax.set_ylabel(r'capacity $C_{1,\infty}$')
ax.legend()
ax.grid()
fig.tight_layout()