toda_open(x) はLax 形式でのオープン戸田格子の定義.
x は正方行列をベクトル化したもの.
オープン戸田格子はLax方程式で定義される.
sqreshape(x) は正方行列をベクトル化したものを正方行列に戻すための函数.
## open Toda lattice
##
## Example: To integrate the open Toda lattice from t = 0 to t = 1,
##
## solution = lsode('toda_open', vec(L0), 0:1)
## L1 = sqreshape(sol(2,:))
function xdot = toda_open(x)
L = sqreshape(x);
M = diag(diag(L))/2 + triu(ones(rows(L),columns(L)), 1).* L;
Ldot = M * L - L * M;
xdot = reshape(Ldot, rows(x), columns(x));
endfunction
## Reshape rectangulat matrix to square matrix
##
## retval = sqreshape(x)
##
## x = matrix
## retval = square matrix
function retval = sqreshape(x)
size = prod(size(x));
n = ceil(sqrt(size));
retval = reshape(x, n, n);
endfunction
等間隔で質点が並んでおり、運動量は -2, -1, 1, 2.
CCC = [
-2,1,0,0;
1,-1,1,0;
0,1,1,1;
0,0,1,2
];
CCC
L0=CCC
X0 = expm(L0)
eig(L0)
eig(X0)
X1 = chol(X0) * chol(X0).'
sol = lsode('toda_open', vec(L0), 0:1)
L1 = sqreshape(sol(2,:))
expm(L1)とX1は一致する.
このようにLax形式の微分方程式で定義されたオープン戸田格子の時間発展の整数時刻での解の値のexponentialは、コレスキー分解で定義した離散オープン戸田格子の値に一致する.
expm(L1)
X1