gpt4 book ai didi

python - 求解求和中的一个变量

转载 作者:行者123 更新时间:2023-11-30 22:38:11 26 4
gpt4 key购买 nike

嗨,我正在尝试使用 sympy 来求解以下方程中的一个变量 (x):

enter image description here

其中 s_calc 是:

enter image description here

因此 mkt 的给出为 3.60 SP,如下。

这是在 Excel 中通过猜测进行手动计算的结果,其中 x 近似为 3.84(这就是我试图确定的值):

enter image description here

8.5 的 s_calc => 3.84/((8.5-1)+3.84) = 0.34

s_calc = (x/((SP-1)+x))


from sympy import *

SPs = [8.5,10,4.6,8,7,19,13,5,5.5,21,31,61]
mkt = 3.6

x = Symbol('x', real=True)


eqn = Eq((sum([(x/((SP-1)+x)) for SP in SPs])),mkt)

print solve(eqn)

结果是:

[-56.0760097663833,
-28.2321104629407,
-19.2596055912120,
-16.2599057021677,
-11.1953370291770,
-8.53265746170317,
-7.27171869196792,
-6.44292213715154,
-5.20607622713613,
-4.24324047973505,
-3.74708311709209,
0.0]

它不仅给了我一个与我计算出的 x 的值 3.84 不同的值列表。此外,求解的计算量相当大,需要 15 秒才能产生这些结果。

我希望有人能够引导我走向正确的方向。

最佳答案

SymPy 中的函数 solve( ) 目前正在重写为 solveset( ),将来,solve 可能会被弃用。

无论如何,使用solveset( ):

In [13]: solveset(eqn, x)
Out[13]:
{-54.9173331680142, -27.8044066980778, -19.1811507147424, -15.7703025652324,
-11.0087893729661, -8.45970674653321, -7.25698321320126, -6.38855281836353,
-5.07892647766187, -4.21937087225829, -3.73292307178124, 3.83749333787992}

值 3.83749333787992 是解决方案之一(它看起来有点像你的 3.84)。

否则,由于您的方程只有一个符号变量,其余都是数值变量,您可以尝试对表达式进行羔羊化并使用 scipy 中的工具:

In [25]: eqfunc = lambdify(x, eqn.lhs - eqn.rhs)

In [26]: import scipy.optimize

In [28]: scipy.optimize.broyden1(eqfunc, [3.84])
Out[28]: array([ 3.83749334])

关于python - 求解求和中的一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43675716/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com