Законы сохранения для КдФ

К лекции 2 (2024)

Определение (Subscript[D, x]),(Subscript[D, x]^(-1)) и (Subscript[D, t])

Это можно реализовать по разному. Мы поступим просто – адаптируем встроенные функции D, Derivative и Integrate, применив функции-обёртки.

Пусть u[n] обозначает  (∂_x^n)(u(x)). Производная по x и интеграл:

n2x=u[n_]:>Derivative[n][u][x];
x2n={u[x]->u[0],Derivative[n_][u][x]:>u[n]};

dx[expr_]:=D[expr/.n2x,x]/.x2n
dx[expr_,k_]:=D[expr/.n2x,{x,k}]/.x2n

int[expr_]:=Block[{i=Integrate[expr/.n2x,x]},
If[FreeQ[i,Integrate],i/.x2n,i]]

Тест. Если выражение не есть полная производная, интеграл от него не вычисляется.

dx[((u[1])^3)u[2]+u[4]]
dx[((u[1])^3)u[2]+u[4],2]
int[%]
int[((u[1])^2)]

Производная по t в силу уравнения (Subscript[u, t])=f:

n2t=u[n_]:>Derivative[n,0][u][x,t];
t2n={u[x,t]->u[0],Derivative[n_,0][u][x,t]:>u[n]};

dt[expr_,f_]:=D[expr/.n2t,t]/.Derivative[n_,1][u][x,t]:>D[f/.n2t,{x,n}]/.t2n

dt[u[1]u[2],u[3]+((u[2])^4)]

Первые четыре закона сохранения

Определяем правую часть уравнения

ut=u[3]+6u[0]u[1]

Проверяем формулы из лекции

Expand[dt[u[0],ut]]
int[%]

Expand[dt[((u[0])^2),ut]]
int[%]

Expand[dt[((u[1])^2)-2((u[0])^3),ut]]
int[%]

Expand[dt[((u[2])^2)-10u[0]((u[1])^2)+5((u[0])^4),ut]]
int[%]

Метод неопределенных коэффициентов

Генерация однородных многочленов

vars[f,u] список переменных (Subscript[u, n]) в выражении

mon[d,r,k]  список мономов степени d от (Subscript[u, k]), (Subscript[u, k+1]),...  с общей суммой индексов равной r

hom[m,n,M]  список всех мономов заданного веса M относительно веса (Subscript[u, j])∼m+j n

rhom[m,n,M]  то же самое, но без мономов, линейных по старшей переменной (следовательно, все мономы в этом списке неэквивалентны по модулю Im (Subscript[D, x]))

vars[f_,u__]:=Union[Flatten[Cases[f,Blank[#],{0,Infinity}]&/@{u}]]

mon[d_,r_,k_]:=If[d==1,If[r≥k,{u[r]},{}],
Flatten[Table[u[s]mon[d-1,r-s,s],{s,k,r}]]]

hom[m_,n_,M_]:=Flatten[Table[
If[IntegerQ[(M-m d)/n],mon[d,(M-m d)/n,0],{}],
{d,1,Floor[M/m]}]]

rhom[m_,n_,M_]:=Select[hom[m,n,M],Exponent[#,Last[vars[#,u]]]>1||#==u[0]&]

Table[rhom[2,1,k],{k,2,13}]//TableForm

Вычисление плотности веса 8

Составим плотность и поток:

ut=u[3]+6u[0]u[1];

rhom[2,1,8]
r={a,b,c}.%

hom[2,1,10]
s=Table[k[i],{i,1,Length[%]}].%

Составим уравнение (Subscript[r, t])=(Subscript[s, x]), соберем коэффициенты, решим систему

eq=dt[r,ut]-dx[s]

vars[eq,u]

Union[Flatten[CoefficientList[eq,%]]]

sol=Solve[%==0]

Проверка

r8=r/.sol[[1]]/.c->5
s10=s/.sol[[1]]/.c->5

Expand[dt[r8,ut]-dx[s10]]

Вычисление в процедуре

Сделаем то же самое в виде процедуры для любого веса. Для однозначности, фиксируем коэффициент при квадрате старшей производной.

ut=u[3]+6u[0]u[1];

consl[m_]:=Module[{r,s,a,b,eq},
r=rhom[2,1,m];
r=Table[a[i],{i,1,Length[r]}].r/.a[1]->1;
s=hom[2,1,m+2];
s=Table[b[i],{i,1,Length[s]}].s;
eq=dt[r,ut]-dx[s];
eq=Union[Flatten[CoefficientList[eq,vars[eq,u]]]];
eq=Solve[eq==0];
If[Length[eq]==0,{{0,0}},{r,s}/.eq]/.u[n_]:>(Subscript[u, n])
]

consl[2]
consl[3]
consl[4]
consl[5]
consl[6]
consl[7]
consl[8]
consl[9]
consl[10]
consl[11]
consl[12]

Преобразование Миуры

Пусть v удовлетворяет уравнению (SuperMinus[мКдФ])  (Subscript[v, t])=(Subscript[v, x x x])-6((v^2)+λ)(Subscript[v, x]),  тогда переменная u=(Subscript[v, x])+(v^2)+λ удовлетворяет уравнению КдФ (Subscript[u, t])=(Subscript[u, x x x])-6u (Subscript[u, x]).

Чтобы проверить это, временно поменяем ролями u и v (так как правила дифференцирования у нас заданы для u):

ut=u[3]-6(((u[0])^2)+λ)u[1];
v=u[1]+((u[0])^2)+λ;
-dt[v,ut]+dx[v,3]-6v dx[v]
Expand[%]

Обращение преобразования Миуры

Положим 4λ=-(z^2):

(v^2)+(Subscript[v, x])=(z^2)/2+u.

Подставим сюда разложение

v=-z/2+(Subscript[V, 0])+(Subscript[V, 1])/z+(Subscript[V, 2])/(z^2)+...

(индекс у (Subscript[V, k]) это просто номер, не производная), это даст

(z^2)/4-z (Subscript[V, 0])+(-(Subscript[V, 1])+(Subscript[V, 0]^2))+(-(Subscript[V, 2])+2(Subscript[V, 0])(Subscript[V, 1]))/z
           + (-(Subscript[V, 3])+2(Subscript[V, 0])(Subscript[V, 2])+(Subscript[V, 1]^2))/(z^2)+ ...  +(Subscript[V, 0,x])+(Subscript[V, 1,x])/z+(Subscript[V, 2,x])/(z^2) +...     =  (z^2)/4+u.

Отсюда следует, что (Subscript[V, 0])=0, (Subscript[V, 1])=-u,  а на остальные коэффициенты получаем рекуррентные соотношения

(Subscript[V, n+1]) =(Subscript[V, 1])(Subscript[V, n-1])+...+(Subscript[V, n-1])(Subscript[V, 1])+(Subscript[V, n,x])=0,   n=1,2,3,... .

Вычислим несколько первых коэффициентов (скажем, 13, хотя машина может гораздо больше).

M=13;
V[1]=-u[0];
Do[V[n+1]=Factor[(dx[V[n]]+Sum[V[s]V[n-s],{s,1,n-1}])],{n,1,M-1}];

Do[Print[(Subscript[V, n]),"= ",V[n]/.u[k_]:>(Subscript[u, k])],{n,1,M}]

Можно проверить, что построенный отрезок ряда действительно удовлетворяет уравнению (5), с точностью до членов (z^n) с n≥M:

v=-z/2+Sum[V[n]/(z^n),{n,1,M}];
Series[Expand[(v^2)+dx[v]],{z,Infinity,M-1}]

Многочлены (Subscript[V, n]) являются плотностями з.с. для КдФ, то есть, существуют функции (Subscript[σ, n]) от (Subscript[u, k]) такие, что (Subscript[D, t])((Subscript[V, n]))=(Subscript[D, x])((Subscript[σ, n])).

Короткий список плотностей:

ut=u[3]-6u[0]u[1];
rhos=Table[V[n],{n,1,10}]

Дифференцируем его по t и находим σ интегрированием:

Expand[dt[rhos,ut]];
sigmas=Expand[int[%]]

Проверка:

Expand[dt[rhos,ut]-dx[sigmas]]

Если посмотреть внимательно на выписанную выше таблицу, можно заметить, что все (Subscript[V, n]) с четными номерами сами являются полными производными по x, ещё до дифференцирования по t:

Table[V[n],{n,2,M,2}]

int[%]

Такие плотности не засчитываются, они отвечают тривиальным законам сохранения.  А с нечетными номерами все в порядке, это нетривиальные плотности.

Table[V[n],{n,1,M,2}]
int[%]

Итак, наш эксперимент приводит к следующим предположениям:

1) Все коэффициенты в разложении v(z) являются плотностями з.с. для КдФ;

2) плотности с чётными номерами тривиальны;

3) плотности с нечётными номерами нетривиальны.