読み書きプログラミング

日常のプログラミングで気づいたことを綴っています

(35) N-ソリトン解

KdV方程式の続きです。
KdV方程式の初期条件をポテンシャルとする定常Schrödinger方程式を解くと、KdV方程式の厳密解が求められることが知られています。
初期条件に以下を仮定します。

これをポテンシャルとする定常Schrödinger方程式の解は以下になります。
はLegendreの陪函数であり、は規格化係数です。

n=4について、規格化された定常解の関数を定義しておきましょう。1つだけ波形も見ておきましょう。

/* 6.2.19m */
n : 4$
f(x, m) := assoc_legendre_p(n, m, tanh(x))$
norm(m) := sqrt(integrate(f(x, m)^2, x, -inf, inf))$
Psi(x, m) := f(x, m) / norm(m)$
plot2d(Psi(x, 1), [x, -7.5, 7.5])$


使用した機能


規格化係数を求めておきましょう。

/* 6.2.20m */
for j : 1 thru n do (
  c[j] : limit(trigexpand(Psi(x, j)*%e^(j*x)), x, inf),
  print(c[j]))$

使用した機能


厳密解を求めるために、行列を定義します。

すると、KdV方程式の厳密解が以下で与えられます。

n=4の時の厳密解を計算しましょう。

/* 6.2.21m, 6.2.22m */
a : ident(n) + genmatrix(e, n, n), e[i, j] := c[i]^2/(i + j)*exp(8*i^3*t - (i + j)* x)$
d : determinant(a), expand;
u : -2*diff(diff(d, x)/d, x);

使用した機能


では、計算した厳密解をプロットしてみましょう。

for t : -0.15 step 0.05 thru 0.15 do plot2d(-u, [x, -10, 10], [y, 0, 2*(n^2+n)])$


...