Я использую алгебраический многосеточный метод для итерации матрицы (1667,1667), результат только два уровня, почему?

#-*- coding: UTF-8 -*-
import numpy as np
import scipy as sp
from pyamg.aggregation import smoothed_aggregation_solver 
from scipy.sparse.linalg import cg
from scipy.sparse import csr_matrix
data = np.loadtxt('G:\data\chipfinal2.txt', dtype=float, skiprows=0)
A = data.reshape((1667, 1667))
np.savetxt('chipfinal2_gc.txt', A, fmt="%f", delimiter=",")
print(A)
print(A.shape)
A = csr_matrix(A)
b = sp.rand(A.shape[0])                      
ml = smoothed_aggregation_solver(A)            
M = ml.aspreconditioner(cycle='V')             
x, info = cg(A, b, tol=1e-8, maxiter=10, M=M)  
cycle_complexity(self, cycle='V')
print(x)
print(ml)

и результат

     [ 3389.  3388.  3387. ...,  3548.  3546.  3545.]
 ..., 
 [ 3589.  3584.  3579. ...,  3625.  3623.  3622.]
 [ 3574.  3570.  3566. ...,  3627.  3625.  3623.]
 [ 3563.  3560.  3558. ...,  3629.  3626.  3624.]]
(1667, 1667)

multilevel_solver
Number of Levels:     2
Operator Complexity:  1.000
Grid Complexity:      1.006
Coarse Solver:        'pinv2'
  level   unknowns     nonzeros
    0          167        27889 [100.00%]
    1            1            1 [ 0.00%]

Я использую алгебраический многосеточный метод для итерации матрицы (1667,1667), результат только два уровня, почему? я ожидаю, что получу результат с уровнями мути. в чем проблема кода? спасибо большое!

0 ответов

Другие вопросы по тегам