//連立方程式の解法 //ピボット選択法によるガウス・ジョルダン法 #define JISU 6 //6次多項式まで(7連立方程式まで) class gjp{ protected: double a[JISU+1][JISU+2]; double zet(double d); void cal_det(int l); }; double gjp::zet(double d) //絶対値(zettaichi) { return (d<0)?d*(-1):d; } void gjp::cal_det(int l) //l は次数 { double p,d,max,temp; int i,j,k,s; for(k=0;k<=l;k++){ max=0; s=k; for(j=k;j<=l;j++) if(zet(a[j][k])>max){ max=zet(a[j][k]); s=j; } if(max==0) //error return; for(j=0;j<=l+1;j++){ temp=a[k][j]; a[k][j]=a[s][j]; a[s][j]=temp; } p=a[k][k]; for(j=k;j<=l+1;j++) a[k][j]/=p; for(i=0;i<=l;i++) if(i!=k){ d=a[i][k]; for(j=k;j<=l+1;j++) a[i][j]-=d*a[k][j]; } } }