2010年4月20日火曜日

量子化学のSDPのサイズ

今日は、原稿をまとめるにあたって SDP の大きさを整理していたが、量子化学の rank が与えられたときの SDP の大きさをまとめて出力できる Matlab プログラムを作った。

function chem_comp
for K=5:18
m = 3*K^4/4 - K^3 /2 + 9*K^2/4 + K/2;
fprintf('** K=%02d, 2K=%02d, m = %d\n',K,2*K,m);
if 0
fprintf('PQG = [1 x -%2d, %d x4, %d x4, %d x2, %d x1]\n',...
(K*(K+1)+5)*2,K,K^2,K*(K-1)/2,2*K^2);
end
fprintf('K.s(PQGT1T2) = [1 x -%2d, %d x4, %d x4, %d x2, %d x1, ',...
(K*(K+1)+5)*2,K,K^2,K*(K-1)/2,2*K^2);
fprintf('%d x2, %d x4, %d x2]\n',...
K*(K-1)*(K-2)/6, K^2*(K-1)/2, (K^2)*(3*K-1)/2+K);

end
実行すると、以下のように各 rank での制約の本数と SDP のブロック対角行列のそれぞれのブロックの大きさが出力される。
>> chem_comp
** K=05, 2K=10, m = 465
K.s(PQGT1T2) = [1 x -70, 5 x4, 25 x4, 10 x2, 50 x1, 10 x2, 50 x4, 180 x2]
** K=06, 2K=12, m = 948
K.s(PQGT1T2) = [1 x -94, 6 x4, 36 x4, 15 x2, 72 x1, 20 x2, 90 x4, 312 x2]
** K=07, 2K=14, m = 1743
K.s(PQGT1T2) = [1 x -122, 7 x4, 49 x4, 21 x2, 98 x1, 35 x2, 147 x4, 497 x2]
** K=08, 2K=16, m = 2964
K.s(PQGT1T2) = [1 x -154, 8 x4, 64 x4, 28 x2, 128 x1, 56 x2, 224 x4, 744 x2]
** K=09, 2K=18, m = 4743
K.s(PQGT1T2) = [1 x -190, 9 x4, 81 x4, 36 x2, 162 x1, 84 x2, 324 x4, 1062 x2]
** K=10, 2K=20, m = 7230
K.s(PQGT1T2) = [1 x -230, 10 x4, 100 x4, 45 x2, 200 x1, 120 x2, 450 x4, 1460 x2]
** K=11, 2K=22, m = 10593
K.s(PQGT1T2) = [1 x -274, 11 x4, 121 x4, 55 x2, 242 x1, 165 x2, 605 x4, 1947 x2]
** K=12, 2K=24, m = 15018
K.s(PQGT1T2) = [1 x -322, 12 x4, 144 x4, 66 x2, 288 x1, 220 x2, 792 x4, 2532 x2]
** K=13, 2K=26, m = 20709
K.s(PQGT1T2) = [1 x -374, 13 x4, 169 x4, 78 x2, 338 x1, 286 x2, 1014 x4, 3224 x2]
** K=14, 2K=28, m = 27888
K.s(PQGT1T2) = [1 x -430, 14 x4, 196 x4, 91 x2, 392 x1, 364 x2, 1274 x4, 4032 x2]
** K=15, 2K=30, m = 36795
K.s(PQGT1T2) = [1 x -490, 15 x4, 225 x4, 105 x2, 450 x1, 455 x2, 1575 x4, 4965 x2]
** K=16, 2K=32, m = 47688
K.s(PQGT1T2) = [1 x -554, 16 x4, 256 x4, 120 x2, 512 x1, 560 x2, 1920 x4, 6032 x2]
** K=17, 2K=34, m = 60843
K.s(PQGT1T2) = [1 x -622, 17 x4, 289 x4, 136 x2, 578 x1, 680 x2, 2312 x4, 7242 x2]
** K=18, 2K=36, m = 76554
K.s(PQGT1T2) = [1 x -694, 18 x4, 324 x4, 153 x2, 648 x1, 816 x2, 2754 x4, 8604 x2]


このうち、rank28ぐらいまでは SDPARA なら問題なく解ける。
rank34は、まだ実行したことがないので解からない。

あと、今日は SDPARA に小さいバグが発見された。
ただし、このバグはデバッグ用の関数の中であるため、デバッグしているとき、しかも1台で実行しているときにだけ起きるバグであった。
普段の実行結果には影響していない。

SDPARA については、数値実験を表にまとめたので、あとどれくらいの実験が必要か、だいたい見積もることができた。
ざっと1週間程度といったところかと見ている。
ただ、それだと原稿の文章が間に合わないので、明日からさきに文章をあらかじめ書くことにする。

今日の作業内容: SDPARA の数値結果整理 4h + 本読み 2h
今日のBGM: FF10 OST [1-4]
今日のランチ: らく まぐろのづけ丼
明日の予測作業時間: 5h

0 件のコメント:

コメントを投稿