Contact Us!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
sagemathinc

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.

GitHub Repository: sagemathinc/cocalc-example-files
Path: blob/master/sage/interact/DiffEq/eulerMarayumaBrownian.sagews
Views: 1137
def EulerMaruyama(xstart, ystart, xfinish, nsteps, f1, f2): sol = [ystart] xvals = [xstart] h = N((xfinish-xstart)/nsteps) for step in range(nsteps): sol.append(sol[-1] + h*f1(sol[-1]) + h^(.5)*f2(sol[-1])*normalvariate(0,1)) xvals.append(xvals[-1] + h) return zip(xvals,sol) out = Graphics() save(out,'temp') @interact def EulerMaruyamaExample(mu = slider(srange(0,10,.1),default=2.0), sigma = slider(srange(0,10,.1),default=0.5), plots_at_a_time = slider(range(1,100),default=10), number_of_steps = slider(range(1,1000),default=100), clear_plot = checkbox(True), auto_update=False): html('<center>Example of the Euler-Maruyama method applied to<br>the stochastic differential equation for geometric Brownian motion</center>') html('<center>$S = S_0 + \int_0^t \mu S dt + \int_0^t \sigma S dW$</center>') emplot = list_plot(EulerMaruyama(0,1,1,number_of_steps,lambda x: mu*x,lambda x:sigma*x),plotjoined=True) for i in range(1,plots_at_a_time): emplot = emplot + list_plot(EulerMaruyama(0,1,1,100,lambda x: mu*x,lambda x:sigma*x),plotjoined=True) if clear_plot: out = emplot save(out,'temp') else: out = load('temp') out = out + emplot save(out,'temp') show(out, figsize = [8,5])
Interact: please open in CoCalc