微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当变量之一是数组时,使用 scipy 的 fsolve 时出错

如何解决当变量之一是数组时,使用 scipy 的 fsolve 时出错

我正在尝试对一组方程使用 f 求解:

  1. xa + xb = x
  2. xa/xb = (CA/CB)e^-(F/RT)*(E0_A-E0_B)。我打算解决 xa 和 xb 但 x 本身是一个数组,如下所示。我曾尝试这样做,但不断收到错误消息。我不知道我哪里出错了。
from scipy.optimize import fsolve
import numpy as np
x = np.array([0.01394346,0.01727623,0.02139363,0.02647018,0.03271463,0.04037362,0.04974189,0.06113669,0.07489298,0.0914198,0.11119803,0.13467519,0.1622032,0.19409497,0.23056969,0.27160588,0.3169306,0.36594778,0.41776317,0.471372,0.5256699,0.5794641,0.63155216,0.68075466,0.72615373,0.767264,0.80389225,0.8359975,0.8637226,0.8873593,0.9072883,0.92398256,0.93792963,0.9494987,0.95898896,0.96673596,0.9730703,0.9782413,0.982436,0.9858274,0.9885736,0.99079704,0.9925912,0.99403596,0.99519914,0.99613607,0.9968898,0.99749595,0.9979841,0.99837816])
def eqs(p):
    R = 8.314
    F = 96485
    T = 298.15
    E0_A = 0.516
    E0_B = 0.393
    CA = 0.37
    CB = 0.63
    xa,xb = p
    return ((xa+xb)- x,(xa/xb)-(0.37/0.63)*np.exp(-(96485/(8.314*298.15))*(0.393-0.516)))

eqs((1,1))
fsolve(eqs,x0 = (1,1))

ValueError: 使用序列设置数组元素。 类型错误:只有大小为 1 的数组可以转换为 Python 标量

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。