/* ThresholdJacobi.c わいヤコビ法 必要な行・列だけの更新をすればより高速になる 2007.1.16 */ #include #include #include #include #include #include #define RANDOMIZE() srand(time(NULL)) #define RANDOM(x) (rand()%(x)) #include "sqmatrix.h" main() { int i,j,k,steps,eps; MATRIX a,p,r,a0; double x, pi=3.14159265359,e=1e-10; SIZE=5; // 行列サイズ steps=6; // 反復回数 RANDOMIZE(); a=randomintmat(10); // ランダムな整数行列 a=matadd(a,transmat(a)); // ランダムな整数対称行列 a0=a; printf("A :\n"); matprint(a); printf("\n"); p=unitmat(); // しきい値の設定 eps=0; for(i=0; i=eps){ // 回転角度設定 if(fabs(a.ent[i][i]-a.ent[j][j])