Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Solving nonlinear stochastic differential equation

License

NotificationsYou must be signed in to change notification settings

akononovicius/pyNSDE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Here we have implemented solution of nonlinear SDE:

d x = \left(\eta - \frac{\lambda}{2} \right) x^{2 \eta - 1} d t + x^\eta d W

In this context "solution" is understood as obtaining single sampletrajectory of desired length and discretization time step.

The numerical solution is obtained by solving Bessel process SDE:

d y = \frac{\lambda - \eta}{2 \left( \eta - 1 \right)} \cdot \frac{d t}{y} + d W

and applying nonlinear transformation:

x = \left[ \left( \eta - 1 \right) y \right]^\frac{1}{1-\eta}

to obtain the solutions of the nonlinear SDE above.

Bessel process is solved using Euler-Maruyama method with variable time step.

Usage

You could use this library to generate time series, which exhibit pink or1-over-f noise. Depending on the model and simulation parameters this can beachieved in an arbitrarily broad range of frequencies. Below follows examplewith simulation results of the calculation with mostly default parametervalues.

importnumpyasnpimportmatplotlib.pyplotaspltfrompyNSDEimportgenerate_seriesfromstats.pdfimportMakeLogPdffromstats.psdimportMakeSegLogPsd# simulationseries=generate_series(1048576,1e-3,seed=123)# calculating PDF / PSDpdf=MakeLogPdf(series)psd=MakeSegLogPsd(series,fs=1e3)# creating simple visualizationplt.figure(figsize=(12,3))plt.subplot(131)plt.xlabel('t')plt.ylabel('x(t)')plt.plot(series[::256],'r-')plt.subplot(132)plt.loglog()plt.xlabel('x')plt.ylabel('p(x)')plt.plot(pdf[:,0],pdf[:,1],'r-')plt.plot(pdf[:,0],2*(pdf[:,0]**-3),'k--')plt.subplot(133)plt.loglog()plt.xlabel('f')plt.ylabel('S(f)')plt.plot(psd[:,0],psd[:,1],'r-')plt.plot(psd[20:,0],1.5*(psd[20:,0]**-1),'k--')plt.tight_layout()plt.show()

In this code snippetstats library was cloned fromhttps://github.com/akononovicius/python-stats.

Related repositories

Earlier implementation of a less flexible program solving the same nonlinearstochastic differential equation is available athttps://github.com/JuliusRuseckas/numerical-sde-variable-step.

https://github.com/akononovicius/python-stats library might be useful whenanalyzing simulated time series.

Related research

Couple of scientific review papers specific to the SDE being solved:

Recent review with variety of applications related to the SDE being solved:

About

Solving nonlinear stochastic differential equation

Topics

Resources

License

Stars

Watchers

Forks


[8]ページ先頭

©2009-2025 Movatter.jp