|
|
@@ -39,9 +39,11 @@ function ssor(A::SparseMatrixCSC,b::Vector;tol::Real=1e-2,maxIter::Int=1,omega::
|
|
|
#第一次迭代
|
|
|
for i = 1:n
|
|
|
value = b[i]
|
|
|
- for gidx = A.colptr[1] : A.colptr[n]
|
|
|
- if A.rowval[gidx] == i
|
|
|
- value -= A.nzval[gidx] * x[gidxi]
|
|
|
+ for j = 1:n
|
|
|
+ for gidx = A.colptr[j] : A.colptr[j+1]-1
|
|
|
+ if A.rowval[gidx] == i
|
|
|
+ value -= A.nzval[gidx] * x[j]
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
x[i] = x[i] + value*OmInvD[i]
|
|
|
@@ -50,9 +52,11 @@ function ssor(A::SparseMatrixCSC,b::Vector;tol::Real=1e-2,maxIter::Int=1,omega::
|
|
|
#第二次迭代
|
|
|
for i = n:-1:1
|
|
|
value = b[i]
|
|
|
- for gidx = A.colptr[1] : A.colptr[n]
|
|
|
- if A.rowval[gidx] == i
|
|
|
- value -= A.nzval[gidx] * x[i]
|
|
|
+ for j = 1:n
|
|
|
+ for gidx = A.colptr[j] : A.colptr[j+1]-1
|
|
|
+ if A.rowval[gidx] == i
|
|
|
+ value -= A.nzval[gidx] * x[j]
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
x[i] = x[i] + value*OmInvD[i]
|