Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 求和中的一个变量_Python_Math_Scipy_Sympy - Fatal编程技术网

Python 求和中的一个变量

Python 求和中的一个变量,python,math,scipy,sympy,Python,Math,Scipy,Sympy,嗨,我试着用sympy来解一个变量(x),在下面的等式中: 其中s_calc为: 因此,mkt为3.60 SP,如下所示 以下是Excel中通过猜测手动计算的结果,其中x近似为3.84(这是我试图确定的): s_计算值为8.5=>3.84/((8.5-1)+3.84)=0.34 结果是: [-56.0760097663833, -28.2321104629407, -19.2596055912120, -16.2599057021677, -11.1953370291770, -

嗨,我试着用sympy来解一个变量(x),在下面的等式中:

其中s_calc为:

因此,mkt为3.60 SP,如下所示

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

s_计算值为8.5=>3.84/((8.5-1)+3.84)=0.34

结果是:

[-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不同。此外,solve的计算相当繁重,需要15秒才能得到这些结果

我希望有人能给我指引正确的方向。

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

无论如何,使用solveset():

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

否则,由于您的方程只有一个符号变量,其余为数值变量,您可以尝试对表达式进行lambdify,并使用
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])
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}
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])