「数値計算法第3回レポート(ひこにゃん)」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
数値計算法第3回レポートです。前にオナーでやったやつだがどういうプログラムだか知らんかったので自分で作ってみた。相変わらず自分のプログラムが汚くて読む気しない。
-&ref(sglass.pdf)
スピンが全部と相互作用する場合は上のレポートに載せたので周り4つの場合をここに貼っておく。きっとみんな読む気なくす。ところで、乱数が初期化しないと使えないだなんてそんな意味分からん仕様なのは知らなかった。(201.08.01)
#highlight(c,linenumber){{
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main(){
int cell[10][10];
int oldcell[20][20];
int kabuto[20][20];
int tuno[20][20];
int i,j,k,l;
int J1,J2,J3,J4;
int H1,H2;
FILE *f1,*f2;
f1=fopen("initial.txt","w");
f2=fopen("final.txt","w");
srand((unsigned)time(NULL)); /* 乱数の初期化はこう書くhttp://www.nmn.jp/~hidai/c/ */
for(i=0;i<10;i++){
for(j=0;j<10;j++){
cell[i][j]=(rand() %2)*2-1;
}
}
for(i=0;i<10;i++){
for(j=0;j<10;j++){
kabuto[i][j]=-1;
tuno[i][j]=-1;
}
}
j=0;
kabuto[3][j]=1;
kabuto[4][j]=1;
kabuto[6][j]=1;
kabuto[7][j]=1;
kabuto[8][j]=1;
tuno[2][j]=1;
j=1;
kabuto[2][j]=1;
kabuto[3][j]=1;
kabuto[4][j]=1;
kabuto[5][j]=1;
kabuto[8][j]=1;
kabuto[9][j]=1;
tuno[3][j]=1;
j=2;
kabuto[1][j]=1;
kabuto[2][j]=1;
kabuto[5][j]=1;
kabuto[7][j]=1;
kabuto[9][j]=1;
tuno[4][j]=1;
j=3;
kabuto[0][j]=1;
kabuto[4][j]=1;
kabuto[7][j]=1;
kabuto[9][j]=1;
for(i=0; i<10; i++){
tuno[i][j]=1;
}
j=4;
kabuto[4][j]=1;
kabuto[7][j]=1;
kabuto[9][j]=1;
kabuto[9][j]=1;
j=5;
kabuto[4][j]=1;
kabuto[8][j]=1;
kabuto[9][j]=1;
j=6;
kabuto[4][j]=1;
kabuto[6][j]=1;
kabuto[9][j]=1;
j=7;
kabuto[0][j]=1;
kabuto[5][j]=1;
kabuto[6][j]=1;
kabuto[7][j]=1;
kabuto[9][j]=1;
j=8;
kabuto[1][j]=1;
kabuto[2][j]=1;
kabuto[3][j]=1;
kabuto[4][j]=1;
kabuto[5][j]=1;
kabuto[6][j]=1;
kabuto[9][j]=1;
j=9;
kabuto[2][j]=1;
kabuto[3][j]=1;
kabuto[4][j]=1;
kabuto[5][j]=1;
kabuto[7][j]=1;
kabuto[8][j]=1;
for(i=0;i<10;i++){
for(j=0;j<10;j++){
tuno[i][9-j]=tuno[i][j];
}
}
for(i=0;i<10;i++){
for(j=0;j<10;j++){
kabuto[i+10][j]=kabuto[i][j];
kabuto[i][j+10]=kabuto[i][j];
kabuto[i+10][j+10]=kabuto[i][j];
tuno[i+10][j]=tuno[i][j];
tuno[i][j+10]=tuno[i][j];
tuno[i+10][j+10]=tuno[i][j];
}
}
for(i=0;i<10;i++){
for(j=0;j<9;j++){
fprintf(f1,"%d ",cell[i][j]);
}
fprintf(f1,"%d\n",cell[i][9]);
}
/* initialize over */
for(i=0;i<10;i++){
for(j=0;j<10;j++){
oldcell[i][j]=cell[i][j];
oldcell[i+10][j]=cell[i][j];
oldcell[i][j+10]=cell[i][j];
oldcell[i+10][j+10]=cell[i][j];
}
}
while(i<99999){
k=rand()%10;
l=rand()%10;
J1=kabuto[k][l]*kabuto[k+9][l]+tuno[k][l]*tuno[k+9][l];
J2=kabuto[k][l]*kabuto[k][l+9]+tuno[k][l]*tuno[k][l+9];
J3=kabuto[k][l]*kabuto[k][l+1]+tuno[k][l]*tuno[k][l+1];
J4=kabuto[k][l]*kabuto[k+1][l]+tuno[k][l]*tuno[k+1][l];
H1=J1*cell[k][l]*oldcell[k+9][l]+J2*cell[k][l]*oldcell[k][l+9]+J3*cell[k][l]*oldcell[k][l+1]+J4*cell[k][l]*oldcell[k+1][l];
H2=J1*(-cell[k][l])*oldcell[k+9][l]+J2*(-cell[k][l])*oldcell[k][l+9]+J3*(-cell[k][l])*oldcell[k][l+1]+J4*(-cell[k][l])*oldcell[k+1][l];
// printf("%d,%d\n",H1,H2);
if(H2>H1)
cell[k][l]=-cell[k][l];
// printf("%d,%d,%d\n",i,k,l) ;
i++;
}
/*
for(k=0;k<10;k++){
for(l=0;l<10;l++){
J1=kabuto[k][l]*kabuto[k+9][l]+tuno[k][l]*tuno[k+9][l];
J2=kabuto[k][l]*kabuto[k][l+9]+tuno[k][l]*tuno[k][l+9];
J3=kabuto[k][l]*kabuto[k][l+1]+tuno[k][l]*tuno[k][l+1];
J4=kabuto[k][l]*kabuto[k+1][l]+tuno[k][l]*tuno[k+1][l];
H1=J1*cell[k][l]*oldcell[k+9][l]+J2*cell[k][l]*oldcell[k][l+9]+J3*cell[k][l]*oldcell[k][l+1]+J4*cell[k][l]*oldcell[k+1][l];
H2=J1*(-cell[k][l])*oldcell[k+9][l]+J2*(-cell[k][l])*oldcell[k][l+9]+J3*(-cell[k][l])*oldcell[k][l+1]+J4*(-cell[k][l])*oldcell[k+1][l];
printf("%d,%d\n",H1,H2);
if(H2>H1)
cell[k][l]=-cell[k][l];
}
}
*/
for(i=0;i<10;i++){
for(j=0;j<9;j++){
fprintf(f2,"%d ",cell[i][j]);
}
fprintf(f2,"%d\n",cell[i][9]);
}
/*
for(i=0;i<10;i++){
for(j=0;j<9;j++){
printf("%d ",kabuto[i][j]);
}
printf("%d\n",kabuto[i][9]);
}
for(i=0;i<10;i++){
for(j=0;j<9;j++){
printf("%d ",tuno[i][j]);
}
printf("%d\n",tuno[i][9]);
}
*/
}
}}
#comment_num2()
数値計算法第3回レポートです。前にオナーでやったやつだがどういうプログラムだか知らんかったので自分で作ってみた。相変わらず自分のプログラムが汚くて読む気しない。
-&ref(sglass.pdf)
スピンが全部と相互作用する場合は上のレポートに載せたので周り4つの場合をここに貼っておく。周期境界条件にするために、配列を20×20にしたのがミソのつもり。汚いのできっとみんな読む気なくす。ところで、乱数が初期化しないと使えないだなんてそんな意味分からん仕様なのは知らなかった。(2011.08.01)
#highlight(c,linenumber){{
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main(){
int cell[10][10];
int oldcell[20][20];
int kabuto[20][20];
int tuno[20][20];
int i,j,k,l;
int J1,J2,J3,J4;
int H1,H2;
FILE *f1,*f2;
f1=fopen("initial.txt","w");
f2=fopen("final.txt","w");
srand((unsigned)time(NULL)); /* 乱数の初期化はこう書くhttp://www.nmn.jp/~hidai/c/ */
for(i=0;i<10;i++){
for(j=0;j<10;j++){
cell[i][j]=(rand() %2)*2-1;
}
}
for(i=0;i<10;i++){
for(j=0;j<10;j++){
kabuto[i][j]=-1;
tuno[i][j]=-1;
}
}
j=0;
kabuto[3][j]=1;
kabuto[4][j]=1;
kabuto[6][j]=1;
kabuto[7][j]=1;
kabuto[8][j]=1;
tuno[2][j]=1;
j=1;
kabuto[2][j]=1;
kabuto[3][j]=1;
kabuto[4][j]=1;
kabuto[5][j]=1;
kabuto[8][j]=1;
kabuto[9][j]=1;
tuno[3][j]=1;
j=2;
kabuto[1][j]=1;
kabuto[2][j]=1;
kabuto[5][j]=1;
kabuto[7][j]=1;
kabuto[9][j]=1;
tuno[4][j]=1;
j=3;
kabuto[0][j]=1;
kabuto[4][j]=1;
kabuto[7][j]=1;
kabuto[9][j]=1;
for(i=0; i<10; i++){
tuno[i][j]=1;
}
j=4;
kabuto[4][j]=1;
kabuto[7][j]=1;
kabuto[9][j]=1;
kabuto[9][j]=1;
j=5;
kabuto[4][j]=1;
kabuto[8][j]=1;
kabuto[9][j]=1;
j=6;
kabuto[4][j]=1;
kabuto[6][j]=1;
kabuto[9][j]=1;
j=7;
kabuto[0][j]=1;
kabuto[5][j]=1;
kabuto[6][j]=1;
kabuto[7][j]=1;
kabuto[9][j]=1;
j=8;
kabuto[1][j]=1;
kabuto[2][j]=1;
kabuto[3][j]=1;
kabuto[4][j]=1;
kabuto[5][j]=1;
kabuto[6][j]=1;
kabuto[9][j]=1;
j=9;
kabuto[2][j]=1;
kabuto[3][j]=1;
kabuto[4][j]=1;
kabuto[5][j]=1;
kabuto[7][j]=1;
kabuto[8][j]=1;
for(i=0;i<10;i++){
for(j=0;j<10;j++){
tuno[i][9-j]=tuno[i][j];
}
}
for(i=0;i<10;i++){
for(j=0;j<10;j++){
kabuto[i+10][j]=kabuto[i][j];
kabuto[i][j+10]=kabuto[i][j];
kabuto[i+10][j+10]=kabuto[i][j];
tuno[i+10][j]=tuno[i][j];
tuno[i][j+10]=tuno[i][j];
tuno[i+10][j+10]=tuno[i][j];
}
}
for(i=0;i<10;i++){
for(j=0;j<9;j++){
fprintf(f1,"%d ",cell[i][j]);
}
fprintf(f1,"%d\n",cell[i][9]);
}
/* initialize over */
for(i=0;i<10;i++){
for(j=0;j<10;j++){
oldcell[i][j]=cell[i][j];
oldcell[i+10][j]=cell[i][j];
oldcell[i][j+10]=cell[i][j];
oldcell[i+10][j+10]=cell[i][j];
}
}
while(i<99999){
k=rand()%10;
l=rand()%10;
J1=kabuto[k][l]*kabuto[k+9][l]+tuno[k][l]*tuno[k+9][l];
J2=kabuto[k][l]*kabuto[k][l+9]+tuno[k][l]*tuno[k][l+9];
J3=kabuto[k][l]*kabuto[k][l+1]+tuno[k][l]*tuno[k][l+1];
J4=kabuto[k][l]*kabuto[k+1][l]+tuno[k][l]*tuno[k+1][l];
H1=J1*cell[k][l]*oldcell[k+9][l]+J2*cell[k][l]*oldcell[k][l+9]+J3*cell[k][l]*oldcell[k][l+1]+J4*cell[k][l]*oldcell[k+1][l];
H2=J1*(-cell[k][l])*oldcell[k+9][l]+J2*(-cell[k][l])*oldcell[k][l+9]+J3*(-cell[k][l])*oldcell[k][l+1]+J4*(-cell[k][l])*oldcell[k+1][l];
// printf("%d,%d\n",H1,H2);
if(H2>H1)
cell[k][l]=-cell[k][l];
// printf("%d,%d,%d\n",i,k,l) ;
i++;
}
/*
for(k=0;k<10;k++){
for(l=0;l<10;l++){
J1=kabuto[k][l]*kabuto[k+9][l]+tuno[k][l]*tuno[k+9][l];
J2=kabuto[k][l]*kabuto[k][l+9]+tuno[k][l]*tuno[k][l+9];
J3=kabuto[k][l]*kabuto[k][l+1]+tuno[k][l]*tuno[k][l+1];
J4=kabuto[k][l]*kabuto[k+1][l]+tuno[k][l]*tuno[k+1][l];
H1=J1*cell[k][l]*oldcell[k+9][l]+J2*cell[k][l]*oldcell[k][l+9]+J3*cell[k][l]*oldcell[k][l+1]+J4*cell[k][l]*oldcell[k+1][l];
H2=J1*(-cell[k][l])*oldcell[k+9][l]+J2*(-cell[k][l])*oldcell[k][l+9]+J3*(-cell[k][l])*oldcell[k][l+1]+J4*(-cell[k][l])*oldcell[k+1][l];
printf("%d,%d\n",H1,H2);
if(H2>H1)
cell[k][l]=-cell[k][l];
}
}
*/
for(i=0;i<10;i++){
for(j=0;j<9;j++){
fprintf(f2,"%d ",cell[i][j]);
}
fprintf(f2,"%d\n",cell[i][9]);
}
/*
for(i=0;i<10;i++){
for(j=0;j<9;j++){
printf("%d ",kabuto[i][j]);
}
printf("%d\n",kabuto[i][9]);
}
for(i=0;i<10;i++){
for(j=0;j<9;j++){
printf("%d ",tuno[i][j]);
}
printf("%d\n",tuno[i][9]);
}
*/
}
}}
#comment_num2()