Sha256: 0a074065714a55141106e3aa80c20ef3f7fa09c715f8cf074bb93a3bd6322cd0

Contents?: true

Size: 1.38 KB

Versions: 1

Compression:

Stored size: 1.38 KB

Contents

o:$YARD::CodeObjects::MethodObject:
@name:	norm:@docstringIC:YARD::Docstring":@objectu:YARD::StubProxyNewton#norm:
@summary0:@line_range0:
@tags[:	@all":@ref_tags[:
@linei%:@visibility:public:@files[[",ext/bigdecimal/lib/bigdecimal/newton.rbi%;[:@parameters[["fv0["	zero"0.0:
@dynamicT:
@path"Newton#norm:@source_type:	ruby:@explicitT:@signature"def norm(fv,zero=0.0):@source"�def norm(fv,zero=0.0)
    s = zero
    n = fv.size
    for i in 0...n do
      s += fv[i]*fv[i]
    end
    s
  end

  def nlsolve(f,x)
    nRetry = 0
    n = x.size

    f0 = f.values(x)
    zero = f.zero
    one  = f.one
    two  = f.two
    p5 = one/two
    d  = norm(f0,zero)
    minfact = f.ten*f.ten*f.ten
    minfact = one/minfact
    e = f.eps
    while d >= e do
      nRetry += 1
      # Not yet converged. => Compute Jacobian matrix
      dfdx = jacobian(f,f0,x)
      # Solve dfdx*dx = -f0 to estimate dx
      dx = lusolve(dfdx,f0,ludecomp(dfdx,n,zero,one),zero)
      fact = two
      xs = x.dup
      begin
        fact *= p5
        if fact < minfact then
          raise "Failed to reduce function values."
        end
        for i in 0...n do
          x[i] = xs[i] - dx[i]*fact
        end
        f0 = f.values(x)
        dn = norm(f0,zero)
      end while(dn>=d)
      d = dn
    end
    nRetry
  end
end:@namespaceu;Newton:@scope:
instance:@current_file_has_commentsF

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pry-0.6.9pre1-i386-mingw32 lib/pry/stdlib_docs18/objects/Newton/norm_i.dat