steihaug(func=None,
        dfunc=None,
        d2func=None,
        args=(),
        x0=None,
        func_tol=1e-25,
        grad_tol=None,
        maxiter=1000000.0,
        epsilon=1e-08,
        delta_max=100000.0,
        delta0=1.0,
        eta=0.2,
        full_output=0,
        print_flag=0,
        print_prefix='')
  
   | source code 
     | 
    
  
  Steihaug conjugate-gradient trust region algorithm. 
  Page 75 from 'Numerical Optimization' by Jorge Nocedal and Stephen J. 
  Wright, 1999, 2nd ed.  The CG-Steihaug algorithm is: 
  
    - 
      epsilon > 0
    
 
    - 
      p0 = 0, r0 = g, d0 = -r0
    
 
    - 
      if ||r0|| < epsilon:
      
    
 
    - 
      while 1:
      
        - 
          if djT.B.dj <= 0:
          
            - 
              Find tau such that p = pj + tau.dj minimises m(p) in (4.9) 
              and satisfies ||p|| = delta
            
 
            - 
              return p
            
 
           
         
        - 
          aj = rjT.rj / djT.B.dj
        
 
        - 
          pj+1 = pj + aj.dj
        
 
        - 
          if ||pj+1|| >= delta:
          
            - 
              Find tau such that p = pj + tau.dj satisfies ||p|| = delta
            
 
            - 
              return p
            
 
           
         
        - 
          rj+1 = rj + aj.B.dj
        
 
        - 
          if ||rj+1|| < epsilon.||r0||:
          
        
 
        - 
          bj+1 = rj+1T.rj+1 / rjT.rj
        
 
        - 
          dj+1 = rj+1 + bj+1.dj
        
 
       
     
   
  
   
 |