为了账号安全,请及时绑定邮箱和手机立即绑定

函数调用的结果不是使用 scipy.fsolve 的正确浮点数组

函数调用的结果不是使用 scipy.fsolve 的正确浮点数组

子衿沉夜 2022-06-22 20:52:50
我正在尝试使用 scipy 的 fsolve 函数来解决这个简单的联立方程:x + 2 = 10 & x^2 = 64。我期待 8 作为解决方案。但是,我收到一条错误消息: “minpack.error:函数调用的结果不是正确的浮点数组。”我对 python 科学库很陌生。有人可以解释如何解决这个错误吗?谢谢!from scipy.optimize import fsolvedef equations(p):    x = p    return (x-8, x**2 - 64)x =  fsolve(equations, 1)print(x)
查看完整描述

1 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

当您查看在 scipy 模块中如何定义 fsolve 时,我们会看到:


def fsolve(func, x0, args=(), fprime=None, full_output=0,

           col_deriv=0, xtol=1.49012e-8, maxfev=0, band=None,

           epsfcn=None, factor=100, diag=None):

    """

    Find the roots of a function.


    Return the roots of the (non-linear) equations defined by

    ``func(x) = 0`` given a starting estimate.


    Parameters

    ----------

    func : callable ``f(x, *args)``

        A function that takes at least one (possibly vector) argument,

        and returns a value of the same length.

    '''

因此,您的 p 输入值应该包含与您的函数返回的元素一样多的元素。尝试例如:


from scipy.optimize import fsolve

import numpy as np



def equations(p):

    x1 = p[0]

    x2 = p[1]

    return x1-8, x2**2 - 64


x = fsolve(equations, np.array([1, 2]))


print(x)

给出 8, 8 作为答案。


查看完整回答
反对 回复 2022-06-22
  • 1 回答
  • 0 关注
  • 191 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信