【发布时间】:2021-12-06 14:48:37
【问题描述】:
我正在尝试解决以下等式:
如果给出了 A_e/A* 值的列表,并且 gamma=1.2,我应该如何求解这个方程,以便返回对应于 A_e/A* 值列表的 M_e 列表?
我考虑过使用scipy.optimize.newton,但这似乎不是正确的方法
def expr(x):
result = np.arange(1,1.25,step=0.004)-((1/x)*((2/(1.2+1))*(1+((1.2-1)/2)*x**2))**((1.2+1)/(2*1.2-1)))
return result.any()
scipy.optimize.newton(expr,1.1)
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_4660/3619719442.py in <module>
----> 1 scipy.optimize.newton(expr,1.1,x1=1.2)
D:\Softwares\Anaconda\lib\site-packages\scipy\optimize\zeros.py in newton(func, x0, fprime, args, tol, maxiter, fprime2, x1, rtol, full_output, disp)
338 " Failed to converge after %d iterations, value is %s."
339 % (itr + 1, p1))
--> 340 raise RuntimeError(msg)
341 warnings.warn(msg, RuntimeWarning)
342 p = (p1 + p0) / 2.0
RuntimeError: Tolerance of 0.09999999999999987 reached. Failed to converge after 1 iterations, value is 1.2.
我用x表示M_e,我用值列表替换了Ae/A*--np.arange(1,1.25,step=0.004) 但是,我猜牛顿的方法只能返回1个标量值,但是我用a定义了函数Ae/A* 值的全面列表。我应该如何解决这个问题?
【问题讨论】:
标签: scipy