from IPython.core.display import HTML
css_file = './example.css'
HTML(open(css_file, "r").read())
%matplotlib inline
from math import pi
from IPython.display import display, HTML
from IPython.html import widgets
from IPython.html.widgets import interact, interactive
import numpy as np
from scipy import integrate
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
def show_args(**kwargs):
s = '
Arguments:
\n'
for k,v in kwargs.items():
s += '{0} | {1} |
\n'.format(k,v)
s += '
'
display(HTML(s))
i = interact(show_args,
Temp=(0,10),
Current=(0.,10.,0.01),
z=True,
Text=u'Type here!',
Algorithm=['This','That','Other'],
a=widgets.FloatSliderWidget(min=-10.0, max=10.0, step=0.1, value=5.0, description="Float (a)")
)
def plot_sine(n):
x = np.arange(0, 2*pi, 0.01);
y = np.sin(n*x)
fig = plt.figure(figsize = (8, 6));
ax = fig.add_subplot(1,1,1);
ax.plot(x, y, 'g', linewidth=4);
interact(plot_sine, n=(1, 5, 1));
def solve_lorenz(N=10, angle=0.0, max_time=4.0, sigma=10.0, beta=8./3, rho=28.0):
fig = plt.figure(figsize = (4, 3));
ax = fig.add_axes([0, 0, 1, 1], projection='3d')
ax.axis('off')
# prepare the axes limits
ax.set_xlim((-25, 25))
ax.set_ylim((-35, 35))
ax.set_zlim((5, 55))
def lorenz_deriv((x, y, z), t0, sigma=sigma, beta=beta, rho=rho):
"""Compute the time-derivative of a Lorentz system."""
return [sigma * (y - x), x * (rho - z) - y, x * y - beta * z]
# Choose random starting points, uniformly distributed from -15 to 15
np.random.seed(1)
x0 = -15 + 30 * np.random.random((N, 3))
# Solve for the trajectories
t = np.linspace(0, max_time, int(250*max_time))
x_t = np.asarray([integrate.odeint(lorenz_deriv, x0i, t)
for x0i in x0])
# choose a different color for each trajectory
colors = plt.cm.jet(np.linspace(0, 1, N))
for i in range(N):
x, y, z = x_t[i,:,:].T
lines = ax.plot(x, y, z, '-', c=colors[i])
plt.setp(lines, linewidth=2)
ax.view_init(30, angle)
plt.show()
return t, x_t
t, x_t = solve_lorenz(angle=0, N=10)
w = interactive(solve_lorenz, angle=(0.,360.), N=(0,50), sigma=(0.0,50.0), rho=(0.0,50.0))
display(w)
t, x_t = w.result
xyz_avg = x_t.mean(axis=1)
plt.hist(xyz_avg[:,0])
plt.title('Average $x(t)$')