【问题标题】:Error as I try to solve a non-linear equation我尝试求解非线性方程时出错
【发布时间】:2019-05-21 04:54:04
【问题描述】:

我正在尝试求解由下式给出的方程:

我将上面的等式转换成python代码如下:

from scipy.optimize import fsolve
import numpy as np

u = lambda b : ((1 - b)(7.864 - 5.336*b + 25.864*np.power(b,2) - 11.935*np.power(b,3) - 0.336*np.power(b,4))) - 6.164

fsolve(u,np.linspace(0,1,10))

但我收到一条错误消息:

这可能是什么原因?我做错了什么?

【问题讨论】:

    标签: python numpy scipy


    【解决方案1】:

    您在 (1 - b) 和 (7.864 ...) 之间缺少一个 *:

    In [11]: from scipy.optimize import fsolve
        ...: import numpy as np
        ...:
        ...: u = lambda b : ((1 - b) * (7.864 - 5.336*b + 25.864*np.power(b,2) - 11.935*np.power(b,3) - 0.336*np.power(b,4))) - 6.164
        ...:                       # ^ MISSING HERE
        ...: fsolve(u,np.linspace(0,1,10))
        ...:
    Out[11]:
    array([0.20503009, 0.20503009, 0.20503009, 0.20503009, 0.20503009,
           0.20503009, 0.20503009, 0.20503009, 0.20503009, 0.20503009])
    

    因此出现错误TypeError: 'numpy.ndarray' object is not callable,这与尝试执行的操作相同:

    In [12]: a
    Out[12]: array(42)
    
    In [13]: a()
    TypeError: 'numpy.ndarray' object is not callable
    
    In [14]: a(1)
    TypeError: 'numpy.ndarray' object is not callable
    

    【讨论】:

      猜你喜欢
      • 2020-09-23
      • 2019-10-02
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多