Построение солитонов КдФ при помощи суперпозиции преобразований Бэклунда

В.Э. Адлер · Классические интегрируемые системы · Лекция 11 · 19 апреля 2021

Построение n-солитонного решения уравнения КдФ (для наглядности меняем знак u)

u=2(∂_x^2) log W((Subscript[y, 1]),...,(Subscript[y, n])),    (Subscript[y, j])=(e^(Subscript[X, j]))+(((-1))^(n-j))(e^(-(Subscript[X, j]))),    (Subscript[X, j])=(Subscript[k, j])x+4(Subscript[k, j]^3)t+(Subscript[δ, j]),    0<(Subscript[k, n])<...<(Subscript[k, 1]),

по схеме, описанной на лекции. Если считать вронскиан непосредственно, то n>4 уже доставляет трудности. При помощи суперпозиции можно легко построить 10–12 солитонов. При большем числе и здесь счет становится медленным, а также накапливаются ошибки в арифметических операциях. Если немного постараться, то можно дойти до 15, но дальше Mathematica справляется плохо.

(* число солитонов *)
n=10;

(* задаем случайные собственные значения и сортируем их по убыванию,
   также задаем случайные сдвиги *)
K=Sort[RandomReal[{1/2,3/2},n],#1>#2&]
d=RandomReal[{-5,5},n]

(* фазы *)
X[j_]:=K[[j]]x+4((K[[j]])^3)t+d[[j]]

(* затравочные решения *)
q[]=0;
Do[q[j]=-K[[j]]Tanh[X[j]],{j,n,1,-2}]
Do[q[j]=-K[[j]]Coth[X[j]],{j,n-1,1,-2}]

(* формула суперпозиции *)
q[i___,j_,k_]:=q[i]+(((K[[j]])^2)-((K[[k]])^2))/(q[i,j]-q[i,k])

(* вычисление решения *)
u=-2D[q@@Range[n],x];

(* компилированная функция, это ускоряет счет *)
cu=Compile[{{x,_Real},{t,_Real}},Evaluate[u]];

(* построение графика *)
cgru[t_,xmin_,xmax_]:=Plot[cu[x,t],{x,xmin,xmax},
PlotRange->{0,2.1((K[[1]])^2)},
AxesLabel->{"x","u"},
PlotStyle->Blue,Filling->0,
PlotPoints->50,
BaseStyle->{FontSize->14,FontFamily->"Times New Roman"},
ImageSize->500,
Epilog->{Text["\!\(\*SubscriptBox[\(t\), \(\\ \)]\)= "<>ToString[t],{0.8xmax,1.6((K[[1]])^2)},{-1,0}]}
];

(* анимация по t *)
Manipulate[cgru[t,-50,50],
{{t,0},-10,10,Appearance->"Labeled"}]