
算法偽代碼如下,有錯誤的話請給我指出來:
//假設所有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;
}
}






