scipy无法导入integrate.solve_bvp

时间:2017-06-29 07:31:09

标签: python numpy scipy

我刚刚安装了scipy并尝试了一些示例代码。我的scipy版本为0.17.0。但我无法弄清scipy.integrate.solve_bvp的错误。我正在尝试运行以下代码from this link

# In the second example we solve a simple Sturm-Liouville problem::

# y'' + k**2 * y = 0
# y(0) = y(1) = 0

# It is known that a non-trivial solution y = A * sin(k * x) is possible for
# k = pi * n, where n is an integer. To establish the normalization constant
# A = 1 we add a boundary condition::

# y'(0) = k

# Again we rewrite our equation as a first order system and implement its
# right-hand side evaluation::

# y1' = y2
# y2' = -k**2 * y1

import numpy as np
from scipy.integrate import solve_bvp 

def fun(x, y, p):
    k = p[0]
    return np.vstack((y[1], -k**2 * y[0]))

# Note that parameters p are passed as a vector (with one element in our
# case).

# Implement the boundary conditions:

def bc(ya, yb, p):
    k = p[0]
    return np.array([ya[0], yb[0], ya[1] - k])

# Setup the initial mesh and guess for y. We aim to find the solution for
# k = 2 * pi, to achieve that we set values of y to approximately follow
# sin(2 * pi * x):

x = np.linspace(0, 1, 5)
y = np.zeros((2, x.size))
y[0, 1] = 1
y[0, 3] = -1

# Run the solver with 6 as an initial guess for k.

sol = solve_bvp(fun, bc, x, y, p=[6])

# We see that the found k is approximately correct:

sol.p[0]
# 6.28329460046

# And finally plot the solution to see the anticipated sinusoid:

x_plot = np.linspace(0, 1, 100)
y_plot = sol.sol(x_plot)[0]
plt.plot(x_plot, y_plot)
plt.xlabel("x")
plt.ylabel("y")
plt.show()

我收到此错误,

Traceback (most recent call last):
  File "my.py", line 19, in <module>
    from scipy.integrate import solve_bvp 
ImportError: cannot import name solve_bvp

为什么我收到此错误?其他scipy集成商(如scipy.integrate.odeintscipy.integrate.ode正常运行。

1 个答案:

答案 0 :(得分:1)

如果您转到documentation的功能,请在标题&#34; Notes&#34;从版本0.18.0开始,您将看到该函数是新的