From 26cb7b3abac9365d5ceccabc7cdde900f8cde3bf Mon Sep 17 00:00:00 2001 From: Ruben Erlenstedt Date: Sat, 30 Nov 2019 11:49:43 +0100 Subject: Add python plot for bloch sphere --- plotting.py | 42 +++++++++++++++++++++++++++++------------- single_dequantify.py | 6 +++--- 2 files changed, 32 insertions(+), 16 deletions(-) diff --git a/plotting.py b/plotting.py index 397e4de..9def377 100644 --- a/plotting.py +++ b/plotting.py @@ -3,11 +3,11 @@ import cmath as cmt import numpy as npy from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt -import numpy as np from itertools import product, combinations from matplotlib.patches import FancyArrowPatch from mpl_toolkits.mplot3d import proj3d + class Arrow3D(FancyArrowPatch): def __init__(self, xs, ys, zs, *args, **kwargs): @@ -20,19 +20,35 @@ class Arrow3D(FancyArrowPatch): self.set_positions((xs[0], ys[0]), (xs[1], ys[1])) FancyArrowPatch.draw(self, renderer) -def plot_kugel(historie): + +def kugel(historie): fig = plt.figure() ax = fig.gca(projection='3d') - + # draw sphere - u, v = np.mgrid[0:2*np.pi:20j, 0:np.pi:10j] - x = np.cos(u)*np.sin(v) - y = np.sin(u)*np.sin(v) - z = np.cos(v) + u, v = npy.mgrid[0:2*npy.pi:20j, 0:npy.pi:10j] + x = npy.cos(u)*npy.sin(v) + y = npy.sin(u)*npy.sin(v) + z = npy.cos(v) ax.plot_wireframe(x, y, z, color="r") - - # draw a vector - a = Arrow3D([0, 1], [0, 1], [0, 1], mutation_scale=20, - lw=1, arrowstyle="-|>", color="k") - ax.add_artist(a) - plt.show() \ No newline at end of file + + # draw a time evolution + for blochpunkt in historie: + x = mth.cos(blochpunkt[1]) * mth.cos(blochpunkt[0]) + y = mth.cos(blochpunkt[1]) * mth.sin(blochpunkt[0]) + z = mth.sin(blochpunkt[1]) + a = Arrow3D([0, x], [0, y], [0, z], mutation_scale=20, + lw=1, arrowstyle="-|>", color="k") + ax.add_artist(a) + plt.show() + +def phi(phi): + fig, ax = plt.subplots() + + x = mth.cos(phi[0]) + y = mth.sin(phi[0]) + + ax.arrow(0, 0, 1, 1) + ax.set_title('Zeitentwicklung von phi') + + plt.show() diff --git a/single_dequantify.py b/single_dequantify.py index c5054f5..cd302af 100644 --- a/single_dequantify.py +++ b/single_dequantify.py @@ -10,7 +10,7 @@ beta = 1 / npy.sqrt(2) state = npy.array([alpha, beta]) dt = 0.2 -iterations = 200 +iterations = 20 H = npy.array([[2,-2j],[2j,3]]) @@ -40,7 +40,7 @@ for i in range(iterations): coords = sphere2cart(coords[0], coords[1]) print(f"{coords[0]}; {coords[1]}; {coords[2]}") - - +import plotting +plotting.phi(historie[:,0]) -- cgit v1.2.3-54-g00ecf