# -*- coding: utf-8 -*- """ Created on Sep 14 17:42:42 2021 @author: tuema """ print('HSK qiskit Exercises') #--------------------------------------------------------------------------- #imports from qiskit import QuantumCircuit, transpile from qiskit.providers.basic_provider import BasicSimulator from qiskit.visualization import plot_histogram,plot_bloch_multivector from qiskit.quantum_info import Statevector from qiskit import QuantumCircuit,QuantumRegister,ClassicalRegister #ploting import matplotlib.pyplot as plt #math import numpy as np ############################################################### # Make a quantum circuit for #Error Considerations using the u gate and simulate an error #by adding noise ############################################################### iterat = 100 num_qubits = 1 q = QuantumRegister(num_qubits) c = ClassicalRegister(num_qubits) qc = QuantumCircuit(q,c) bdelta = np.pi/180 #bdelta = 0 pdelta = np.pi/180 #pdelta = 0 randaver = 0 # 0 < theta < pi theta0 = np.pi/4 # 0 < phi < 2pi phi0 = np.pi/2 # 0 < lam < 2pi lam0 = 0 # 0 < theta < pi thetad0 = theta0 # 0 < phi < 2pi phid0 = np.pi - lam0 # 0 < lam < 2pi lamd0 = (-1)*phi0 # Create a test circuit #qc.h(0) qc.barrier() #Apply U dagger #Have to do a phase shift with the p gate to get complete transformation for i in range(iterat): rand0=np.random.rand() rand1=np.random.randint(2) rand=rand0 * ((-1)**rand1) randaver = randaver + rand theta=theta0+(rand * bdelta) rand0=np.random.rand() rand1=np.random.randint(2) rand=rand0 * ((-1)**rand1) randaver = randaver + rand phi=phi0+(rand * pdelta) rand0=np.random.rand() rand1=np.random.randint(2) rand=rand0 * ((-1)**rand1) randaver = randaver + rand lam=lam0+(rand * pdelta) rand0=np.random.rand() rand1=np.random.randint(2) rand=rand0 * ((-1)**rand1) randaver = randaver + rand thetad=thetad0+(rand * bdelta) rand0=np.random.rand() rand1=np.random.randint(2) rand=rand0 * ((-1)**rand1) randaver = randaver + rand phid=phid0+(rand * pdelta) rand0=np.random.rand() rand1=np.random.randint(2) rand=rand0 * ((-1)**rand1) randaver = randaver + rand lamd=lamd0+(rand * pdelta) # print('i:',i) # print('Delta theta:',theta-theta0) # print('Delta phi:',phi-phi0) # print('Delta lam:',lam-lam0) # print('Delta thetad:',thetad-thetad0) # print('Delta phid:',phid-phid0) # print('Delta lamd:',lamd-lamd0) qc.u(theta,phi,lam,q) qc.p(-np.pi,q) qc.u(thetad,phid,lamd,q) qc.barrier() #qc.h(0) # Measure qc.measure(q[0],c[0]) #--------------------------------------------------------------------------- #draw qc.draw("mpl") plt.show() #sv=Statevector(qc) #plot_bloch_multivector(sv) #plt.show() #Simulate the Quantum Circuit sim_backend = BasicSimulator() job = sim_backend.run(transpile(qc, sim_backend), shots=1024) result = job.result() counts = result.get_counts(qc) count0 = counts.get('0') count1 = counts.get('1') randaver = randaver/iterat print('----------------------------') print("Basic simulator : ") print(result.get_counts(qc)) print('randaver :',randaver) print('Count 0 :',count0) print('Count 1 :',count1) #--------------------------------------------------------------------------- #plot counts = result.get_counts(qc) legend = ['First execution'] plot_histogram([counts], legend=legend, color=['midnightblue'], title="HSK Base Circuit 3") plt.show() #--------------------------------------------------------------------------- #end