Package ca.nengo.math.impl

Examples of ca.nengo.math.impl.NewtonRootFinder


      myCEForceLength = CEForceLength;
      myCEForceVelocity = CEForceVelocity;
      mySEForceLength = SEForceLength;
      myUnits = new Units[]{torque ? Units.Nm : Units.N};

      myRootFinder = new NewtonRootFinder(20, true);
    }
View Full Code Here


  /**
   * Test method for 'ca.nengo.math.impl.NewtonRootFinder.findRoot()'
   */
  public void testFindRoot() {
    float root = -1f;
    NewtonRootFinder nrf = new NewtonRootFinder(20, false);
   
    Function func = new ConstantFunction(1, 1f);
    try {
      root = nrf.findRoot(func, -5, 15, 0.0001f);
    } catch (RuntimeException e) { // failure after too many attempts
    }
   
    func = new FourierFunction(new float[]{1, 0.5f, 1}, new float[]{1, 1, 0.5f}, new float[]{0, -0.5f, 0.2f});
    root = nrf.findRoot(func, -5, 5, 0.0001f);
    TestUtil.assertClose(func.map(new float[]{root}), 0, 0.001f);
   
    func = new IdentityFunction(1, 0);
    root = nrf.findRoot(func, -5, 5, 0.0001f);
    TestUtil.assertClose(func.map(new float[]{root}), 0, 0.001f);
   
    func = new PiecewiseConstantFunction(new float[]{-1,1}, new float[]{2,0,-2});
    try {
      root = nrf.findRoot(func, -5, 15, 0.0001f);
    } catch (RuntimeException e) { // failure after too many attempts
    }
   
    func = new Polynomial(new float[]{4f, 2f, -3f, 1f});
    root = nrf.findRoot(func, -5, 15, 0.0001f);
    TestUtil.assertClose(func.map(new float[]{root}), 0, 0.001f);
   
    func = new SigmoidFunction(-1f, 0.3f, -0.5f, 1f);
    root = nrf.findRoot(func, -5, 5, 0.0001f);
    TestUtil.assertClose(func.map(new float[]{root}), 0, 0.001f);
   
    func = new SineFunction(0.5f);
    root = nrf.findRoot(func, -5, 5, 0.0001f);
    TestUtil.assertClose(func.map(new float[]{root}), 0, 0.001f);
  }
View Full Code Here

   * @param I driving current
   * @return Adapted firing rate given this current
   */
  public float getAdaptedRate(final float I) {
    if (I > 1) {
      RootFinder rf = new NewtonRootFinder(50, false);

      Function f = new AbstractFunction(1) {
        private static final long serialVersionUID = 1L;
        public float map(float[] from) {
          float r = from[0];
          return r - 1 / (myTauRef - myTauRC * (float) Math.log(1f - 1f/(I-G_N*myIncN*myTauN*r)));
        }
      };

      float max = (I-1) / (G_N * myIncN * myTauN); //will be NaN if current < 1
      return rf.findRoot(f, 0, max, 0.1f);
    } else {
      return 0;
    }
  }
View Full Code Here

TOP

Related Classes of ca.nengo.math.impl.NewtonRootFinder

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.