求解隐式方程 Python

Solve an implicit equation Python

我想写一个代码来求解下面等式中相对误差为 %1 的“y”:

在等式中,我们有“b=2, x=1, n=0.015, S_0=0.002, Q=21”的值,应该计算 y。

我写这段代码:

b=float(input('b='))
x=float(input('x= '))
n=float(input('n= '))
s=float(input('S_0= '))
Q=float(input('Q= '))
Q=(1/n)*((y*(b+x*y))**(5/3))/((b+2*y*(1+x**2)**(1/2))**(2/3)))*s
print(y)

没用。

我不熟悉如何求解python中的隐式方程。如果它不是隐含的,我可以写出关于 y 的等式,然后写输入。但是在这里我不知道该怎么办。

您可以通过如下定义 f(y) 来重新表述您的方程式,然后使用 fsolve

找到它的根
from scipy.optimize import fsolve
def f(y,b=2,x=1,n=0.015,S_0=0.002,Q=21):
    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))