|
|
@@ -1,12 +1,18 @@
|
|
1
|
1
|
import numpy as np
|
|
2
|
|
-from ipywidgets import interact
|
|
3
|
2
|
import plotly.graph_objects as go
|
|
4
|
3
|
from math import *
|
|
5
|
|
-
|
|
|
4
|
+import mpmath
|
|
|
5
|
+from ipywidgets import interact, widgets
|
|
|
6
|
+
|
|
|
7
|
+N_slider = widgets.IntSlider(min=1, max=16, value=8)
|
|
|
8
|
+RANGE_FROM_SLIDER=widgets.FloatSlider(min=0, max=4*pi, value=0*pi, step=pi/4)
|
|
|
9
|
+RANGE_TO_SLIDER=widgets.FloatSlider(min=0, max=4*pi, value=4*pi,step=pi/4)
|
|
|
10
|
+def clamp(x):
|
|
|
11
|
+ return max(min(1, x), -1)
|
|
6
|
12
|
def kappa(formula, x):
|
|
7
|
|
- return eval(formula, {'acos': acos, 'exp': exp, 'cos': cos, 'sin': sin, 'pi': pi, 'x': x})
|
|
8
|
|
-
|
|
9
|
|
-def plot(formula='(1 + cos(((4)/2)*x))/2', RANGE_FROM=0, RANGE_TO=4*pi, N=10):
|
|
|
13
|
+ func_dict = {fn: eval(f'lambda *args: mpmath.{fn}(*args)') for fn in dir(mpmath)}
|
|
|
14
|
+ return float(eval(formula, {'x': x, 'clamp': clamp, **func_dict}))
|
|
|
15
|
+def plot(formula='(1 - cos(((4)/2)*x))/2', RANGE_FROM=0, RANGE_TO=4*pi, N=10):
|
|
10
|
16
|
num_points = 1+2**N
|
|
11
|
17
|
|
|
12
|
18
|
# Generate x values with the specified number of points
|
|
|
@@ -35,4 +41,4 @@ def plot(formula='(1 + cos(((4)/2)*x))/2', RANGE_FROM=0, RANGE_TO=4*pi, N=10):
|
|
35
|
41
|
fig.show()
|
|
36
|
42
|
|
|
37
|
43
|
# Create the interactive plot
|
|
38
|
|
-interact(plot, formula='(1 + cos(((4)/2)*x))/2', RANGE_FROM=(0, 4*pi, pi/4), RANGE_TO=(0, 4*pi, pi/4), N=(1,16));
|
|
|
44
|
+interact(plot, formula='(1 - cos(((4)/2)*x))/2', RANGE_FROM=RANGE_FROM_SLIDER, RANGE_TO=RANGE_TO_SLIDER, N=N_slider);
|