Skip to content

Can solvers falsely make divergent trajectories converge? #396

@WouterJRV

Description

@WouterJRV

Hello, it's been a while since I've been trying this package before and I'm happy to try it again, now that I see that there are many new solvers etc.

The issue I'm facing is the following (rather a generic question than a bug report).

I'm trying to simulate eqs. (5) from this paper for the case of a single mode; i.e. the subindex drops and no coupling terms $J$. $\alpha$ and $\tilde{\alpha}$ are complex variables, but the noises $\xi dt$, $\tilde{\xi} dt$ are real. A set of parameters of interest that I'm looking at for example is $\Delta=\gamma=1;U=0.05;F=2.4$.

An observable of interest is the particle number $N=Re[<\tilde{\alpha}^* \alpha>]$ in the steady state. Through other methods, we know that the exact result should be $N=20.817$.
When solving eqs. (5) however, by starting from an $\alpha=\tilde{\alpha}=0$ state (the vacuum) and waiting until relaxation, it seems that the results converge with statistical significance to a lower value around $N=20.37$

This lower result for $N$ is obtained through a number of methods:
*manual implementations of Euler-Mayurama and Milstein in MATLAB with a pretty small timestep. Typically a small amount of trajectories (less than 0.1% depending on the timestep) will diverge and is thus disregarded
*I contacted the author of the paper, he used some kind of semi-implicit midpoint method after transformation to the Stratonovich sense, and also saw numerical instabilities. His belief is that is the omission of the diverged trajectories introduces a bias that gives the offset in the results.
*Meanwhile, I tried using the DiffEq. solvers here. Ensemblesimulation didn't work easily either (it gave warnings about stability indeed-I didn't try to optimize any further-, plus I also didn't quite figure out how to obtain N from the ensemble-output). However, if I just solve the equations with Julia in a for loop and use the default solver, all results (out of 10^5) remain nicely finite, no warnings about tolerances or so. And it leads again to the biased value for N above.

To understand the discrepancy, I'm wondering if a stiff solver could have been selected as a default, and if it could have kept trajectories artificially in check that should have diverged in reality? Or must any converged result be genuine?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions