I am trying to solve stochastic Schrodinger equation (Schrodinger equation in the presence of Ornstein Uhlenbeck Process) $$i\frac{d}{dt}\begin{pmatrix}c_1(t)\\ c_2(t)\end{pmatrix}=H(t)\begin{pmatrix}c_1(t)\\ c_2(t)\end{pmatrix},$$
with
$H(t) = \begin{bmatrix} h_1+v t+f(t)- \cos(k) & -i \sin(k) \\ i \sin(k) & -h_1-v t-f(t)+\cos(k) \end{bmatrix}$
where $f(t)$ is Ornstein Uhlenbeck Process with noise correlation $\langle f(t)f(t')\rangle=\frac{\xi^2}{2\tau_n}e^{-|t-t'|/\tau_n}$ in which $\xi$ is noise intensity and $\tau_n$ is noise characteristic time.
The parameters $\xi=0.1$, $\tau_n=0.01$, $v=0.1$, $h_1=-50$, $h_2=0.5$, the initial time $t_1=0$ and the final time is $t_2=(h_2-h_1)/v$. The initial values of $c_1(t_1)=1$ and $c_2(t_1)=0$.
I have solved the differential equation using NDSolveValue, and I want to obtain $|c_2(t2)|^2$. My code (please see blow) works. But the results I have obtained is very strange.
Although I have calculated $|c_2(t)|^2$ at $t_2$ for all $k$ and $k$ changes very slowly ($k$ step is very small $dk/\pi=0.001$) but $|c_2(t)|^2$ shows very fast oscillation and very large difference between two nearby $k$ (please see black dots in figure) while the noise is the same for all $k$.
Could you please help me to understand why $|c_2(t)|^2$ shows very fast oscillation. Is my result correct or my code has a problem?
$PreRead = (# /.
s_String /;
StringMatchQ[s, NumberString] &&
Precision@ToExpression@s == MachinePrecision :> s <> "`50." &);
Clear["Global`*"];
L = 200;
v = 0.1;
h1 = -50;
h2 = 0.5;
xi = 0.1;
tn = 0.01;
t1 = 0.;
t2 = (h2 - h1)/v;
f = Interpolation[
Normal[RandomFunction[
OrnsteinUhlenbeckProcess[0, xi/tn, 1/tn, 0], {t1, t2, 0.01}]][[
1]]];
For[m = 1, m <= L/2, m = m + 1,
k = ((2 m - 1)*\[Pi])/L;
{x, y} =
NDSolveValue[{I*Derivative[1][c1][t] ==
2*(h1 + v*t - Cos[k] + f[t])*c1[t] + 2*(-I*Sin[k])*c2[t],
I*Derivative[1][c2][t] ==
2*(I*Sin[k])*c1[t] + 2*(-h1 - v*t + Cos[k] - f[t])*c2[t],
c1[t1] == 1, c2[t1] == 0}, {c1, c2}, {t, t1, t2}];
Pk22 = Norm[y[t2]]^2;
Print[k," ",Pk22]
];
@Daniel Huber @Parsifal Dear Daniel and dear parsifal, I have used your comments Stochastic process: Understanding Ornstein Uhlenbeck Process , Continuous noise representation to construct the continuous noise function. I think you are expert in this field. I was wondering if you wold be able to let me know you idea and feedback.
$PreRead =...
(unless it's a question about$PreRead
, perhaps) andClearAll["Global`*"]
or other things that will affect my setup. My eyesight's not that great. It's irritating when I don't notice something like that. I spend time figuring out why things aren't working. Then it turns out because it's because something trashed the state of my session. And the time was spent on something pointless. I don't know how to sandboxClearAll["Global`*"]
and the like. $\endgroup$