• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Python zeros.newton函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中scipy.optimize.zeros.newton函数的典型用法代码示例。如果您正苦于以下问题:Python newton函数的具体用法?Python newton怎么用?Python newton使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了newton函数的16个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: test_array_newton_failures

def test_array_newton_failures():
    """Test that array newton fails as expected"""
    # p = 0.68  # [MPa]
    # dp = -0.068 * 1e6  # [Pa]
    # T = 323  # [K]
    diameter = 0.10  # [m]
    # L = 100  # [m]
    roughness = 0.00015  # [m]
    rho = 988.1  # [kg/m**3]
    mu = 5.4790e-04  # [Pa*s]
    u = 2.488  # [m/s]
    reynolds_number = rho * u * diameter / mu  # Reynolds number

    def colebrook_eqn(darcy_friction, re, dia):
        return (1 / np.sqrt(darcy_friction) +
                2 * np.log10(roughness / 3.7 / dia +
                             2.51 / re / np.sqrt(darcy_friction)))

    # only some failures
    with pytest.warns(RuntimeWarning):
        result = zeros.newton(
            colebrook_eqn, x0=[0.01, 0.2, 0.02223, 0.3], maxiter=2,
            args=[reynolds_number, diameter], full_output=True
        )
        assert not result.converged.all()
    # they all fail
    with pytest.raises(RuntimeError):
        result = zeros.newton(
            colebrook_eqn, x0=[0.01] * 2, maxiter=2,
            args=[reynolds_number, diameter], full_output=True
        )
开发者ID:ElDeveloper,项目名称:scipy,代码行数:31,代码来源:test_zeros.py


示例2: test_complex_halley

def test_complex_halley():
    """Test Halley's works with complex roots"""
    def f(x, *a):
        return a[0] * x**2 + a[1] * x + a[2]

    def f_1(x, *a):
        return 2 * a[0] * x + a[1]

    def f_2(x, *a):
        retval = 2 * a[0]
        try:
            size = len(x)
        except TypeError:
            return retval
        else:
            return [retval] * size

    z = complex(1.0, 2.0)
    coeffs = (2.0, 3.0, 4.0)
    y = zeros.newton(f, z, args=coeffs, fprime=f_1, fprime2=f_2, tol=1e-6)
    # (-0.75000000000000078+1.1989578808281789j)
    assert_allclose(f(y, *coeffs), 0, atol=1e-6)
    z = [z] * 10
    coeffs = (2.0, 3.0, 4.0)
    y = zeros.newton(f, z, args=coeffs, fprime=f_1, fprime2=f_2, tol=1e-6)
    assert_allclose(f(y, *coeffs), 0, atol=1e-6)
开发者ID:ElDeveloper,项目名称:scipy,代码行数:26,代码来源:test_zeros.py


示例3: test_zero_der_nz_dp

def test_zero_der_nz_dp():
    """Test secant method with a non-zero dp, but an infinite newton step"""
    # pick a symmetrical functions and choose a point on the side that with dx
    # makes a secant that is a flat line with zero slope, EG: f = (x - 100)**2,
    # which has a root at x = 100 and is symmetrical around the line x = 100
    # we have to pick a really big number so that it is consistently true
    # now find a point on each side so that the secant has a zero slope
    dx = np.finfo(float).eps ** 0.33
    # 100 - p0 = p1 - 100 = p0 * (1 + dx) + dx - 100
    # -> 200 = p0 * (2 + dx) + dx
    p0 = (200.0 - dx) / (2.0 + dx)
    with suppress_warnings() as sup:
        sup.filter(RuntimeWarning, "RMS of")
        x = zeros.newton(lambda y: (y - 100.0)**2, x0=[p0] * 10)
    assert_allclose(x, [100] * 10)
    # test scalar cases too
    p0 = (2.0 - 1e-4) / (2.0 + 1e-4)
    with suppress_warnings() as sup:
        sup.filter(RuntimeWarning, "Tolerance of")
        x = zeros.newton(lambda y: (y - 1.0) ** 2, x0=p0)
    assert_allclose(x, 1)
    p0 = (-2.0 + 1e-4) / (2.0 + 1e-4)
    with suppress_warnings() as sup:
        sup.filter(RuntimeWarning, "Tolerance of")
        x = zeros.newton(lambda y: (y + 1.0) ** 2, x0=p0)
    assert_allclose(x, -1)
开发者ID:ElDeveloper,项目名称:scipy,代码行数:26,代码来源:test_zeros.py


示例4: test_gh_9608_preserve_array_shape

def test_gh_9608_preserve_array_shape():
    """
    Test that shape is preserved for array inputs even if fprime or fprime2 is
    scalar
    """
    def f(x):
        return x**2

    def fp(x):
        return 2 * x

    def fpp(x):
        return 2

    x0 = np.array([-2], dtype=np.float32)
    rt, r = newton(f, x0, fprime=fp, fprime2=fpp, full_output=True)
    assert(r.converged)

    x0_array = np.array([-2, -3], dtype=np.float32)
    # This next invocation should fail
    with pytest.raises(IndexError):
        result = zeros.newton(
            f, x0_array, fprime=fp, fprime2=fpp, full_output=True
        )

    def fpp_array(x):
        return 2*np.ones(np.shape(x), dtype=np.float32)

    result = zeros.newton(
        f, x0_array, fprime=fp, fprime2=fpp_array, full_output=True
    )
    assert result.converged.all()
开发者ID:WarrenWeckesser,项目名称:scipy,代码行数:32,代码来源:test_zeros.py


示例5: test_array_newton_integers

 def test_array_newton_integers(self):
     # test secant with float
     x = zeros.newton(lambda y, z: z - y ** 2, [4.0] * 2,
                      args=([15.0, 17.0],))
     assert_allclose(x, (3.872983346207417, 4.123105625617661))
     # test integer becomes float
     x = zeros.newton(lambda y, z: z - y ** 2, [4] * 2, args=([15, 17],))
     assert_allclose(x, (3.872983346207417, 4.123105625617661))
开发者ID:ElDeveloper,项目名称:scipy,代码行数:8,代码来源:test_zeros.py


示例6: test_newton

 def test_newton(self):
     for f, f_1, f_2 in [(self.f1, self.f1_1, self.f1_2), (self.f2, self.f2_1, self.f2_2)]:
         x = zeros.newton(f, 3, tol=1e-6)
         assert_allclose(f(x), 0, atol=1e-6)
         x = zeros.newton(f, 3, fprime=f_1, tol=1e-6)
         assert_allclose(f(x), 0, atol=1e-6)
         x = zeros.newton(f, 3, fprime=f_1, fprime2=f_2, tol=1e-6)
         assert_allclose(f(x), 0, atol=1e-6)
开发者ID:nedlrichards,项目名称:scipy,代码行数:8,代码来源:test_zeros.py


示例7: test_newton

 def test_newton(self):
     for f, f_1, f_2 in [(self.f1, self.f1_1, self.f1_2),
                         (self.f2, self.f2_1, self.f2_2)]:
         x = zeros.newton(f, 3, tol=1e-6)
         assert_allclose(f(x), 0, atol=1e-6)
         x = zeros.newton(f, 3, x1=5, tol=1e-6)  # secant, x0 and x1
         assert_allclose(f(x), 0, atol=1e-6)
         x = zeros.newton(f, 3, fprime=f_1, tol=1e-6)   # newton
         assert_allclose(f(x), 0, atol=1e-6)
         x = zeros.newton(f, 3, fprime=f_1, fprime2=f_2, tol=1e-6)  # halley
         assert_allclose(f(x), 0, atol=1e-6)
开发者ID:ElDeveloper,项目名称:scipy,代码行数:11,代码来源:test_zeros.py


示例8: test_newton

    def test_newton(self):
        f1 = lambda x: x**2 - 2*x - 1
        f1_1 = lambda x: 2*x - 2
        f1_2 = lambda x: 2.0 + 0*x

        f2 = lambda x: exp(x) - cos(x)
        f2_1 = lambda x: exp(x) + sin(x)
        f2_2 = lambda x: exp(x) + cos(x)

        for f, f_1, f_2 in [(f1, f1_1, f1_2), (f2, f2_1, f2_2)]:
            x = zeros.newton(f, 3, tol=1e-6)
            assert_allclose(f(x), 0, atol=1e-6)
            x = zeros.newton(f, 3, fprime=f_1, tol=1e-6)
            assert_allclose(f(x), 0, atol=1e-6)
            x = zeros.newton(f, 3, fprime=f_1, fprime2=f_2, tol=1e-6)
            assert_allclose(f(x), 0, atol=1e-6)
开发者ID:dyao-vu,项目名称:meta-core,代码行数:16,代码来源:test_zeros.py


示例9: test_gh9551_raise_error_if_disp_true

def test_gh9551_raise_error_if_disp_true():
    """Test that if disp is true then zero derivative raises RuntimeError"""

    def f(x):
        return x*x + 1

    def f_p(x):
        return 2*x

    assert_warns(RuntimeWarning, zeros.newton, f, 1.0, f_p, disp=False)
    with pytest.raises(
        RuntimeError,
        match=r'^Derivative was zero\. Failed to converge after \d+ iterations, value is [+-]?\d*\.\d+\.$'):
        result = zeros.newton(f, 1.0, f_p)
    root = zeros.newton(f, complex(10.0, 10.0), f_p)
    assert_allclose(root, complex(0.0, 1.0))
开发者ID:WarrenWeckesser,项目名称:scipy,代码行数:16,代码来源:test_zeros.py


示例10: test_array_newton_zero_der_failures

 def test_array_newton_zero_der_failures(self):
     # test derivative zero warning
     assert_warns(RuntimeWarning, zeros.newton,
                  lambda y: y**2 - 2, [0., 0.], lambda y: 2 * y)
     # test failures and zero_der
     with pytest.warns(RuntimeWarning):
         results = zeros.newton(lambda y: y**2 - 2, [0., 0.],
                                lambda y: 2*y, full_output=True)
         assert_allclose(results.root, 0)
         assert results.zero_der.all()
         assert not results.converged.any()
开发者ID:ElDeveloper,项目名称:scipy,代码行数:11,代码来源:test_zeros.py


示例11: test_newton_full_output

    def test_newton_full_output(self):
        # Test the full_output capability, both when converging and not.
        # Use simple polynomials, to avoid hitting platform dependencies
        # (e.g. exp & trig) in number of iterations
        f1 = lambda x: x**2 - 2*x - 1  # == (x-1)**2 - 2
        f1_1 = lambda x: 2*x - 2
        f1_2 = lambda x: 2.0 + 0*x

        x0 = 3
        expected_counts = [(6, 7), (5, 10), (3, 9)]

        for derivs in range(3):
            kwargs = {'tol': 1e-6, 'full_output': True, }
            for k, v in [['fprime', f1_1], ['fprime2', f1_2]][:derivs]:
                kwargs[k] = v

            x, r = zeros.newton(f1, x0, disp=False, **kwargs)
            assert_(r.converged)
            assert_equal(x, r.root)
            assert_equal((r.iterations, r.function_calls), expected_counts[derivs])
            if derivs == 0:
                assert(r.function_calls <= r.iterations + 1)
            else:
                assert_equal(r.function_calls, (derivs + 1) * r.iterations)

            # Now repeat, allowing one fewer iteration to force convergence failure
            iters = r.iterations - 1
            x, r = zeros.newton(f1, x0, maxiter=iters, disp=False, **kwargs)
            assert_(not r.converged)
            assert_equal(x, r.root)
            assert_equal(r.iterations, iters)

            if derivs == 1:
                # Check that the correct Exception is raised and
                # validate the start of the message.
                with pytest.raises(
                        RuntimeError,
                        match='Failed to converge after %d iterations, value is .*' % (iters)):
                    x, r = zeros.newton(f1, x0, maxiter=iters, disp=True, **kwargs)
开发者ID:BranYang,项目名称:scipy,代码行数:39,代码来源:test_zeros.py


示例12: test_array_newton

    def test_array_newton(self):
        """test newton with array"""

        def f1(x, *a):
            b = a[0] + x * a[3]
            return a[1] - a[2] * (np.exp(b / a[5]) - 1.0) - b / a[4] - x

        def f1_1(x, *a):
            b = a[3] / a[5]
            return -a[2] * np.exp(a[0] / a[5] + x * b) * b - a[3] / a[4] - 1

        def f1_2(x, *a):
            b = a[3] / a[5]
            return -a[2] * np.exp(a[0] / a[5] + x * b) * b**2

        a0 = np.array([
            5.32725221, 5.48673747, 5.49539973,
            5.36387202, 4.80237316, 1.43764452,
            5.23063958, 5.46094772, 5.50512718,
            5.42046290
        ])
        a1 = (np.sin(range(10)) + 1.0) * 7.0
        args = (a0, a1, 1e-09, 0.004, 10, 0.27456)
        x0 = [7.0] * 10
        x = zeros.newton(f1, x0, f1_1, args)
        x_expected = (
            6.17264965, 11.7702805, 12.2219954,
            7.11017681, 1.18151293, 0.143707955,
            4.31928228, 10.5419107, 12.7552490,
            8.91225749
        )
        assert_allclose(x, x_expected)
        # test halley's
        x = zeros.newton(f1, x0, f1_1, args, fprime2=f1_2)
        assert_allclose(x, x_expected)
        # test secant
        x = zeros.newton(f1, x0, args=args)
        assert_allclose(x, x_expected)
开发者ID:ElDeveloper,项目名称:scipy,代码行数:38,代码来源:test_zeros.py


示例13: test_gh8904_zeroder_at_root_fails

def test_gh8904_zeroder_at_root_fails():
    """Test that Newton or Halley don't warn if zero derivative at root"""

    # a function that has a zero derivative at it's root
    def f_zeroder_root(x):
        return x**3 - x**2

    # should work with secant
    r = zeros.newton(f_zeroder_root, x0=0)
    assert_allclose(r, 0, atol=zeros._xtol, rtol=zeros._rtol)
    # test again with array
    r = zeros.newton(f_zeroder_root, x0=[0]*10)
    assert_allclose(r, 0, atol=zeros._xtol, rtol=zeros._rtol)

    # 1st derivative
    def fder(x):
        return 3 * x**2 - 2 * x

    # 2nd derivative
    def fder2(x):
        return 6*x - 2

    # should work with newton and halley
    r = zeros.newton(f_zeroder_root, x0=0, fprime=fder)
    assert_allclose(r, 0, atol=zeros._xtol, rtol=zeros._rtol)
    r = zeros.newton(f_zeroder_root, x0=0, fprime=fder,
                     fprime2=fder2)
    assert_allclose(r, 0, atol=zeros._xtol, rtol=zeros._rtol)
    # test again with array
    r = zeros.newton(f_zeroder_root, x0=[0]*10, fprime=fder)
    assert_allclose(r, 0, atol=zeros._xtol, rtol=zeros._rtol)
    r = zeros.newton(f_zeroder_root, x0=[0]*10, fprime=fder,
                     fprime2=fder2)
    assert_allclose(r, 0, atol=zeros._xtol, rtol=zeros._rtol)

    # also test that if a root is found we do not raise RuntimeWarning even if
    # the derivative is zero, EG: at x = 0.5, then fval = -0.125 and
    # fder = -0.25 so the next guess is 0.5 - (-0.125/-0.5) = 0 which is the
    # root, but if the solver continued with that guess, then it will calculate
    # a zero derivative, so it should return the root w/o RuntimeWarning
    r = zeros.newton(f_zeroder_root, x0=0.5, fprime=fder)
    assert_allclose(r, 0, atol=zeros._xtol, rtol=zeros._rtol)
    # test again with array
    r = zeros.newton(f_zeroder_root, x0=[0.5]*10, fprime=fder)
    assert_allclose(r, 0, atol=zeros._xtol, rtol=zeros._rtol)
开发者ID:ElDeveloper,项目名称:scipy,代码行数:45,代码来源:test_zeros.py


示例14: test_complex_halley

def test_complex_halley():
    """Test Halley's works with complex roots"""
    def f(x, *a):
        return a[0] * x**2 + a[1] * x + a[2]

    def f_1(x, *a):
        return 2 * a[0] * x + a[1]

    def f_2(x, *a):
        return 2 * a[0]

    z = complex(1.0, 2.0)
    coeffs = (2.0, 3.0, 4.0)
    y = zeros.newton(f, z, args=coeffs, fprime=f_1, fprime2=f_2, tol=1e-6)
    # (-0.75000000000000078+1.1989578808281789j)
    assert_allclose(f(y, *coeffs), 0, atol=1e-6)
开发者ID:charris,项目名称:scipy,代码行数:16,代码来源:test_zeros.py


示例15: test_array_secant_active_zero_der

 def test_array_secant_active_zero_der(self):
     """test secant doesn't continue to iterate zero derivatives"""
     x = zeros.newton(lambda x, *a: x*x - a[0], x0=[4.123, 5],
                      args=[np.array([17, 25])])
     assert_allclose(x, (4.123105625617661, 5.0))
开发者ID:ElDeveloper,项目名称:scipy,代码行数:5,代码来源:test_zeros.py


示例16: test_deriv_zero_warning

 def test_deriv_zero_warning(self):
     func = lambda x: x**2 - 2.0
     dfunc = lambda x: 2*x
     assert_warns(RuntimeWarning, zeros.newton, func, 0.0, dfunc, disp=False)
     with pytest.raises(RuntimeError, match='Derivative was zero'):
         result = zeros.newton(func, 0.0, dfunc)
开发者ID:WarrenWeckesser,项目名称:scipy,代码行数:6,代码来源:test_zeros.py



注:本文中的scipy.optimize.zeros.newton函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python random.normal函数代码示例发布时间:2022-05-27
下一篇:
Python nonlin.norm函数代码示例发布时间:2022-05-27
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap