算了函数调用不适用于浮点数或输入和输出之间的不匹配

问题描述

我已经查看了此处提供的多个答案以及scipy文档,但无法解决我的问题。

我试图找到方程式的根,每次出现不同的错误

def func(x):

    return [sgr*(np.exp(-q*(x/p1)**(1/p2))+np.exp(-alpha*(x/p1)**(1/p2))
        -np.exp(-(q+alpha)*(x/p1)**(1/p2)))
        +sveg*(1-np.exp(-q*(x/p1)**(1/p2)))-sfor]
initialGuess=[0]
root = fsolve(func,initialGuess)

给出“函数调用结果不是正确的浮点数组”

def func(arguments):
    x1 = arguments[0]
    x2 = arguments[1] 
    x3 = arguments[0]
    x4 = arguments[1]     

    return [sgr*(np.exp(-q*(x1/p1)**(1/p2))+np.exp(-alpha*(x2/p1)**(1/p2))
        -np.exp(-(q+alpha)*(x3/p1)**(1/p2)))
        +sveg*(1-np.exp(-q*(x4/p1)**(1/p2)))-sfor]
initialGuess=np.array([0,0])
root = fsolve(func,initialGuess) 

给出“形状应为(4,),但应为(1,)”

def func(arguments):
    x1 = arguments[0]
    x2 = arguments[1] 
    x3 = arguments[0]
    x4 = arguments[1]     

    return [sgr*(np.exp(-q*(x1/p1)**(1/p2))+np.exp(-alpha*(x2/p1)**(1/p2))
        -np.exp(-(q+alpha)*(x3/p1)**(1/p2)))
        +sveg*(1-np.exp(-q*(x4/p1)**(1/p2)))-sfor]
initialGuess=np.array([0,0])
root = root(func,initialGuess,method='lm') 

给出“输入错误:N = 4不能超过M = 1”

有人可以协助吗?

所有其他变量都已定义。

解决方法

对于其他为此苦苦挣扎的人,一位同事提议将所有变量包含在要求解的方程式中,并且奏效了。

[
  {
    "id": "5fa1bad3d054121ce66727c7","seriesId": "1","buildingName": "testBuilding","value": 3,"timestamp": "2020-01-01T01:00:00+01:00"
  },{
    "id": "5fa1bad3d054121ce66727c8","value": 2,"timestamp": "2020-01-01T02:00:00+01:00"
  },{
    "id": "5fa1bad3d054121ce66727c9","value": 1,"timestamp": "2020-01-01T03:00:00+01:00"
  },{
    "id": "5fa1bad3d054121ce66727ca","value": 0,"timestamp": "2020-01-01T04:00:00+01:00"
  }
]