问题描述
在等式中,我们具有“ 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))