[Scipy-svn] r6579 - in trunk/scipy/optimize: . tests
scipy-svn at scipy.org
scipy-svn at scipy.org
Tue Jun 29 19:03:31 EDT 2010
Author: warren.weckesser
Date: 2010-06-29 18:03:30 -0500 (Tue, 29 Jun 2010)
New Revision: 6579
Modified:
trunk/scipy/optimize/tests/test_regression.py
trunk/scipy/optimize/zeros.py
Log:
BUG: Ticket #1214: optimize.newton could return an incorrect value if the function coefficients and initial guess were integers.
Modified: trunk/scipy/optimize/tests/test_regression.py
===================================================================
--- trunk/scipy/optimize/tests/test_regression.py 2010-06-29 16:06:45 UTC (rev 6578)
+++ trunk/scipy/optimize/tests/test_regression.py 2010-06-29 23:03:30 UTC (rev 6579)
@@ -1,14 +1,24 @@
"""Regression tests for optimize.
"""
-from numpy.testing import *
-import numpy as np
+from numpy.testing import TestCase, run_module_suite, assert_almost_equal
+import scipy.optimize
class TestRegression(TestCase):
+
def test_newton_x0_is_0(self):
"""Ticket #1074"""
- import scipy.optimize
+
tgt = 1
res = scipy.optimize.newton(lambda x: x - 1, 0)
assert_almost_equal(res, tgt)
+
+ def test_newton_integers(self):
+ """Ticket #1214"""
+ root = scipy.optimize.newton(lambda x: x**2 - 1, x0=2,
+ fprime=lambda x: 2*x)
+ assert_almost_equal(root, 1.0)
+
+if __name__ == "__main__":
+ run_module_suite()
\ No newline at end of file
Modified: trunk/scipy/optimize/zeros.py
===================================================================
--- trunk/scipy/optimize/zeros.py 2010-06-29 16:06:45 UTC (rev 6578)
+++ trunk/scipy/optimize/zeros.py 2010-06-29 23:03:30 UTC (rev 6579)
@@ -95,7 +95,9 @@
"""
if fprime is not None:
# Newton-Rapheson method
- p0 = x0
+ # Multiply by 1.0 to convert to floating point. We don't use float(x0)
+ # so it still works if x0 is complex.
+ p0 = 1.0 * x0
for iter in range(maxiter):
myargs = (p0,) + args
fder = fprime(*myargs)
More information about the Scipy-svn
mailing list