File:One dimensional quantum random walk.svg

De Wikimedia Commons
Salta a la navegació Salta a la cerca

Fitxer original(fitxer SVG, nominalment 576 × 432 píxels, mida del fitxer: 29 Ko)

Llegendes

Llegendes

Afegeix una explicació d'una línia del que representa aquest fitxer
Probability distribution resulting from one dimensional discrete time random walks. The quantum walk created using the Hadamard coin is plotted (orange) vs a classical walk (blue) after 50 time steps.

Resum

[modifica]
Descripció
English: Probability distribution resulting from one dimensional discrete time random walks. The quantum walk created using the Hadamard coin is plotted (orange) vs a classical walk (blue) after 50 time steps. The average is marked with a vertical line in the same color. Starting conditions were (1*|↑⟩+0*|↓⟩)*|0⟩.
Data
Font File:One_dimensional_quantum_random_walk.png
Autor shoyer
  1. Code, python3.7:
import numpy as np
import math
import matplotlib.pyplot as plt
import time
import colorsys
import cmath
size=1000

def run_classical_randwalk(itersteps,initsim_mat):
    simmat=initsim_mat
    for iterstep in range(itersteps):
        newsimmat=np.zeros((2*size+1,2), dtype=complex)
        for matindex in range(2*size+1):
            to_right=0.5*simmat[matindex][0]
            to_left=0.5*simmat[matindex][0]
            if(matindex-1>=0):
                newsimmat[matindex-1][0]+=to_left
            if(matindex+1<=2*size):
                newsimmat[matindex+1][0]+=to_right
        simmat=newsimmat

    psisquared=np.zeros(2*size+1)
    for matindex in range(2*size+1):
        psisquared[matindex]+=abs(newsimmat[matindex][0])

    average_x=0
    min_x=0
    max_x=0
    datastartflag=0
    for matindex in range(2*size+1):
        if(datastartflag==0):
            min_x=matindex
        if(psisquared[matindex]>0):
            datastartflag=1
            max_x=matindex
        average_x+=psisquared[matindex]*(matindex-(size+1))
    print(f"validdatarange {max_x-min_x}")
    return(range(min_x-(size+1),max_x-size,2),psisquared[min_x:max_x+1:2],average_x)

def run_quantum_randwalk(itersteps,initsim_mat):
    simmat=initsim_mat
    for iterstep in range(itersteps):
        newsimmat=np.zeros((2*size+1,2), dtype=complex)
        for matindex in range(2*size+1):
            hadamard_spinup=1/math.sqrt(2)*(simmat[matindex][0]+simmat[matindex][1])
            hadamard_spindown=1/math.sqrt(2)*(simmat[matindex][0]-simmat[matindex][1])
            if(matindex-1>=0):
                newsimmat[matindex-1][1]+=hadamard_spindown
            if(matindex+1<=2*size):
                newsimmat[matindex+1][0]+=hadamard_spinup
        simmat=newsimmat

    psisquared=np.zeros(2*size+1)
    for matindex in range(2*size+1):
        psisquared[matindex]+=abs(newsimmat[matindex][0])**2+abs(newsimmat[matindex][1])**2

    average_x=0
    min_x=0
    max_x=0
    datastartflag=0
    for matindex in range(2*size+1):
        if(datastartflag==0):
            min_x=matindex
        if(psisquared[matindex]>0):
            datastartflag=1
            max_x=matindex
        average_x+=psisquared[matindex]*(matindex-(size+1))
    print(f"validdatarange {max_x-min_x}")
    return(range(min_x-(size+1),max_x-size,2),psisquared[min_x:max_x+1:2],average_x)

simmat=np.zeros((2*size+1,2), dtype=complex)
#(-size, ....,-1,0,1, size)
#first index spin up, second index spin down
simmat[size+1][0]=1.0
simmat[size+1][1]=0.0#1.0#1.0j

fig=plt.figure()
plt.xlabel("position")
plt.ylabel("probability of occurence")
q_list_return_50=run_quantum_randwalk(50,simmat)
c_list_return_50=run_classical_randwalk(50,simmat)
plt.plot(q_list_return_50[0],q_list_return_50[1],color="#e67300")
plt.plot(c_list_return_50[0],c_list_return_50[1],color="#0000a0")
xlim=plt.gca().get_xlim()
ylim=plt.gca().get_ylim()
plt.vlines(q_list_return_50[2],*ylim,color="#e67300",alpha=.7)
plt.vlines(c_list_return_50[2],*ylim,color="#0000a0",alpha=.7)
print(fig.axes)
plt.gca().spines['top'].set_visible(False)
plt.gca().spines['right'].set_visible(False)
plt.gca().grid(color='grey', linestyle='-', linewidth=0.25, alpha=0.5)
plt.show()
fig.savefig("One_dimensional_quantum_random_walk.svg")

Llicència

[modifica]
w:ca:Creative Commons
reconeixement compartir igual
Aquest fitxer està subjecte a la llicència de Creative Commons Reconeixement i Compartir Igual 3.0 No adaptada.
Sou lliure de:
  • compartir – copiar, distribuir i comunicar públicament l'obra
  • adaptar – fer-ne obres derivades
Amb les condicions següents:
  • reconeixement – Heu de donar la informació adequada sobre l'autor, proporcionar un enllaç a la llicència i indicar si s'han realitzat canvis. Podeu fer-ho amb qualsevol mitjà raonable, però de cap manera no suggereixi que l'autor us dóna suport o aprova l'ús que en feu.
  • compartir igual – Si modifiqueu, transformeu, o generareu amb el material, haureu de distribuir les vostres contribucions sota una llicència similar o una de compatible com l'original

Historial del fitxer

Cliqueu una data/hora per veure el fitxer tal com era aleshores.

Data/horaMiniaturaDimensionsUsuari/aComentari
actual18:23, 12 set 2020Miniatura per a la versió del 18:23, 12 set 2020576 × 432 (29 Ko)Benjamin Renz (discussió | contribucions)Uploaded a work by shoyer from https://commons.wikimedia.org/wiki/File:One_dimensional_quantum_random_walk.png with UploadWizard

No hi ha pàgines que utilitzin aquest fitxer.

Ús global del fitxer

Utilització d'aquest fitxer en altres wikis:

Metadades