我想编写一段代码来求解下面等式中相对误差为 %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)
Run Code Online (Sandbox Code Playgroud)
这不起作用。
我不熟悉如何在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))
Run Code Online (Sandbox Code Playgroud)