算法偽代碼如下,有錯誤的話請給我指出來:
//假設所有a[i][i]都不是0,為0的話還不知道怎么辦 輸入系數於數組a[][]; 輸入常數於數組b[]; //計算新系數於數組c[][] for(int i=0; i<n; i++) { c[i][n-1] = b[i]/a[i][i]; } //不是n-1行,經過商議不處理,只是列數減1 for(int i=0; i<n; i++) { for(int j=0; j<n-1; j++) { if(i<j) c[i][j] = -a[i][j+1]/a[i][i]; else if(i>j) c[i][j] = -a[i][j]/a[i][i]; else continue; } } //迭代100次,自己加上精度判斷吧 //從向量形式可以看出,初試解為全0的話第一次解為c[i][n-1],如果為了省着一次時間的話可以先把 //這個復制給解數組 root[],再仔細看看會發現每次迭代的話都需要加上c[i][n-1] while(T--) { //k行 for(int j=0; j<n; j++) { //n-1列,最后的c[i][n-1]到最后加上 int temp = 0; for(int k=0; k<n-1; k++) { if(j>k) temp += c[j][k]*root[k]; else if(j<k) temp += c[j][k]*root[k+1]; else continue; } //再仔細看看會發現每次迭代的話都需要加上c[i][n-1] root[j] += temp; } }