নোট
এই পৃষ্ঠাটি tutorials/simulators/1_aer_provider.ipynb -থেকে বানানো হয়েছে।
সিমুলেটর (মহড়াকারি)¶
ভূমিকা¶
এই নোটবুকে দেখানো হয়েছে কিভাবে Qiskit Aer সিমুলেটর ব্যাকএন্ড ইম্পোর্ট করে সেগুলোতে আদর্শ (ত্রুটিহীন) Qiskit টেরা বর্তনী (সার্কিট) চালাতে হয়।
[1]:
import numpy as np
# Import Qiskit
from qiskit import QuantumCircuit
from qiskit import Aer, transpile
from qiskit.tools.visualization import plot_histogram, plot_state_city
import qiskit.quantum_info as qi
এয়ার প্রোভাইডার¶
Aer
প্রদানকারীর বিভিন্ন ধরণের সিমুলেশন পদ্ধতির জন্য বিভিন্ন ধরণের উচ্চ পারফরম্যান্স সিমুলেটর ব্যাকএন্ড রয়েছে। বর্তমান সিস্টেমে উপলব্ধ ব্যাকএন্ডগুলি Aer.backends
ব্যবহার করে দেখা যেতে পারে
[2]:
Aer.backends()
[2]:
[AerSimulator('aer_simulator'),
AerSimulator('aer_simulator_statevector'),
AerSimulator('aer_simulator_density_matrix'),
AerSimulator('aer_simulator_stabilizer'),
AerSimulator('aer_simulator_matrix_product_state'),
AerSimulator('aer_simulator_extended_stabilizer'),
AerSimulator('aer_simulator_unitary'),
AerSimulator('aer_simulator_superop'),
QasmSimulator('qasm_simulator'),
StatevectorSimulator('statevector_simulator'),
UnitarySimulator('unitary_simulator'),
PulseSimulator('pulse_simulator')]
এয়ার সিমুলেটর¶
Aer প্রদানকারীর প্রধান সিমুলেটর ব্যাকএন্ড হল AerSimulator
ব্যাকএন্ড। একটি নতুন সিমুলেটর ব্যাকএন্ড Aer.get_backend ('aer_simulator')
ব্যবহার করে তৈরি করা যেতে পারে।
[3]:
simulator = Aer.get_backend('aer_simulator')
স্বতঃসিদ্ধ নিয়মানুসারে AerSimulator
ব্যাকএন্ডের কাজ একটা বাস্তব যন্ত্রের অনুকরণ করা। যদি একটি QuantumCircuit
পরিমাপ চালানো হয় তবে এটি সার্কিটের যে কোনও ধ্রুপদী (ক্লাসিক্যাল) নিবন্ধকের চূড়ান্ত মান সম্বলিত একটি গণনা অভিধান ফিরিয়ে দেবে। সার্কিটে গেট, পরিমাপ, রিসেট, কন্ডিশনাল এবং অন্যান্য কাস্টম সিমুলেটর নির্দেশনা থাকতে পারে যা অন্য নোটবুকে আলোচনা করা হবে।
কোয়ান্টাম বর্তনী (সার্কিট) সিমুলেট করা¶
মৌলিক অপারেশন একটা কোয়ান্টাম বর্তনী (সার্কিট) চালায় ও একটা পরিমাপের ফলাফলের গণনা ডিকশনারি ফেরত দেয়। এখানে আমরা একটা সহজ বর্তনী (সার্কিট) চালাব যেটা একটা ২-কিউবিটসম্পন্ন বেল স্টেট \(\left|\psi\right\rangle = \frac{1}{2}\left(\left|0,0\right\rangle + \left|1,1 \right\rangle\right)\) বানাবে এবং দুটো কিউবিটই পরিমাপ করবে।
[4]:
# Create circuit
circ = QuantumCircuit(2)
circ.h(0)
circ.cx(0, 1)
circ.measure_all()
# Transpile for simulator
simulator = Aer.get_backend('aer_simulator')
circ = transpile(circ, simulator)
# Run and get counts
result = simulator.run(circ).result()
counts = result.get_counts(circ)
plot_histogram(counts, title='Bell-State counts')
[4]:

প্রত্যেকটা শটের ফলাফলের পরিমাপ ফেরত দেওয়া¶
QasmSimulator
দ্বারা প্রত্যেক শটের ফলাফলের পরিমাপের তালিকা বানানো যায়। এর জন্য run``
ফাংশনে memory=True
আর্গুমেন্টটি দিতে হয়।
[5]:
# Run and get memory
result = simulator.run(circ, shots=10, memory=True).result()
memory = result.get_memory(circ)
print(memory)
['00', '00', '11', '11', '00', '00', '11', '11', '00', '00']
এয়ার সিমুলেটরের বিকল্পসমূহ¶
AerSimulator
ব্যাকএন্ড বিভিন্ন ধরনের কনফিগারযোগ্য বিকল্প সমর্থন করে যা set_options
পদ্ধতি ব্যবহার করে হালনাগাদ করা যায়। অতিরিক্ত তথ্যের জন্য AerSimulator
এপিআই (API) বিবরণী দেখুন।
সিমুলেশন(মহড়া) পদ্ধতি সমূহ¶
AerSimulator
বিভিন্ন সিমুলেশন পদ্ধতি সমর্থন করে, যার প্রতিটি নির্দেশনার একটি ভিন্ন সেট সমর্থন করে। পদ্ধতিটি simulator.set_option(method=value)
বিকল্প ব্যবহার করে ম্যানুয়ালি সেট করা যেতে পারে, অথবা একটি পূর্বনির্ধারিত পদ্ধতি সহ একটি সিমুলেটর ব্যাকএন্ড Aer.get_backend
ব্যবহার করে সরাসরি Aer
প্রোভাইডার এর কাছ থেকে পাওয়া যেতে পারে।
আদর্শ বর্তনী (সার্কিট) অনুকরণ করার সময়, সঠিক সিমুলেশন পদ্ধতি stabilizer
, statevector
, density_matrix
এবং matrix_product_state
এর মধ্যে পদ্ধতি পরিবর্তন করলে সিমুলেশন ফলাফল পরিবর্তন করা উচিত নয় (নমুনা সম্ভাব্যতার স্বাভাবিক বৈচিত্র্য ছাড়া অন্য পরিমাপের ফলাফলের জন্য)
[6]:
# Increase shots to reduce sampling variance
shots = 10000
# Stabilizer simulation method
sim_stabilizer = Aer.get_backend('aer_simulator_stabilizer')
job_stabilizer = sim_stabilizer.run(circ, shots=shots)
counts_stabilizer = job_stabilizer.result().get_counts(0)
# Statevector simulation method
sim_statevector = Aer.get_backend('aer_simulator_statevector')
job_statevector = sim_statevector.run(circ, shots=shots)
counts_statevector = job_statevector.result().get_counts(0)
# Density Matrix simulation method
sim_density = Aer.get_backend('aer_simulator_density_matrix')
job_density = sim_density.run(circ, shots=shots)
counts_density = job_density.result().get_counts(0)
# Matrix Product State simulation method
sim_mps = Aer.get_backend('aer_simulator_matrix_product_state')
job_mps = sim_mps.run(circ, shots=shots)
counts_mps = job_mps.result().get_counts(0)
plot_histogram([counts_stabilizer, counts_statevector, counts_density, counts_mps],
title='Counts for different simulation methods',
legend=['stabilizer', 'statevector',
'density_matrix', 'matrix_product_state'])
[6]:

স্বয়ংক্রিয় সিমুলেশন পদ্ধতি¶
স্বতঃসিদ্ধ নিয়মানুসারে সিমুলেশন পদ্ধতি হল automatic
যা স্বয়ংক্রিয়ভাবে সেই সার্কিটের নির্দেশনাবলীর উপর ভিত্তি করে প্রতিটি বর্তনীর জন্য অন্য একটি সিমুলেশন পদ্ধতি বেছে নেবে। ব্যাকএন্ড পাওয়ার সময় পদ্ধতির নাম যোগ করে অথবা ব্যাকএন্ডে method
বিকল্পটি সেট করে একটি নির্দিষ্ট সিমুলেশন পদ্ধতি ধার্য করা যেতে পারে।
জিপিইউ মহড়া (সিমুলেশন)¶
statevector
, density_matrix
এবং unitary
সিমুলেটরগুলি NVidia জিপিইউতে চলমান সমর্থন করে। এই পদ্ধতির জন্য সিমুলেশন ডিভাইসটি simulator.set_options (device = 'GPU")
ব্যাকএন্ড বিকল্প ব্যবহার করে ম্যানুয়ালি CPU বা GPU তে সেট করা যেতে পারে। যদি জিপিইউ ডিভাইস না পাওয়া যায় তবে এই বিকল্পটি একটি ব্যতিক্রম তৈরি করবে।
[7]:
from qiskit.providers.aer import AerError
# Initialize a GPU backend
# Note that the cloud instance for tutorials does not have a GPU
# so this will raise an exception.
try:
simulator_gpu = Aer.get_backend('aer_simulator')
simulator_gpu.set_options(device='GPU')
except AerError as e:
print(e)
"Invalid simulation device GPU. Available devices are: ['CPU']"
যদি Qiskit এয়ার একটি সামঞ্জস্যপূর্ণ সিস্টেমে জিপিইউ সাপোর্টের সাথে ইনস্টল করা থাকে তবে Aer
প্রদানকারীর পূর্বনির্ধারিত জিপিইউ সিমুলেটর ব্যাকএন্ডগুলিও থাকবে:
aer_simulator_statevector_gpu
aer_simulator_density_matrix_gpu
aer_simulator_unitary_gpu
Note: The GPU version of Aer can be installed using pip install qiskit-aer-gpu
.
সিমুলেশন নির্ভুলতা¶
One of the available simulator options allows setting the float precision for the statevector
, density_matrix
, unitary
and superop
methods. This is done using the set_precision="single"
or precision="double"
(default) option:
[8]:
# Configure a single-precision statevector simulator backend
simulator = Aer.get_backend('aer_simulator_statevector')
simulator.set_options(precision='single')
# Run and get counts
result = simulator.run(circ).result()
counts = result.get_counts(circ)
print(counts)
{'11': 509, '00': 515}
সিমুলেশন স্পষ্টতা সেট করা উভয় CPU এবং GPU সিমুলেশন ডিভাইসের ক্ষেত্রে প্রযোজ্য। একক স্পষ্টতা প্রয়োজনীয় মেমোরি অর্ধেক করে দেবে এবং নির্দিষ্ট সিস্টেমে কর্মক্ষমতা উন্নতি করতে পারে।
বিশেষায়িত (কাস্টম) সিমুলেটরের নির্দেশনা সমূহ¶
সিমুলেটরের মান বা অবস্থা সংরক্ষণ করা¶
সিমুলেটরের অবস্থা বিশেষায়িত (কাস্টম) সিমুলেটর নির্দেশনাবলী ব্যবহার করে বিভিন্ন ফরম্যাটে সংরক্ষণ করা যায়।
বর্তনী (সার্কিট) পদ্ধতি |
বিবরণ |
সাহায্যকারী পদ্ধতিসমূহ |
---|---|---|
|
সিমুলেশন পদ্ধতির জন্য সহজাত বিন্যাসে সিমুলেটর অবস্থা সংরক্ষণ করুন |
সমস্ত |
|
সিমুলেটর স্টেটকে স্টেটভেক্টর হিসেবে সংরক্ষণ করুন |
|
|
একটি ক্লিফোর্ড স্টেবিলাইজার হিসাবে সিমুলেটর অবস্থা সংরক্ষণ করুন |
|
|
একটি ঘনত্ব ম্যাট্রিক্স হিসাবে সিমুলেটর অবস্থা সংরক্ষণ করুন |
|
|
সিমুলেটর স্টেটকে ম্যাট্রিক্স গুণন অবস্থা টেন্সর হিসেবে সংরক্ষণ করুন |
|
|
রান সার্কিটের ঐকিক (ইউনিটারি) ম্যাট্রিক্স হিসাবে সিমুলেটর অবস্থা সংরক্ষণ করুন |
|
|
সিমুলেটর স্টেটকে রান সার্কিটের সুপারঅপারেটর ম্যাট্রিক্স হিসেবে সংরক্ষণ করুন |
|
মনে রাখবেন যে এই নির্দেশনাবলী শুধুমাত্র এয়ার সিমুলেটর দ্বারা সমর্থিত এবং যদি একটি সার্কিট একটি IBM কোয়ান্টাম ডিভাইসের মত একটি নন-সিমুলেটর ব্যাকএন্ডে চালিত হয় তবে এটি একটি ত্রুটি সৃষ্টি করবে।
চূড়ান্ত স্টেটভেক্টর সংরক্ষণ করা¶
সিমুলেশনের চূড়ান্ত স্টেটভেক্টর সংরক্ষণ করার জন্য আমরা save_statevector
নির্দেশ দিয়ে সার্কিট যুক্ত করতে পারি। মনে রাখবেন যে এই নির্দেশনা যেকোনো পরিমাপের আগে প্রয়োগ করা উচিত যদি আমরা পরিমাপের পরে পতিত অবস্থায় সংরক্ষণ করতে না চাই
[9]:
# Construct quantum circuit without measure
circ = QuantumCircuit(2)
circ.h(0)
circ.cx(0, 1)
circ.save_statevector()
# Transpile for simulator
simulator = Aer.get_backend('aer_simulator')
circ = transpile(circ, simulator)
# Run and get statevector
result = simulator.run(circ).result()
statevector = result.get_statevector(circ)
plot_state_city(statevector, title='Bell state')
[9]:

সার্কিট একক সংরক্ষণ¶
QuantumCircuit
এর জন্য ঐকিক (ইউনিটারি) ম্যাট্রিক্স সংরক্ষণ করতে আমরা save_unitary
নির্দেশ দিয়ে সার্কিট যুক্ত করতে পারি। মনে রাখবেন যে এই সার্কিটটিতে কোন পরিমাপ বা রিসেট থাকতে পারে না কারণ এই নির্দেশগুলি "unitary"
সিমুলেশন পদ্ধতিতে সমর্থিত নয়
[10]:
# Construct quantum circuit without measure
circ = QuantumCircuit(2)
circ.h(0)
circ.cx(0, 1)
circ.save_unitary()
# Transpile for simulator
simulator = Aer.get_backend('aer_simulator')
circ = transpile(circ, simulator)
# Run and get unitary
result = simulator.run(circ).result()
unitary = result.get_unitary(circ)
print("Circuit unitary:\n", unitary.round(5))
Circuit unitary:
[[ 0.70711+0.j 0.70711-0.j 0. +0.j 0. +0.j]
[ 0. +0.j 0. +0.j 0.70711+0.j -0.70711+0.j]
[ 0. +0.j 0. +0.j 0.70711+0.j 0.70711-0.j]
[ 0.70711+0.j -0.70711+0.j 0. +0.j 0. +0.j]]
একাধিক মান বা অবস্থা সংরক্ষণ করা¶
আমরা একটি সার্কিটে একাধিক স্থানে সংরক্ষণ নির্দেশনাবলী প্রয়োগ করতে পারি। লক্ষ্য করুন যে এটি করার সময় আমাদের অবশ্যই প্রতিটি নির্দেশের জন্য একটি অনন্য নাম (লেবেল) প্রদান করতে হবে যাতে সেগুলি ফলাফল থেকে পুনরুদ্ধার করা যায়
[11]:
# Construct quantum circuit without measure
steps = 5
circ = QuantumCircuit(1)
for i in range(steps):
circ.save_statevector(label=f'psi_{i}')
circ.rx(i * np.pi / steps, 0)
circ.save_statevector(label=f'psi_{steps}')
# Transpile for simulator
simulator = Aer.get_backend('aer_simulator')
circ = transpile(circ, simulator)
# Run and get saved data
result = simulator.run(circ).result()
data = result.data(0)
data
[11]:
{'psi_3': array([0.58778525+0.j , 0. -0.80901699j]),
'psi_2': array([0.95105652+0.j , 0. -0.30901699j]),
'psi_5': array([-1.+0.00000000e+00j, 0.-2.77555756e-16j]),
'psi_1': array([1.+0.j, 0.+0.j]),
'psi_4': array([-0.30901699+0.j , 0. -0.95105652j]),
'psi_0': array([1.+0.j, 0.+0.j])}
একটি বিশেষায়িত (কাস্টম) অবস্থায় সিমুলেটর সেট করা¶
AerSimulator
বিশেষায়িত (কাস্টম) সিমুলেটর নির্দেশনাবলী ব্যবহার করে তার সিমুলেশন পদ্ধতিগুলির জন্য একটি বিশেষায়িত (কাস্টম) সিমুলেটর অবস্থা সেট করার অনুমতি দেয়
বর্তনী (সার্কিট) পদ্ধতি |
বিবরণ |
সাহায্যকারী পদ্ধতিসমূহ |
---|---|---|
|
সিমুলেটর স্টেটকে নির্দিষ্ট স্টেটভেক্টরে সেট করুন |
|
|
নির্দিষ্ট ক্লিফোর্ড স্টেবিলাইজারে সিমুলেটর মান বা অবস্থা সেট করুন |
|
|
নির্দিষ্ট ঘনত্বের ম্যাট্রিক্সে সিমুলেটর অবস্থা সেট করুন |
|
|
নির্দিষ্ট ঐকিক (ইউনিটারি) ম্যাট্রিক্সে সিমুলেটর অবস্থা সেট করুন |
|
|
নির্দিষ্ট সুপার অপারেটর ম্যাট্রিক্সে সিমুলেটর স্টেট সেট করুন |
|
টীকা: * এই নির্দেশাবলী অবশ্যই একটি সার্কিটের সমস্ত কিউবিটগুলিতে প্রয়োগ করতে হবে, অন্যথায় একটি ব্যতিক্রম উত্থাপিত হবে। * ইনপুট অবস্থাটি অবশ্যই একটি বৈধ অবস্থা (স্টেটভেক্টর, ঘনত্ব ম্যাট্রিক্স, ঐকিক ইত্যাদি) হতে হবে অন্যথায় একটি ব্যতিক্রম উত্থাপিত হবে। * এই নির্দেশাবলী সার্কিটের যে কোন স্থানে প্রয়োগ করা যেতে পারে এবং নির্দিষ্ট অবস্থার সাথে বর্তমান অবস্থাকে ওভাররাইড করবে। কোন ধ্রুপদী (ক্লাসিক্যাল) রেজিস্টার মান (যেমন পূর্ববর্তী পরিমাপ থেকে) প্রভাবিত হবে না * মান বা অবস্থা নির্দেশাবলী শুধুমাত্র এয়ার সিমুলেটর দ্বারা সমর্থিত হয় এবং একটি ত্রুটি হতে পারে যদি তাদের অন্তর্ভুক্ত সার্কিট একটি আইবিএম কোয়ান্টাম ডিভাইসের মত নন-সিমুলেটর ব্যাকএন্ডে চালিত হয়।।
একটি বিশেষায়িত (কাস্টম) স্টেটভেক্টর সেট করা¶
Set_statevector
নির্দেশনা একটি বিশেষায়িত (কাস্টম) Statevector
মান বা অবস্থা সেট করতে ব্যবহার করা যেতে পারে। ইনপুট স্টেটভেক্টর অবশ্যই বৈধ হতে হবে (\(|\langle\psi|\psi\rangle|=1\))
[12]:
# Generate a random statevector
num_qubits = 2
psi = qi.random_statevector(2 ** num_qubits, seed=100)
# Set initial state to generated statevector
circ = QuantumCircuit(num_qubits)
circ.set_statevector(psi)
circ.save_state()
# Transpile for simulator
simulator = Aer.get_backend('aer_simulator')
circ = transpile(circ, simulator)
# Run and get saved data
result = simulator.run(circ).result()
result.data(0)
[12]:
{'statevector': array([ 0.18572453-0.03102771j, -0.26191269-0.18155865j,
0.12367038-0.47837907j, 0.66510011-0.4200986j ])}
প্রাথমিক নির্দেশনাবলী ব্যবহার করা¶
initialize
নির্দেশনা ব্যবহার করে একটি বিশেষায়িত (কাস্টম) স্টেটভেক্টরে সিমুলেটর আরম্ভ করাও সম্ভব। Set_statevector
নির্দেশের বিপরীতে এই নির্দেশনাটি রিসেট এবং স্ট্যান্ডার্ড গেট নির্দেশনাবলীর আনরোলিং করে বাস্তব ডিভাইসের ব্যাকএন্ডেও সমর্থিত।
[13]:
# Use initilize instruction to set initial state
circ = QuantumCircuit(num_qubits)
circ.initialize(psi, range(num_qubits))
circ.save_state()
# Transpile for simulator
simulator = Aer.get_backend('aer_simulator')
circ = transpile(circ, simulator)
# Run and get result data
result = simulator.run(circ).result()
result.data(0)
[13]:
{'statevector': array([ 0.18572453-0.03102771j, -0.26191269-0.18155865j,
0.12367038-0.47837907j, 0.66510011-0.4200986j ])}
একটি বিশেষায়িত (কাস্টম) ঘনত্ব ম্যাট্রিক্স সেট করা¶
Set_density_matrix
নির্দেশনা একটি বিশেষায়িত (কাস্টম) DensityMatrix
অবস্থা সেট করতে ব্যবহার করা যেতে পারে। ইনপুট ঘনত্ব ম্যাট্রিক্স অবশ্যই বৈধ হতে হবে (\(Tr[\rho]=1, \rho \ge 0\))
[14]:
num_qubits = 2
rho = qi.random_density_matrix(2 ** num_qubits, seed=100)
circ = QuantumCircuit(num_qubits)
circ.set_density_matrix(rho)
circ.save_state()
# Transpile for simulator
simulator = Aer.get_backend('aer_simulator')
circ = transpile(circ, simulator)
# Run and get saved data
result = simulator.run(circ).result()
result.data(0)
[14]:
{'density_matrix': array([[ 0.2075308 -3.11427124e-18j, 0.13161422-1.76084787e-02j,
0.0442826 +7.74270413e-02j, 0.04852053-1.30317117e-02j],
[ 0.13161422+1.76084787e-02j, 0.20106116-2.89376869e-18j,
0.02568549-3.68981173e-02j, 0.0482903 -4.36791212e-02j],
[ 0.0442826 -7.74270413e-02j, 0.02568549+3.68981173e-02j,
0.39731492+6.09745953e-18j, -0.01114025-1.34264228e-01j],
[ 0.04852053+1.30317117e-02j, 0.0482903 +4.36791212e-02j,
-0.01114025+1.34264228e-01j, 0.19409312-8.94195941e-20j]])}
একটি বিশেষায়িত (কাস্টম) স্টেবিলাইজার অবস্থা সেট করা¶
Set_stabilizer
নির্দেশনা একটি বিশেষায়িত (কাস্টম) Clifford
স্টেবিলাইজার অবস্থা সেট করতে ব্যবহার করা যেতে পারে। ইনপুট স্টেবিলাইজার অবশ্যই একটি বৈধ Clifford
হতে হবে।
[15]:
# Generate a random Clifford C
num_qubits = 2
stab = qi.random_clifford(num_qubits, seed=100)
# Set initial state to stabilizer state C|0>
circ = QuantumCircuit(num_qubits)
circ.set_stabilizer(stab)
circ.save_state()
# Transpile for simulator
simulator = Aer.get_backend('aer_simulator')
circ = transpile(circ, simulator)
# Run and get saved data
result = simulator.run(circ).result()
result.data(0)
[15]:
{'stabilizer': {'destabilizer': ['-XZ', '-YX'], 'stabilizer': ['+ZZ', '-IZ']}}
একটা বিশেষায়িত (কাস্টম) ঐকিক (ইউনিটারি) সেট করা¶
Set_unitary
নির্দেশনা একটি বিশেষায়িত (কাস্টম) ঐকিক (ইউনিটারি) Operator
অবস্থা সেট করতে ব্যবহার করা যেতে পারে। ইনপুট ঐকিক (ইউনিটারি) ম্যাট্রিক্স ম্যাট্রিক্স অবশ্যই বৈধ হতে হবে (\(U^\dagger U=\mathbb{1}\))
[16]:
# Generate a random unitary
num_qubits = 2
unitary = qi.random_unitary(2 ** num_qubits, seed=100)
# Set initial state to unitary
circ = QuantumCircuit(num_qubits)
circ.set_unitary(unitary)
circ.save_state()
# Transpile for simulator
simulator = Aer.get_backend('aer_simulator')
circ = transpile(circ, simulator)
# Run and get saved data
result = simulator.run(circ).result()
result.data(0)
[16]:
{'unitary': array([[-0.44885724-0.26721573j, 0.10468034-0.00288681j,
0.4631425 +0.15474915j, -0.11151309-0.68210936j],
[-0.37279054-0.38484834j, 0.3820592 -0.49653433j,
0.14132327-0.17428515j, 0.19643043+0.48111423j],
[ 0.2889092 +0.58750499j, 0.39509694-0.22036424j,
0.49498355+0.2388685j , 0.25404989-0.00995706j],
[ 0.01830684+0.10524311j, 0.62584001+0.01343146j,
-0.52174025-0.37003296j, 0.12232823-0.41548904j]])}
[17]:
import qiskit.tools.jupyter
%qiskit_version_table
%qiskit_copyright
Version Information
Qiskit Software | Version |
---|---|
Qiskit | 0.25.0 |
Terra | 0.17.0 |
Aer | 0.8.0 |
Ignis | 0.6.0 |
Aqua | 0.9.0 |
IBM Q Provider | 0.12.2 |
System information | |
Python | 3.7.7 (default, May 6 2020, 04:59:01) [Clang 4.0.1 (tags/RELEASE_401/final)] |
OS | Darwin |
CPUs | 6 |
Memory (Gb) | 32.0 |
Fri Apr 02 11:48:23 2021 EDT |
This code is a part of Qiskit
© Copyright IBM 2017, 2021.
This code is licensed under the Apache License, Version 2.0. You may
obtain a copy of this license in the LICENSE.txt file in the root directory
of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.
Any modifications or derivative works of this code must retain this
copyright notice, and modified files need to carry a notice indicating
that they have been altered from the originals.