some new features
This commit is contained in:
@ -0,0 +1,63 @@
|
||||
'''What's the origin of this file? It is not ours.
|
||||
Does not run because of missing mtx files, now included
|
||||
|
||||
changes: JP corrections to imports so it runs, comment out print
|
||||
'''
|
||||
import numpy as np
|
||||
from numpy import dot, outer, random
|
||||
from scipy import io, linalg, optimize
|
||||
from scipy.sparse import eye as speye
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
def R(v):
|
||||
rq = dot(v.T,A*v)/dot(v.T,B*v)
|
||||
res = (A*v-rq*B*v)/linalg.norm(B*v)
|
||||
data.append(linalg.norm(res))
|
||||
return rq
|
||||
|
||||
def Rp(v):
|
||||
""" Gradient """
|
||||
result = 2*(A*v-R(v)*B*v)/dot(v.T,B*v)
|
||||
#print "Rp: ", result
|
||||
return result
|
||||
|
||||
def Rpp(v):
|
||||
""" Hessian """
|
||||
result = 2*(A-R(v)*B-outer(B*v,Rp(v))-outer(Rp(v),B*v))/dot(v.T,B*v)
|
||||
#print "Rpp: ", result
|
||||
return result
|
||||
|
||||
|
||||
A = io.mmread('nos4.mtx') # clustered eigenvalues
|
||||
#B = io.mmread('bcsstm02.mtx.gz')
|
||||
#A = io.mmread('bcsstk06.mtx.gz') # clustered eigenvalues
|
||||
#B = io.mmread('bcsstm06.mtx.gz')
|
||||
n = A.shape[0]
|
||||
B = speye(n,n)
|
||||
random.seed(1)
|
||||
v_0=random.rand(n)
|
||||
|
||||
print("try fmin_bfgs")
|
||||
full_output = 1
|
||||
data=[]
|
||||
v,fopt, gopt, Hopt, func_calls, grad_calls, warnflag, allvecs = \
|
||||
optimize.fmin_bfgs(R,v_0,fprime=Rp,full_output=full_output,retall=1)
|
||||
if warnflag == 0:
|
||||
plt.semilogy(np.arange(0,len(data)),data)
|
||||
print('Rayleigh quotient BFGS',R(v))
|
||||
|
||||
|
||||
print("fmin_bfgs OK")
|
||||
|
||||
print("try fmin_ncg")
|
||||
|
||||
#
|
||||
# WARNING: the program may hangs if fmin_ncg is used
|
||||
#
|
||||
data=[]
|
||||
v,fopt, fcalls, gcalls, hcalls, warnflag, allvecs = \
|
||||
optimize.fmin_ncg(R,v_0,fprime=Rp,fhess=Rpp,full_output=full_output,retall=1)
|
||||
if warnflag==0:
|
||||
plt.figure()
|
||||
plt.semilogy(np.arange(0,len(data)),data)
|
||||
print('Rayleigh quotient NCG',R(v))
|
||||
Reference in New Issue
Block a user