使用 f solve 求解 python 中的隐式方程

Solving implicit equation in python using f solve

我想写一个程序来求Q,y,b,x,S0的值然后从下图中求出n的值

我用 f solve 写了这段代码:

from scipy.optimize import fsolve
def f(n,Q=float(input("Q=")),y=float(input("y=")),b=float(input("b=")),x=float(input("x=")),S_0=float(input("S0="))):
    return (1/n)*((y*(b+x*y))**(5/3))/((b+2*y*(1+x**2)**(1/2))**(2/3))*S_0-Q
a=fsolve(f,1)
print(a)
print(f(a))

但它给出了一个错误的结果作为我在这里输入的输出:

Q=21
y=7.645
b=2
x=1
S0=0.002
/usr/lib/python3/dist-packages/scipy/optimize/minpack.py:236: RuntimeWarning: The iteration is not making good progress, as measured by the 
  improvement from the last ten iterations.
  warnings.warn(msg, RuntimeWarning)
[ 1.]
[-20.68503025]

我在 Online Python 中写了这篇文章。我不知道这个错误是什么意思。输出也是错误的。对于这个特定的输入,答案应该是 n=0.015。我该如何修复此代码?

我重新排列了你的等式,这以某种方式得到了你预期的结果。我真的不太确定是什么问题,抱歉!

    return (S_0/Q)*((y*(b+x*y))**(5/3)/(b+2*y*(1+x**2)**(1/2))**(2/3))-n