6
6
# from hsl.solvers.pyma27 import PyMa27Solver as LBLContext
7
7
from hsl .solvers .pyma57 import PyMa57Solver as LBLContext
8
8
from pysparse import spmatrix
9
- from nlpy . tools import norms
10
- from nlpy . tools . timing import cputime
11
- import numpy
9
+ from numpy . linalg import norm
10
+ import timeit
11
+ import numpy as np
12
12
13
13
14
14
def Hilbert (n ):
@@ -43,7 +43,7 @@ def Ma27SpecSheet():
43
43
A [4 , 1 ] = 6
44
44
A [4 , 4 ] = 1
45
45
46
- rhs = numpy .ones (5 , 'd' )
46
+ rhs = np .ones (5 , 'd' )
47
47
rhs [0 ] = 8
48
48
rhs [1 ] = 45
49
49
rhs [2 ] = 31
@@ -56,22 +56,22 @@ def Ma27SpecSheet():
56
56
def solve_system (A , rhs , itref_threshold = 1.0e-6 , nitrefmax = 5 , ** kwargs ):
57
57
58
58
# Obtain Sils context object
59
- t = cputime ()
59
+ t = timeit . default_timer ()
60
60
LBL = LBLContext (A , ** kwargs )
61
- t_analyze = cputime () - t
61
+ t_analyze = timeit . default_timer () - t
62
62
63
63
# Solve system and compute residual
64
- t = cputime ()
64
+ t = timeit . default_timer ()
65
65
LBL .solve (rhs )
66
- t_solve = cputime () - t_analyze
66
+ t_solve = timeit . default_timer () - t
67
67
68
68
# Compute residual norm
69
- nrhsp1 = norms . norm_infty (rhs ) + 1
70
- nr = norms . norm2 (LBL .residual ) / nrhsp1
69
+ nrhsp1 = norm (rhs , ord = np . infty ) + 1
70
+ nr = norm (LBL .residual ) / nrhsp1
71
71
72
72
# If residual not small, perform iterative refinement
73
73
LBL .refine (rhs , tol = itref_threshold , nitref = nitrefmax )
74
- nr1 = norms . norm_infty (LBL .residual ) / nrhsp1
74
+ nr1 = norm (LBL .residual , ord = np . infty ) / nrhsp1
75
75
76
76
return (LBL .x , LBL .residual , nr , nr1 , t_analyze , t_solve , LBL .neig )
77
77
@@ -93,33 +93,35 @@ def solve_system(A, rhs, itref_threshold=1.0e-6, nitrefmax=5, **kwargs):
93
93
# Solve example from the spec sheet
94
94
(A , rhs ) = Ma27SpecSheet ()
95
95
(x , r , nr , nr1 , t_an , t_sl , neig ) = solve_system (A , rhs )
96
- exact = numpy .arange (5 , dtype = 'd' ) + 1
97
- relres = norms .norm2 (x - exact ) / norms .norm2 (exact )
98
- sys .stdout .write (res_fmt , 'Spec sheet' , relres , nr , nr1 , t_an , t_sl , neig )
96
+ exact = np .arange (5 , dtype = 'd' ) + 1
97
+ relres = norm (x - exact ) / norm (exact )
98
+ sys .stdout .write (res_fmt %
99
+ ('Spec sheet' , relres , nr , nr1 , t_an , t_sl , neig ))
99
100
100
101
# Solve example with Hilbert matrix
101
102
n = 10
102
103
H = Hilbert (n )
103
- e = numpy .ones (n , 'd' )
104
- rhs = numpy .empty (n , 'd' )
104
+ e = np .ones (n , 'd' )
105
+ rhs = np .empty (n , 'd' )
105
106
H .matvec (e , rhs )
106
107
(x , r , nr , nr1 , t_an , t_sl , neig ) = solve_system (H , rhs )
107
- relres = norms . norm2 (x - e ) / norms . norm2 (e )
108
- sys .stdout .write (res_fmt , 'Hilbert' , relres , nr , nr1 , t_an , t_sl , neig )
108
+ relres = norm (x - e ) / norm (e )
109
+ sys .stdout .write (res_fmt % ( 'Hilbert' , relres , nr , nr1 , t_an , t_sl , neig ) )
109
110
110
111
# Process matrices given on the command line
111
112
for matrix in matrices :
112
113
M = spmatrix .ll_mat_from_mtx (matrix )
113
114
(m , n ) = M .shape
114
115
if m != n :
115
116
break
116
- e = numpy .ones (n , 'd' )
117
- rhs = numpy .empty (n , 'd' )
117
+ e = np .ones (n , 'd' )
118
+ rhs = np .empty (n , 'd' )
118
119
M .matvec (e , rhs )
119
120
(x , r , nr , nr1 , t_an , t_sl , neig ) = solve_system (M , rhs )
120
- relres = norms . norm2 (x - e ) / norms . norm2 (e )
121
+ relres = norm (x - e ) / norm (e )
121
122
probname = os .path .basename (matrix )
122
123
if probname [- 4 :] == '.mtx' :
123
124
probname = probname [:- 4 ]
124
- sys .stdout .write (res_fmt , probname , relres , nr , nr1 , t_an , t_sl , neig )
125
+ sys .stdout .write (res_fmt %
126
+ (probname , relres , nr , nr1 , t_an , t_sl , neig ))
125
127
sys .stderr .write ('-' * lhead + '\n ' )
0 commit comments