import%20marimo%0A%0A__generated_with%20%3D%20%220.23.16%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%20%23%20wird%20nur%20ben%C3%B6tigt%20wenn%20Sie%20mit%20marimo%20Notebooks%20arbeiten%0A%0A%20%20%20%20return%20(mo%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(matplotlib%2C%20mo%2C%20platform%2C%20pylatexenc%2C%20qiskit%2C%20qiskit_aer)%3A%0A%20%20%20%20mo.md(rf%22%22%22%0A%20%20%20%20Zun%C3%A4chst%20m%C3%BCssen%20einige%20Module%20importiert%20werden.%0A%20%20%20%20Schauen%20Sie%20das%20Ihre%20installierten%20Versionen%20nicht%20zu%20weit%20von%20diesen%20hier%20abweichen%3A%0A%20%20%20%20*%20%7Bplatform.python_version()%20%3D%20%7D%0A%20%20%20%20*%20%7Bqiskit.version.get_version_info()%20%3D%20%7D%0A%20%20%20%20*%20%7Bqiskit_aer.__version__%20%3D%7D%0A%20%20%20%20*%20%7Bmatplotlib.__version__%20%3D%20%7D%0A%20%20%20%20*%20%7Bpylatexenc.__version__%20%3D%20%7D%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20platform%0A%20%20%20%20import%20matplotlib%0A%20%20%20%20import%20pylatexenc%0A%0A%20%20%20%20import%20qiskit%0A%20%20%20%20from%20qiskit%20import%20QuantumCircuit%0A%20%20%20%20from%20qiskit.quantum_info%20import%20random_statevector%0A%20%20%20%20from%20qiskit.visualization%20import%20plot_histogram%0A%20%20%20%20import%20qiskit_aer%0A%20%20%20%20from%20qiskit_aer%20import%20AerSimulator%0A%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20AerSimulator%2C%0A%20%20%20%20%20%20%20%20QuantumCircuit%2C%0A%20%20%20%20%20%20%20%20matplotlib%2C%0A%20%20%20%20%20%20%20%20platform%2C%0A%20%20%20%20%20%20%20%20plot_histogram%2C%0A%20%20%20%20%20%20%20%20pylatexenc%2C%0A%20%20%20%20%20%20%20%20qiskit%2C%0A%20%20%20%20%20%20%20%20qiskit_aer%2C%0A%20%20%20%20%20%20%20%20random_statevector%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20Wenn%20mit%20den%20Modulversionen%20alles%20passt%2C%20initializieren%20Sie%20einen%20Schaltkreis%20mit%20Qiskit.%0A%20%20%20%20In%20Qiskit%20dreht%20sich%20alles%20um%20diese%20Schaltkreise%2C%20was%20das%20genau%20ist%20werden%20Sie%20im%20laufe%20dieses%20Kurses%20noch%20lernen.%0A%20%20%20%20F%C3%BCr%20den%20Moment%20ist%20nur%20relevant%20das%20dieser%20Schaltkreis%20mit%201%20Qubit%20angelegt%20wird.%0A%0A%20%20%20%20Mit%20Hilfe%20des%20%60qiskit.quantum_info%60%20Moduls%20l%C3%A4sst%20sich%20ein%20zuf%C3%A4lliger%20Statevector%20anlegen.%0A%20%20%20%20Dieser%20hat%20die%20Dimension%202%2C%20da%20ein%20Qubit%20als%20Linearkombination%20von%20%242%5En%24%20Basiszust%C3%A4nden%20beschrieben%20werden%20kann%2C%20und%20%242%5E1%20%3D%202%24%20ist.%0A%0A%20%20%20%20Als%20n%C3%A4chstes%20muss%20Qiskit%20wissen%2C%20dass%20das%20Qubit%20(qiskit%20begint%20bei%200%20an%20zu%20z%C3%A4hlen)%20mit%20eben%20diesem%20Statevector%20initialisiert%20werden%20soll%2C%0A%20%20%20%20und%20dass%20das%20Qubit%20gemessen%20werden%20soll.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(QuantumCircuit%2C%20random_statevector)%3A%0A%20%20%20%20qc%20%3D%20QuantumCircuit(1)%0A%20%20%20%20psi%20%3D%20random_statevector(2)%0A%20%20%20%20qc.initialize(psi%2C%200)%0A%20%20%20%20qc.measure_all()%0A%20%20%20%20return%20(qc%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20Wenn%20Sie%20neben%20%60Qiskit%60%20auch%20die%20Module%20%60matplotlib%60%20und%20%60pylatexenc%60%20installiert%20haben%20k%C3%B6nnen%20Sie%20den%20Schaltkreis%20zeichnen%20lassen.%0A%20%20%20%20Bisher%20ist%20es%20noch%20nicht%20so%20spannend%2C%20es%20gibt%20ein%20Qubit%20das%20mit%20%22q%22%20bezeichnet%20wurde%2C%0A%20%20%20%20ein%20klassisches%20Register%20%22meas%22%20in%20das%20am%20Ende%20das%20Messergebnis%20gespeichert%20wird.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(qc)%3A%0A%20%20%20%20qc.draw(%22mpl%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20Als%20n%C3%A4chstes%20simulieren%20Sie%20das%20Qubit%20(den%20Schaltkreis)%2C%0A%20%20%20%20dazu%20verwenden%20Sie%20das%20%60Qiskit_Aer%60%20Modul.%0A%0A%20%20%20%20Sie%20initializieren%20den%20Simulator%20und%20k%C3%B6nnen%20mit%20%60run(qc)%60%20den%20eben%20definierten%20Schaltkreis%20ausf%C3%BCrhen%20lassen.%0A%20%20%20%20Per%20default%20wird%20%60Qiskit%60%20den%20Schaltkreis%201024%20mal%20ausf%C3%BChren%20und%20so%20den%20tats%C3%A4chlichen%20Zustandsvektor%20approximieren.%0A%20%20%20%20(Nat%C3%BCrlich%20ist%20der%20genaue%20Zustand%20der%20in%20Software%20bekannt%2C%20das%20geht%20aber%20nur%20im%20Simulator%20und%20die%20Approximation%20soll%20hier%20ausreichen)%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(AerSimulator%2C%20qc)%3A%0A%20%20%20%20simulator%20%3D%20AerSimulator()%0A%20%20%20%20job%20%3D%20simulator.run(qc)%0A%20%20%20%20results%20%3D%20job.result().data()%5B%22counts%22%5D%0A%20%20%20%20return%20(results%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%60run%60%20liefert%20zun%C3%A4chst%20ein%20%60Job%60%20Objekt%20zur%C3%BCck%2C%0A%20%20%20%20das%20hat%20etwas%20damit%20zutun%2C%20dass%20der%20Simulator%20die%20selbe%20API%20bietet%20wie%20ein%20remote%20Backend.%0A%20%20%20%20%60job.results()%60%20liefert%20einige%20Informationen%20%C3%BCber%20die%20Ausf%C3%BChrung%2C%20f%C3%BCr%20Sie%20sind%20zun%C3%A4chst%20die%20Ergebnisdaten%20in%20%60.data()%5B%22counts%22%5D%60%20interessant.%0A%0A%20%20%20%20Diese%20k%C3%B6nnen%20mit%20%60plot_histogram%60%20visualisiert%20werden.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(plot_histogram%2C%20results)%3A%0A%20%20%20%20plot_histogram(results)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20Da%20das%20Qubit%20mit%20einem%20Zuf%C3%A4lligen%20Zustandsvektor%20%60psi%60%20initialisiert%20wurde%2C%0A%20%20%20%20wird%20das%20Diagramm%20bei%20Ihnen%20nat%C3%BCrlich%20etwas%20anders%20aussehen.%0A%20%20%20%20Lassen%20Sie%20das%20Notebook%20mehrmals%20laufen%20um%20zu%20sehen%20wie%20das%20Diagramm%20sich%20jedes%20mal%20etwas%20ver%C3%A4ndert.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
bfc8b2de34ba29db4e267c98f64e7022